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:
commit
dce59e79ab
72 changed files with 2224 additions and 1243 deletions
10
ChangeLog
10
ChangeLog
|
@ -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
|
||||
|
|
12
Makefile.in
12
Makefile.in
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
|
|
57
etc/NEWS
57
etc/NEWS
|
@ -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
|
||||
|
||||
|
|
3
etc/TODO
3
etc/TODO
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
|
||||
|
|
319
lisp/ChangeLog
319
lisp/ChangeLog
|
@ -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.
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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.")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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.
|
||||
|
|
176
lisp/ffap.el
176
lisp/ffap.el
|
@ -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)
|
||||
|
|
|
@ -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)))
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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))))))
|
||||
|
|
|
@ -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))))
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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]+"
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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)))
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
13
lisp/subr.el
13
lisp/subr.el
|
@ -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
|
||||
|
|
24
lisp/term.el
24
lisp/term.el
|
@ -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))
|
||||
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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))))))))
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)+
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
766
man/calc.texi
766
man/calc.texi
File diff suppressed because it is too large
Load diff
|
@ -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}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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},
|
||||
|
|
12
man/url.texi
12
man/url.texi
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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,
|
||||
|
|
14
src/image.c
14
src/image.c
|
@ -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. */
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
43
src/xdisp.c
43
src/xdisp.c
|
@ -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");
|
||||
|
|
25
src/xterm.c
25
src/xterm.c
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue