Merge from emacs--devo--0
Patches applied: * emacs--devo--0 (patch 781-792) - Update from CVS - Merge from gnus--rel--5.10 - Merge from emacs--rel--22 * emacs--rel--22 (patch 33-41) * gnus--rel--5.10 (patch 226-228) - Update from CVS Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-219
This commit is contained in:
commit
fb9a13e3dc
121 changed files with 9991 additions and 4462 deletions
34
AUTHORS
34
AUTHORS
|
@ -333,10 +333,10 @@ Cheng Gao: changed MORE.STUFF flymake.el tips.texi url-dired.el
|
|||
url-file.el url-handlers.el url-http.el url-nfs.el
|
||||
|
||||
Chong Yidong: changed cus-edit.el simple.el files.el custom.el
|
||||
display.texi longlines.el xdisp.c files.texi info.el keyboard.c
|
||||
display.texi xdisp.c longlines.el files.texi info.el keyboard.c
|
||||
compile.el custom.texi text.texi xterm.c frames.texi image-mode.el
|
||||
mouse.el misc.texi startup.el wid-edit.el cus-theme.el
|
||||
and 296 other files
|
||||
and 297 other files
|
||||
|
||||
Chris Hanson: changed xscheme.el scheme.el xterm.c hpux.h x11term.c
|
||||
hp9000s300.h keyboard.c process.c texinfmt.el emacsclient.c sort.el
|
||||
|
@ -652,8 +652,8 @@ Eli Tziperman: wrote rmail-spam-filter.el
|
|||
Eli Zaretskii: wrote codepage.el rxvt.el tty-colors.el
|
||||
and changed msdos.c Makefile.in makefile.w32-in files.el info.el fileio.c
|
||||
startup.el mainmake.v2 config.bat rmail.el menu-bar.el pc-win.el
|
||||
simple.el msdos.h internal.el xfaces.c emacs.c frame.c dosfns.c
|
||||
faces.el frame.el and 532 other files
|
||||
simple.el msdos.h internal.el xfaces.c emacs.c frame.c INSTALL dosfns.c
|
||||
faces.el and 532 other files
|
||||
|
||||
Emanuele Giaquinta: changed rxvt.el configure.in etags.c frame.el
|
||||
sh-script.el text.texi
|
||||
|
@ -1699,8 +1699,8 @@ Martin Neitzel: changed sc.el
|
|||
|
||||
Martin Rudalics: changed cus-edit.el wid-edit.el cus-start.el files.el
|
||||
flyspell.el font-lock.el complete.el insdel.c ispell.el macmenu.c
|
||||
syntax.c w32menu.c wdired.el whitespace.el window.el xdisp.c xmenu.c
|
||||
backups.texi buffer.c buffer.h casefiddle.c and 36 other files
|
||||
syntax.c table.el w32menu.c wdired.el whitespace.el window.el xdisp.c
|
||||
xmenu.c backups.texi buffer.c buffer.h and 36 other files
|
||||
|
||||
Martin Stjernholm: wrote cc-bytecomp.el
|
||||
and changed cc-engine.el cc-cmds.el cc-langs.el cc-defs.el cc-mode.el
|
||||
|
@ -1877,7 +1877,7 @@ Miles Bader: wrote button.el image-file.el macroexp.el minibuf-eldef.el
|
|||
and changed comint.el faces.el simple.el editfns.c xfaces.c info.el
|
||||
xdisp.c minibuf.c wid-edit.el xterm.c subr.el window.el cus-edit.el
|
||||
diff-mode.el dispextern.h quick-install-emacs xfns.c help.el lisp.h
|
||||
textprop.c bytecomp.el and 241 other files
|
||||
textprop.c bytecomp.el and 242 other files
|
||||
|
||||
Miyashita Hisashi: changed ccl.c coding.c coding.h mule-cmds.el
|
||||
mule-conf.el mule.el pop3.el
|
||||
|
@ -1942,7 +1942,7 @@ Niimi Satoshi: changed pp.el search.c
|
|||
|
||||
Niklas Morberg: changed nnweb.el gnus-art.el nnimap.el spam.el
|
||||
|
||||
Nikolaj Schumacher: changed compile.el
|
||||
Nikolaj Schumacher: changed compile.el rx.el
|
||||
|
||||
Noah Friedman: wrote eldoc.el rlogin.el rsz-mini.el type-break.el
|
||||
and changed comint.el emacs-buffer.gdb files.el mailabbrev.el sendmail.el
|
||||
|
@ -2291,7 +2291,7 @@ Rune Kleveland: changed xfns.c
|
|||
Russ Allbery: changed message.el
|
||||
|
||||
Ryan Yeske: wrote rcirc.el
|
||||
and changed ffap.el rmailsum.el simple.el testcover.el
|
||||
and changed ffap.el ispell.el rmailsum.el simple.el testcover.el
|
||||
|
||||
Ryszard Kubiak: changed ogonek.el
|
||||
|
||||
|
@ -2416,9 +2416,9 @@ Stefan Monnier: wrote bibtex.el cvs-status.el diff-mode.el log-edit.el
|
|||
log-view.el pcvs-defs.el pcvs-info.el pcvs-parse.el pcvs-util.el
|
||||
reveal.el smerge-mode.el
|
||||
and changed vc.el font-lock.el pcvs.el newcomment.el subr.el lisp.h
|
||||
keyboard.c keymap.c tex-mode.el fill.el alloc.c compile.el files.el
|
||||
regex.c simple.el easy-mmode.el vc-hooks.el info.el syntax.c xdisp.c
|
||||
sh-script.el and 518 other files
|
||||
keyboard.c fill.el keymap.c tex-mode.el alloc.c compile.el files.el
|
||||
regex.c simple.el easy-mmode.el syntax.c vc-hooks.el info.el xdisp.c
|
||||
sh-script.el and 519 other files
|
||||
|
||||
Steinar Bang: changed imap.el
|
||||
|
||||
|
@ -2533,7 +2533,7 @@ Terrence Brannon: wrote landmark.el
|
|||
|
||||
Terry Jones: wrote shadow.el
|
||||
|
||||
Tetsurou Okazaki: changed xterm.c
|
||||
Tetsurou Okazaki: changed log-edit.el xterm.c
|
||||
|
||||
Theodore Jump: changed w32-win.el w32faces.c
|
||||
|
||||
|
@ -2614,6 +2614,8 @@ Toru Tomabechi: wrote tibet-util.el tibetan.el
|
|||
|
||||
Toshiaki Nomura: changed uxpds.h
|
||||
|
||||
Trent Buck: changed rcirc.el
|
||||
|
||||
Trey Jackson: changed spam-stat.el
|
||||
|
||||
Triet Hoai Lai: changed vntelex.el viet-util.el vietnamese.el
|
||||
|
@ -2636,8 +2638,8 @@ and changed calendar.texi newsticker.texi Makefile.in
|
|||
|
||||
Ulrich Leodolter: changed w32proc.c
|
||||
|
||||
Ulrich Mueller: changed gud.el Makefile.in case-table.el fortran.el
|
||||
iso-acc.el sysdep.c
|
||||
Ulrich Mueller: changed gud.el Makefile.in XMakeAssoc.c case-table.el
|
||||
fortran.el iso-acc.el sysdep.c
|
||||
|
||||
Ulrik Vieth: wrote meta-mode.el
|
||||
and changed files.el
|
||||
|
@ -2734,7 +2736,7 @@ Yagi Tatsuya: changed gnus-art.el gnus-start.el
|
|||
|
||||
Yamamoto Mitsuharu: changed macterm.c macfns.c mac-win.el mac.c macterm.h
|
||||
macmenu.c macgui.h image.c macselect.c keyboard.c xdisp.c makefile.MPW
|
||||
config.h emacs.c Makefile.in macos.texi INSTALL darwin.h xfaces.c
|
||||
config.h emacs.c INSTALL Makefile.in macos.texi darwin.h xfaces.c
|
||||
dispnew.c alloc.c and 77 other files
|
||||
|
||||
Yann Dirson: changed imenu.el
|
||||
|
|
16
ChangeLog
16
ChangeLog
|
@ -1,3 +1,19 @@
|
|||
2007-06-08 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in: Make gtk the default toolkit.
|
||||
|
||||
2007-06-07 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in (NON_GNU_CPP): On Solaris, set using a proper check
|
||||
for a Sun C compiler.
|
||||
|
||||
* Makefile.in (install-arch-indep): Install only the DOC- file
|
||||
specific to the build, if possible, rather than DOC-*.
|
||||
|
||||
2007-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 22.1 released.
|
||||
|
||||
2007-05-25 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* mkinstalldirs: Sync to version in automake CVS.
|
||||
|
|
17
Makefile.in
17
Makefile.in
|
@ -409,10 +409,8 @@ install-arch-dep: mkdir
|
|||
## Note that we copy DOC* and then delete DOC
|
||||
## as a workaround for a bug in tar on Ultrix 4.2.
|
||||
|
||||
## FIXME
|
||||
## Should only install the DOC- file appropriate to this build, not DOC-*.
|
||||
## http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-01/msg00417.html
|
||||
## (fix available for consideration post-release).
|
||||
## We install only the relevant DOC file if possible
|
||||
## (ie DOC-${version}.buildnumber), otherwise DOC-${version}*.
|
||||
|
||||
## If people complain about the h flag in tar command, take that out.
|
||||
## That flag is also used in leim/Makefile.in
|
||||
|
@ -474,8 +472,15 @@ install-arch-indep: mkdir info
|
|||
-unset CDPATH; \
|
||||
if [ `(cd ./etc; /bin/pwd)` != `(cd $(DESTDIR)${docdir}; /bin/pwd)` ]; \
|
||||
then \
|
||||
echo "Copying etc/DOC-* to $(DESTDIR)${docdir} ..." ; \
|
||||
(cd ./etc; tar -chf - DOC*) \
|
||||
fullversion=`./src/emacs --version | sed -n '1 s/GNU Emacs *//p'`; \
|
||||
if [ -f "./etc/DOC-$${fullversion}" ]; \
|
||||
then \
|
||||
docfile="DOC-$${fullversion}"; \
|
||||
else \
|
||||
docfile="DOC-${version}*"; \
|
||||
fi; \
|
||||
echo "Copying etc/$${docfile} to $(DESTDIR)${docdir} ..." ; \
|
||||
(cd ./etc; tar -chf - $${docfile}) \
|
||||
|(cd $(DESTDIR)${docdir}; umask 022; tar -xvf - && cat > /dev/null) || exit 1; \
|
||||
(cd $(DESTDIR)$(docdir); chown $${LOGNAME:-$$USERNAME} DOC*; chmod a+r DOC*; \
|
||||
if test "`echo DOC-*`" != "DOC-*"; then rm DOC; fi); \
|
||||
|
|
|
@ -1,7 +1,15 @@
|
|||
2007-06-07 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* admin.el (set-copyright): New function.
|
||||
|
||||
2007-04-25 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* make-tarball.txt: Add note about cutting the branch.
|
||||
|
||||
2007-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 22.1 released.
|
||||
|
||||
2007-02-03 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* nt/makedist.bat: Change EOL format to DOS. Don't use
|
||||
|
|
|
@ -55,7 +55,7 @@ that should be installed on the release branch after 22.1 is released.
|
|||
** Changes to six pbm icons in etc/images.
|
||||
Sync change from trunk 2007-05-19.
|
||||
|
||||
** viper and tramp should not load cl at run time.
|
||||
** viper should not load cl at run time.
|
||||
|
||||
** yamaoka@jpl.org's patch for mail-extract-address-components problem.
|
||||
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
|
||||
;; add-release-logs Add ``Version X released'' change log entries.
|
||||
;; set-version Change Emacs version number in source tree.
|
||||
;; set-copyright Change emacs short copyright string (eg as
|
||||
;; printed by --version) in source tree.
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
@ -158,5 +160,50 @@ Root must be the root of an Emacs source tree."
|
|||
(rx (and (submatch (1+ (in "a-z"))) (0+ space) ?\, (0+ space)
|
||||
"/* development, alpha, beta, or final (release) */"))))))
|
||||
|
||||
;; Note this makes some assumptions about form of short copyright.
|
||||
(defun set-copyright (root copyright)
|
||||
"Set Emacs short copyright to COPYRIGHT in relevant files under ROOT.
|
||||
Root must be the root of an Emacs source tree."
|
||||
(interactive (list
|
||||
(read-directory-name "Emacs root directory: " nil nil t)
|
||||
(read-string
|
||||
"Short copyright string: "
|
||||
(format "Copyright (C) %s Free Software Foundation, Inc."
|
||||
(format-time-string "%Y")))))
|
||||
(unless (file-exists-p (expand-file-name "src/emacs.c" root))
|
||||
(error "%s doesn't seem to be the root of an Emacs source tree" root))
|
||||
(set-version-in-file root "lisp/version.el" copyright
|
||||
(rx (and "emacs-copyright" (0+ space)
|
||||
?\" (submatch (1+ (not (in ?\")))) ?\")))
|
||||
(set-version-in-file root "lib-src/etags.c" copyright
|
||||
(rx (and "emacs_copyright" (0+ (not (in ?\")))
|
||||
?\" (submatch (1+ (not (in ?\")))) ?\")))
|
||||
(set-version-in-file root "lib-src/rcs2log" copyright
|
||||
(rx (and "Copyright" (0+ space) ?= (0+ space)
|
||||
?\' (submatch (1+ nonl)))))
|
||||
(set-version-in-file
|
||||
root "mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings"
|
||||
copyright (rx (and "CFBundleGetInfoString" (0+ space) ?= (0+ space) ?\"
|
||||
(1+ anything)
|
||||
(submatch "Copyright" (1+ (not (in ?\")))))))
|
||||
;; This one is a nuisance, as it needs to be split over two lines.
|
||||
(string-match "\\(.*[0-9]\\{4\\} *\\)\\(.*\\)" copyright)
|
||||
(let ((csign "\\0xa9")
|
||||
(cyear (match-string 1 copyright)) ; "Copyright (C) 2007 "
|
||||
(owner (match-string 2 copyright))) ; "Free Software Foundation, Inc."
|
||||
(set-version-in-file root "mac/src/Emacs.r"
|
||||
(regexp-quote
|
||||
(replace-regexp-in-string "(C)"
|
||||
(regexp-quote csign) cyear))
|
||||
(rx (and
|
||||
(submatch "Copyright" (0+ space) (eval csign)
|
||||
(0+ space) (= 4 num)
|
||||
(0+ (not (in ?\")))) ?\")))
|
||||
(set-version-in-file root "mac/src/Emacs.r" owner
|
||||
(rx (and ?\"
|
||||
(submatch (1+ (not (in ?\"))))
|
||||
?\" (0+ space)
|
||||
"/* Long version number */")))))
|
||||
|
||||
;;; arch-tag: 4ea83636-2293-408b-884e-ad64f22a3bf5
|
||||
;; admin.el ends here.
|
||||
|
|
|
@ -131,7 +131,7 @@ mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings
|
|||
mac/src/Emacs.r # resource 'vers'
|
||||
src/emacs.c
|
||||
- remember to change the latest copyright year in the --version output.
|
||||
[Post-release, will automate this like set-version does for version.]
|
||||
`set-copyright' in admin.el will do all the above.
|
||||
|
||||
<top-level>/install-sh
|
||||
lispintro/install-sh
|
||||
|
|
|
@ -35,6 +35,72 @@
|
|||
old binaries.
|
||||
|
||||
|
||||
* Files in this directory
|
||||
|
||||
+ emacs-22.1-bin-i386.zip
|
||||
Windows binaries of Emacs-22.1, with all lisp code and documentation
|
||||
included.
|
||||
|
||||
Download this file if you want a single installation package, and
|
||||
are not interested in the C source code for Emacs. After
|
||||
unpacking, you can optionally run the file bin/addpm.exe to have
|
||||
Emacs add icons to the Start Menu.
|
||||
|
||||
If you need the C source code at a later date, it will be safe to
|
||||
unpack the source distribution on top of this installation.
|
||||
|
||||
+ emacs-22.1-barebin-i386.zip
|
||||
Windows binaries of Emacs-22.1, without lisp code or documentation.
|
||||
|
||||
Download this file if you already have the source distribution, or
|
||||
if you need to redump the emacs.exe executable.
|
||||
|
||||
Unpack this over the top of either the source distribution or the
|
||||
bin distribution above. It contains the bin subdirectory and etc/DOC
|
||||
file, plus temacs.exe and dump.bat, which are required if you want to
|
||||
redump emacs without recompiling it.
|
||||
|
||||
+ emacs-21.3-bin-i386.tar.gz
|
||||
Windows binaries of Emacs 21.3, with compiled lisp code and some
|
||||
documentation included.
|
||||
|
||||
This is provided for users who require the older version.
|
||||
|
||||
+ emacs-21.3-leim.tar.gz
|
||||
Compiled lisp input methods. This optional addition to Emacs-21.3
|
||||
is required if you want to enter languages that are not directly
|
||||
supported by your keyboard.
|
||||
|
||||
* Image support
|
||||
|
||||
Emacs 22.1 contains support for images, however for most image formats
|
||||
supporting libraries are required. This distribution has been tested
|
||||
with the libraries that are distributed with GTK for Windows, and the
|
||||
libraries found at http://gnuwin32.sourceforge.net/. The following image
|
||||
formats are supported:
|
||||
|
||||
PBM/PGM/PPM: Supported natively by Emacs. This format is used for
|
||||
the black and white versions of the toolbar icons.
|
||||
|
||||
XPM: requires a Windows port of the XPM library 3.4 or later,
|
||||
which will be named xpm4.dll, libxpm-nox4.dll or
|
||||
libxpm.dll. This format is used for the color versions of the
|
||||
toolbar icons, and other images in Emacs.
|
||||
|
||||
PNG: requires the PNG reference library 1.2 or later, which will
|
||||
be named libpng13d.dll, libpng13.dll, libpng12d.dll, libpng12.dll
|
||||
or libpng.dll. LibPNG requires zlib, which should come from the same
|
||||
source as you got libpng.
|
||||
|
||||
JPEG: requires the Independant JPEG Group's libjpeg 6b or later,
|
||||
which will be called jpeg62.dll, libjpeg.dll, jpeg-62.dll or jpeg.dll.
|
||||
|
||||
TIFF: requires libTIFF 3.0 or later, which will be called libtiff3.dll
|
||||
or libtiff.dll.
|
||||
|
||||
GIF: requires libungif or giflib 4.1 or later, which will be
|
||||
called giflib4.dll, libungif4.dll or libungif.dll.
|
||||
|
||||
* Distributions in .tar.gz and .zip format
|
||||
|
||||
Emacs is distributed primarily as source code in a large gzipped tar file
|
||||
|
@ -46,23 +112,6 @@
|
|||
but since there are no longer legal problems with .zip files, and the
|
||||
latest versions of Windows support these natively, the Windows binaries
|
||||
of Emacs are now distributed as .zip files.
|
||||
Here are the combinations (i386 in the name indicates a zipfile contains
|
||||
executables compiled for Intel-compatible x86 systems):
|
||||
|
||||
+ Primary precompiled distribution, including lisp source:
|
||||
|
||||
emacs-22.1-bin-i386.zip
|
||||
|
||||
NB: If you just want to run Emacs, get the distribution above.
|
||||
|
||||
+ Bare executables, useful if you want to get the complete source
|
||||
release, but can't compile Emacs yourself:
|
||||
|
||||
emacs-22.1-barebin-i386.zip (requires ../emacs-22.1.tar.gz)
|
||||
|
||||
+ The complete official source for Emacs:
|
||||
|
||||
../emacs-22.1.tar.gz
|
||||
|
||||
* Distributions for non-x86 platforms
|
||||
|
||||
|
@ -108,7 +157,7 @@
|
|||
You may be prompted to rename or overwrite directories when using
|
||||
djtarnt: simply type return to continue (this is harmless).
|
||||
|
||||
The precompiled binaries can be unpacked using unzip.exe from info-zip.org
|
||||
Zip files can be unpacked using unzip.exe from info-zip.org
|
||||
if you do not already have other tools to do this.
|
||||
|
||||
% unzip some.zip
|
||||
|
@ -170,7 +219,10 @@
|
|||
http://www.gnu.org/software/emacs/windows/ntemacs.html
|
||||
|
||||
This document serves as an FAQ and a source for further information
|
||||
about the Windows port and related software packages.
|
||||
about the Windows port and related software packages. Note that as
|
||||
of writing, most of the information in that FAQ was for Emacs-21.3
|
||||
and earlier versions, so some information may not be relevant to
|
||||
Emacs-22.1.
|
||||
|
||||
In addition to the FAQ, there is a mailing list for discussing issues
|
||||
related to the Windows port of Emacs. For information about the
|
||||
|
|
|
@ -36,7 +36,7 @@ rem Info-ZIP zip seems to be broken on Windows.
|
|||
rem It always writes to zip.zip and treats the zipfile argument as one
|
||||
rem of the files to go in it.
|
||||
rem zip -9 -r %2-bin-i386 emacs-%1/BUGS emacs-%1/README emacs-%1/README.W32 emacs-%1/bin emacs-%1/etc emacs-%1/info emacs-%1/lisp emacs-%1/leim -x emacs.mdp *.pdb *.opt *~ CVS
|
||||
7z a -tZIP -mx=9 -xr!emacs.mdp -xr!*.pdb -xr!*.opt -xr!*~ -xr!CVS -xr!.arch-inventory %2-bin-i386.zip emacs-%1/BUGS emacs-%1/README emacs-%1/README.W32 emacs-%1/bin emacs-%1/etc emacs-%1/info emacs-%1/lisp emacs-%1/leim
|
||||
7z a -tZIP -mx=9 -xr!emacs.mdp -xr!*.pdb -xr!*.opt -xr!*~ -xr!CVS -xr!.arch-inventory %2-bin-i386.zip emacs-%1/BUGS emacs-%1/README emacs-%1/README.W32 emacs-%1/bin emacs-%1/etc emacs-%1/info emacs-%1/lisp emacs-%1/leim emacs-%1/site-lisp
|
||||
del emacs-%1\README.W32
|
||||
if not (%4) == () goto end
|
||||
|
||||
|
|
141
configure
vendored
141
configure
vendored
|
@ -412,10 +412,10 @@ else
|
|||
fi
|
||||
|
||||
test \$exitcode = 0") || {
|
||||
echo No shell found that supports shell functions.
|
||||
echo Please tell autoconf@gnu.org about your system,
|
||||
echo including any error possibly output before this
|
||||
echo message
|
||||
echo Please tell bug-autoconf@gnu.org about your system,
|
||||
echo including any error possibly output before this message.
|
||||
echo This can help us improve future autoconf versions.
|
||||
echo Configuration will now proceed without shell functions.
|
||||
}
|
||||
|
||||
|
||||
|
@ -1901,7 +1901,7 @@ fi
|
|||
# Check whether --with-x-toolkit was given.
|
||||
if test "${with_x_toolkit+set}" = set; then
|
||||
withval=$with_x_toolkit; case "${withval}" in
|
||||
y | ye | yes ) val=athena ;;
|
||||
y | ye | yes ) val=gtk ;;
|
||||
n | no ) val=no ;;
|
||||
l | lu | luc | luci | lucid ) val=lucid ;;
|
||||
a | at | ath | athe | athen | athena ) val=athena ;;
|
||||
|
@ -1910,10 +1910,10 @@ if test "${with_x_toolkit+set}" = set; then
|
|||
* )
|
||||
{ { echo "$as_me:$LINENO: error: \`--with-x-toolkit=$withval' is invalid\;
|
||||
this option's value should be \`yes', \`no', \`lucid', \`athena', \`motif' or \`gtk'.
|
||||
Currently, \`yes', \`athena' and \`lucid' are synonyms." >&5
|
||||
Currently, \`yes' and \`gtk', and \`athena' and \`lucid' are synonyms." >&5
|
||||
echo "$as_me: error: \`--with-x-toolkit=$withval' is invalid\;
|
||||
this option's value should be \`yes', \`no', \`lucid', \`athena', \`motif' or \`gtk'.
|
||||
Currently, \`yes', \`athena' and \`lucid' are synonyms." >&2;}
|
||||
Currently, \`yes' and \`gtk', and \`athena' and \`lucid' are synonyms." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
;;
|
||||
esac
|
||||
|
@ -3032,14 +3032,8 @@ _ACEOF
|
|||
;;
|
||||
*-sunos5* | *-solaris* )
|
||||
opsys=sol2-6
|
||||
## FIXME: make this into a proper fix that checks the compiler type,
|
||||
## rather than relying on path. Or is /usr/ccs/lib/cpp a bad default now?
|
||||
if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then
|
||||
## -Xs prevents spurious whitespace.
|
||||
NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs"
|
||||
else
|
||||
NON_GNU_CPP=/usr/ccs/lib/cpp
|
||||
fi
|
||||
emacs_check_sunpro_c=yes
|
||||
NON_GNU_CPP=/usr/ccs/lib/cpp
|
||||
;;
|
||||
* ) opsys=bsd4-2 ;;
|
||||
esac
|
||||
|
@ -4195,6 +4189,72 @@ if test -n "$CPP" && test -d "$CPP"; then
|
|||
CPP=
|
||||
fi
|
||||
|
||||
## If not using gcc, and on Solaris, and no CPP specified, see if
|
||||
## using a Sun compiler, which needs -Xs to prevent whitespace.
|
||||
if test x"$GCC" != xyes && test x"$emacs_check_sunpro_c" = xyes && \
|
||||
test x"$CPP" = x; then
|
||||
{ echo "$as_me:$LINENO: checking whether we are using a Sun C compiler" >&5
|
||||
echo $ECHO_N "checking whether we are using a Sun C compiler... $ECHO_C" >&6; }
|
||||
|
||||
if test "${emacs_cv_sunpro_c+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
else
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
#ifndef __SUNPRO_C
|
||||
fail;
|
||||
#endif
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext conftest$ac_exeext
|
||||
if { (ac_try="$ac_link"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_link") 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } && {
|
||||
test -z "$ac_c_werror_flag" ||
|
||||
test ! -s conftest.err
|
||||
} && test -s conftest$ac_exeext &&
|
||||
$as_test_x conftest$ac_exeext; then
|
||||
emacs_cv_sunpro_c=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
emacs_cv_sunpro_c=no
|
||||
fi
|
||||
|
||||
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
fi
|
||||
|
||||
{ echo "$as_me:$LINENO: result: $emacs_cv_sunpro_c" >&5
|
||||
echo "${ECHO_T}$emacs_cv_sunpro_c" >&6; }
|
||||
|
||||
if test x"$emacs_cv_sunpro_c" = xyes; then
|
||||
NON_GNU_CPP="$CC -E -Xs"
|
||||
fi
|
||||
fi
|
||||
|
||||
#### Some systems specify a CPP to use unless we are using GCC.
|
||||
#### Now that we know whether we are using GCC, we can decide whether
|
||||
#### to use that one.
|
||||
|
@ -4222,7 +4282,6 @@ then
|
|||
CC="$CC $NON_GCC_TEST_OPTIONS"
|
||||
fi
|
||||
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
|
@ -9539,7 +9598,13 @@ case "${window_system}" in
|
|||
gtk ) with_gtk=yes
|
||||
USE_X_TOOLKIT=none ;;
|
||||
no ) USE_X_TOOLKIT=none ;;
|
||||
* ) USE_X_TOOLKIT=maybe ;;
|
||||
* )
|
||||
if test x"$with_gtk" = xyes; then
|
||||
USE_X_TOOLKIT=none
|
||||
else
|
||||
USE_X_TOOLKIT=maybe
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
mac | none )
|
||||
|
@ -10974,7 +11039,8 @@ HAVE_GTK=no
|
|||
if test "${with_gtk}" = "yes" && test "$USE_X_TOOLKIT" = "gtk"; then
|
||||
USE_X_TOOLKIT=none
|
||||
fi
|
||||
if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk"; then
|
||||
if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk" || \
|
||||
test "$USE_X_TOOLKIT" = "maybe"; then
|
||||
if test "$USE_X_TOOLKIT" != "none" && test "$USE_X_TOOLKIT" != "maybe"; then
|
||||
{ { echo "$as_me:$LINENO: error: Conflicting options, --with-gtk is incompatible with --with-x-toolkit=${with_x_toolkit}" >&5
|
||||
echo "$as_me: error: Conflicting options, --with-gtk is incompatible with --with-x-toolkit=${with_x_toolkit}" >&2;}
|
||||
|
@ -11035,11 +11101,7 @@ fi
|
|||
fi
|
||||
|
||||
if test "$PKG_CONFIG" = "no" ; then
|
||||
{ { echo "$as_me:$LINENO: error:
|
||||
*** The pkg-config script could not be found. Make sure it is in your path, or give the full path to pkg-config with the PKG_CONFIG environment variable or --with-pkg-config-prog. Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." >&5
|
||||
echo "$as_me: error:
|
||||
*** The pkg-config script could not be found. Make sure it is in your path, or give the full path to pkg-config with the PKG_CONFIG environment variable or --with-pkg-config-prog. Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
pkg_check_gtk=no
|
||||
else
|
||||
PKG_CONFIG_MIN_VERSION=0.9.0
|
||||
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
|
||||
|
@ -11070,7 +11132,7 @@ echo "${ECHO_T}no" >&6; }
|
|||
## If we have a custom action on failure, don't print errors, but
|
||||
## do set a variable so people can do so.
|
||||
GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$GTK_MODULES"`
|
||||
echo $GTK_PKG_ERRORS
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
@ -11082,12 +11144,20 @@ echo "${ECHO_T}no" >&6; }
|
|||
fi
|
||||
|
||||
if test $succeeded = yes; then
|
||||
:
|
||||
pkg_check_gtk=yes
|
||||
else
|
||||
{ { echo "$as_me:$LINENO: error: Library requirements ($GTK_MODULES) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5
|
||||
echo "$as_me: error: Library requirements ($GTK_MODULES) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;}
|
||||
pkg_check_gtk=no
|
||||
fi
|
||||
|
||||
if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
|
||||
{ { echo "$as_me:$LINENO: error: $GTK_PKG_ERRORS" >&5
|
||||
echo "$as_me: error: $GTK_PKG_ERRORS" >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if test x"$pkg_check_gtk" = xyes; then
|
||||
|
||||
|
||||
|
||||
|
@ -11190,18 +11260,25 @@ fi
|
|||
done
|
||||
|
||||
if test "${GTK_COMPILES}" != "yes"; then
|
||||
{ { echo "$as_me:$LINENO: error: Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?" >&5
|
||||
if test "$USE_X_TOOLKIT" != "maybe"; then
|
||||
{ { echo "$as_me:$LINENO: error: Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?" >&5
|
||||
echo "$as_me: error: Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?" >&2;}
|
||||
{ (exit 1); exit 1; }; };
|
||||
fi
|
||||
|
||||
HAVE_GTK=yes
|
||||
fi
|
||||
else
|
||||
HAVE_GTK=yes
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_GTK 1
|
||||
_ACEOF
|
||||
|
||||
USE_X_TOOLKIT=none
|
||||
USE_X_TOOLKIT=none
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
|
||||
if test "${HAVE_GTK}" = "yes"; then
|
||||
|
||||
if test "$with_toolkit_scroll_bars" != no; then
|
||||
with_toolkit_scroll_bars=yes
|
||||
|
|
74
configure.in
74
configure.in
|
@ -84,7 +84,7 @@ AC_ARG_WITH(x-toolkit,
|
|||
[ --with-x-toolkit=KIT use an X toolkit
|
||||
(KIT = yes/lucid/athena/motif/gtk/no)],
|
||||
[ case "${withval}" in
|
||||
y | ye | yes ) val=athena ;;
|
||||
y | ye | yes ) val=gtk ;;
|
||||
n | no ) val=no ;;
|
||||
l | lu | luc | luci | lucid ) val=lucid ;;
|
||||
a | at | ath | athe | athen | athena ) val=athena ;;
|
||||
|
@ -98,7 +98,7 @@ dnl AC_MSG_ERROR([the `--with-x-toolkit' option is supposed to have a value
|
|||
dnl which is `yes', `no', `lucid', `athena', `motif' or `open-look'.])
|
||||
AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid\;
|
||||
this option's value should be `yes', `no', `lucid', `athena', `motif' or `gtk'.
|
||||
Currently, `yes', `athena' and `lucid' are synonyms.])
|
||||
Currently, `yes' and `gtk', and `athena' and `lucid' are synonyms.])
|
||||
;;
|
||||
esac
|
||||
with_x_toolkit=$val
|
||||
|
@ -1041,14 +1041,8 @@ dnl see the `changequote' comment above.
|
|||
;;
|
||||
*-sunos5* | *-solaris* )
|
||||
opsys=sol2-6
|
||||
## FIXME: make this into a proper fix that checks the compiler type,
|
||||
## rather than relying on path. Or is /usr/ccs/lib/cpp a bad default now?
|
||||
if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then
|
||||
## -Xs prevents spurious whitespace.
|
||||
NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs"
|
||||
else
|
||||
NON_GNU_CPP=/usr/ccs/lib/cpp
|
||||
fi
|
||||
emacs_check_sunpro_c=yes
|
||||
NON_GNU_CPP=/usr/ccs/lib/cpp
|
||||
;;
|
||||
* ) opsys=bsd4-2 ;;
|
||||
esac
|
||||
|
@ -1284,6 +1278,24 @@ if test -n "$CPP" && test -d "$CPP"; then
|
|||
CPP=
|
||||
fi
|
||||
|
||||
## If not using gcc, and on Solaris, and no CPP specified, see if
|
||||
## using a Sun compiler, which needs -Xs to prevent whitespace.
|
||||
if test x"$GCC" != xyes && test x"$emacs_check_sunpro_c" = xyes && \
|
||||
test x"$CPP" = x; then
|
||||
AC_MSG_CHECKING([whether we are using a Sun C compiler])
|
||||
AC_CACHE_VAL(emacs_cv_sunpro_c,
|
||||
[AC_TRY_LINK([],
|
||||
[#ifndef __SUNPRO_C
|
||||
fail;
|
||||
#endif
|
||||
], emacs_cv_sunpro_c=yes, emacs_cv_sunpro_c=no)])
|
||||
AC_MSG_RESULT($emacs_cv_sunpro_c)
|
||||
|
||||
if test x"$emacs_cv_sunpro_c" = xyes; then
|
||||
NON_GNU_CPP="$CC -E -Xs"
|
||||
fi
|
||||
fi
|
||||
|
||||
#### Some systems specify a CPP to use unless we are using GCC.
|
||||
#### Now that we know whether we are using GCC, we can decide whether
|
||||
#### to use that one.
|
||||
|
@ -1877,9 +1889,15 @@ dnl Dont set this for GTK. A lot of tests below assumes Xt when
|
|||
dnl USE_X_TOOLKIT is set.
|
||||
USE_X_TOOLKIT=none ;;
|
||||
no ) USE_X_TOOLKIT=none ;;
|
||||
dnl If user did not say whether to use a toolkit,
|
||||
dnl make this decision later: use the toolkit if we have X11R5 or newer.
|
||||
* ) USE_X_TOOLKIT=maybe ;;
|
||||
dnl If user did not say whether to use a toolkit, make this decision later:
|
||||
dnl use the toolkit if we have gtk, or X11R5 or newer.
|
||||
* )
|
||||
if test x"$with_gtk" = xyes; then
|
||||
USE_X_TOOLKIT=none
|
||||
else
|
||||
USE_X_TOOLKIT=maybe
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
mac | none )
|
||||
|
@ -2107,7 +2125,8 @@ HAVE_GTK=no
|
|||
if test "${with_gtk}" = "yes" && test "$USE_X_TOOLKIT" = "gtk"; then
|
||||
USE_X_TOOLKIT=none
|
||||
fi
|
||||
if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk"; then
|
||||
if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk" || \
|
||||
test "$USE_X_TOOLKIT" = "maybe"; then
|
||||
if test "$USE_X_TOOLKIT" != "none" && test "$USE_X_TOOLKIT" != "maybe"; then
|
||||
AC_MSG_ERROR([Conflicting options, --with-gtk is incompatible with --with-x-toolkit=${with_x_toolkit}]);
|
||||
fi
|
||||
|
@ -2120,7 +2139,15 @@ if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk"; then
|
|||
PKG_CONFIG="${with_pkg_config_prog}"
|
||||
fi
|
||||
dnl Checks for libraries.
|
||||
PKG_CHECK_MODULES(GTK, $GTK_MODULES)
|
||||
PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
|
||||
if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
|
||||
AC_MSG_ERROR($GTK_PKG_ERRORS)
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if test x"$pkg_check_gtk" = xyes; then
|
||||
|
||||
AC_SUBST(GTK_CFLAGS)
|
||||
AC_SUBST(GTK_LIBS)
|
||||
C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
|
||||
|
@ -2130,12 +2157,19 @@ if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk"; then
|
|||
GTK_COMPILES=no
|
||||
AC_CHECK_FUNCS(gtk_main, GTK_COMPILES=yes)
|
||||
if test "${GTK_COMPILES}" != "yes"; then
|
||||
AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?]);
|
||||
if test "$USE_X_TOOLKIT" != "maybe"; then
|
||||
AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?]);
|
||||
fi
|
||||
else
|
||||
HAVE_GTK=yes
|
||||
AC_DEFINE(HAVE_GTK, 1, [Define to 1 if using GTK.])
|
||||
USE_X_TOOLKIT=none
|
||||
fi
|
||||
|
||||
HAVE_GTK=yes
|
||||
AC_DEFINE(HAVE_GTK, 1, [Define to 1 if using GTK.])
|
||||
USE_X_TOOLKIT=none
|
||||
|
||||
fi
|
||||
|
||||
|
||||
if test "${HAVE_GTK}" = "yes"; then
|
||||
|
||||
dnl GTK scrollbars resemble toolkit scrollbars a lot, so to avoid
|
||||
dnl a lot if #ifdef:s, say we have toolkit scrollbars.
|
||||
|
|
|
@ -1,3 +1,34 @@
|
|||
2007-06-07 Mark H. Weaver <mhw@netris.org> (tiny change)
|
||||
|
||||
* NEWS (set-mark-command-repeat-pop): Fix duplicate entry.
|
||||
|
||||
2007-06-07 Michael Olson <mwolson@gnu.org>
|
||||
|
||||
* MORE.STUFF: Update eshell URL.
|
||||
|
||||
2007-06-06 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* orgcard.tex: Version 4.77.
|
||||
|
||||
2007-06-05 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* NEWS: Add socks.el as new package.
|
||||
|
||||
2007-06-02 Thien-Thi Nguyen <ttn@gnuvola.org>
|
||||
|
||||
* MORE.STUFF (Hideshow): Delete.
|
||||
(EDB, Go in a buffer): Update urls.
|
||||
Suggested by CHENG Gao <chenggao@gmail.com>.
|
||||
|
||||
2007-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 22.1 released.
|
||||
|
||||
2007-06-02 CHENG Gao <chenggao@gmail.com>
|
||||
|
||||
* MORE.STUFF: Remove dead URL for Fortune, and update URLs for
|
||||
Hideshow, Org, EDB, and Remember.
|
||||
|
||||
2007-05-29 Robert J. Chassell <bob@rattlesnake.com>
|
||||
|
||||
* NEWS: Fix instances of `allow' without object.
|
||||
|
@ -254,7 +285,7 @@
|
|||
|
||||
2007-02-19 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
* NEWS (New language environmets): Add "Esperanto".
|
||||
* NEWS (New language environments): Add "Esperanto".
|
||||
|
||||
2007-02-16 Dale Gulledge <dsplat@rochester.rr.com>
|
||||
|
||||
|
|
|
@ -63,25 +63,25 @@ You might find bug-fixes or enhancements in these places.
|
|||
* ERC: IRC client:
|
||||
<URL:http://www.emacswiki.org/cgi-bin/wiki?EmacsIRCClient>
|
||||
|
||||
* EShell: <URL:http://www.newartisans.com/johnw/emacs.html>
|
||||
* EShell: <URL:http://johnwiegley.com/eshell.html>
|
||||
|
||||
* Etags: <URL:ftp://pot.potorti.it/pub/software/unix/etags.tar.gz>
|
||||
|
||||
* Expand: <URL:http://w3.teaser.fr/%7Eflepied/expand.el.gz>
|
||||
|
||||
* Fortune: <URL:http://www.coling.uni-freiburg.de/%7Eschauer/emacs.html>
|
||||
|
||||
* Gnus: <URL:http://www.gnus.org/>
|
||||
|
||||
* Ffap: <URL:http://www.mathcs.emory.edu/%7Emic/ftp/emacs/>
|
||||
(And some addons for it.)
|
||||
|
||||
* Hideshow: <URL:http://www.glug.org/people/ttn/software/hideshow/>
|
||||
* Hideshow: <URL:http://staff.science.uva.nl/~dominik/Tools/org/>
|
||||
|
||||
* Ispell: <URL:http://www.eng.utah.edu/~kstevens/ispell-page.html>
|
||||
|
||||
* MH-E: <URL:http://mh-e.sourceforge.net/>
|
||||
|
||||
* Org mode: <URL:http://staff.science.uva.nl/~dominik/Tools/org/>
|
||||
|
||||
* PS mode: <URL:http://odur.let.rug.nl/%7Ekleiweg/postscript/>
|
||||
|
||||
* PS-print: <URL:http://www.emacswiki.org/cgi-bin/wiki/PsPrintPackage>
|
||||
|
@ -148,7 +148,7 @@ Several are for Debian GNU/Linux in particular.
|
|||
|
||||
* ECB: Emacs Code Browser: <URL:http://ecb.sourceforge.net/>
|
||||
|
||||
* EDB: database: <URL:http://www.glug.org/people/ttn/software/edb/>
|
||||
* EDB: database: <URL:http://www.gnuvola.org/software/edb/>
|
||||
|
||||
* Ee: categorizing information manager:
|
||||
<URL:http://www.jurta.org/emacs/ee/>
|
||||
|
@ -185,7 +185,7 @@ Several are for Debian GNU/Linux in particular.
|
|||
page: eiffel-mode.el.
|
||||
|
||||
* Go in a buffer: Go Text Protocol client:
|
||||
<URL:http://www.glug.org/people/ttn/software/personal-elisp/standalone/>
|
||||
<URL:http://www.gnuvola.org/software/personal-elisp/standalone/>
|
||||
A modified version is also bundled with GNU Go:
|
||||
<URL:http://www.gnu.org/software/gnugo/gnugo.html>
|
||||
|
||||
|
@ -228,10 +228,10 @@ Several are for Debian GNU/Linux in particular.
|
|||
DTD-aware serious SGML/XML editing.
|
||||
|
||||
* Quack: <URL:http://www.neilvandyke.org/quack/>
|
||||
Quack enhances Emacs support for Scheme
|
||||
Quack enhances Emacs support for Scheme.
|
||||
|
||||
* Remember:
|
||||
<URL:http://sacha.free.net.ph/notebook/wiki/RememberEl.php>
|
||||
* Remember: <URL:https://gna.org/p/remember-el>
|
||||
A Personal Information Manager (PIM) for Emacs.
|
||||
|
||||
* Session: <URL:http://emacs-session.sourceforge.net/>
|
||||
Session Management for Emacs.
|
||||
|
|
8
etc/NEWS
8
etc/NEWS
|
@ -19,6 +19,8 @@ with a prefix argument or by typing C-u C-h C-n.
|
|||
|
||||
* Installation Changes in Emacs 23.1
|
||||
|
||||
** The default X toolkit has changed from Lucid to Gtk+.
|
||||
|
||||
|
||||
* Startup Changes in Emacs 23.1
|
||||
|
||||
|
@ -28,9 +30,15 @@ with a prefix argument or by typing C-u C-h C-n.
|
|||
|
||||
* Editing Changes in Emacs 23.1
|
||||
|
||||
** New command kill-matching-buffers kills buffers whose name matches a regexp.
|
||||
|
||||
|
||||
* New Modes and Packages in Emacs 23.1
|
||||
|
||||
** css-mode to edit Cascading Style Sheets.
|
||||
|
||||
** socks.el (which had been part of W3) is now part of Emacs.
|
||||
|
||||
|
||||
* Changes in Specialized Modes and Packages in Emacs 23.1
|
||||
|
||||
|
|
28
etc/NEWS.22
28
etc/NEWS.22
|
@ -33,6 +33,24 @@ Some specific packages that are known to cause problems are:
|
|||
** Semantic (used by CEDET, ECB, JDEE): upgrade to latest version.
|
||||
|
||||
** cua.el, cua-mode.el: remove old versions.
|
||||
|
||||
* Installation Changes in Emacs 22.2
|
||||
|
||||
* Changes in Emacs 22.2
|
||||
|
||||
** The values of `dired-recursive-deletes' and `dired-recursive-copies'
|
||||
have been changed to `top'. This means that the user is asked once,
|
||||
before deleting/copying the indicated directory recursively.
|
||||
|
||||
** In Image mode, whenever the displayed image is wider and/or higher
|
||||
than the window, the usual keys for moving the cursor cause the image
|
||||
to be scrolled horizontally or vertically instead.
|
||||
|
||||
* New Modes and Packages in Emacs 22.2
|
||||
|
||||
** The new package css-mode.el provides a major mode for editing CSS files.
|
||||
|
||||
** The new package socks.el implements the SOCKS v5 protocol.
|
||||
|
||||
|
||||
* Installation Changes in Emacs 22.1
|
||||
|
@ -280,11 +298,6 @@ too. If you want to use just plain `*' as a wildcard, type `*""'; the
|
|||
doublequotes make no difference in the shell, but they prevent
|
||||
special treatment in `dired-do-shell-command'.
|
||||
|
||||
** A prefix argument is no longer required to repeat a jump to a
|
||||
previous mark if you set `set-mark-command-repeat-pop' to t. 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.
|
||||
|
||||
** The info-search bindings on C-h C-f, C-h C-k and C-h C-i
|
||||
have been moved to C-h F, C-h K and C-h S.
|
||||
|
||||
|
@ -451,8 +464,9 @@ to one second. This feature is turned off by default.
|
|||
** Mark command changes:
|
||||
|
||||
*** A prefix argument is no longer required to repeat a jump to a
|
||||
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.
|
||||
previous mark if you set `set-mark-command-repeat-pop' to t. 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.
|
||||
|
||||
*** Marking commands extend the region when invoked multiple times.
|
||||
|
||||
|
|
17
etc/TODO
17
etc/TODO
|
@ -19,6 +19,8 @@ In new X11 versions, xaw3dg-dev does not depend on libxaw-dev, so the
|
|||
latter need not be installed. As a result, all the source files that
|
||||
look for include files in X11/Xaw should look in X11/Xaw3d if we are
|
||||
using Xaw3d.
|
||||
http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-04/msg00396.html
|
||||
http://lists.gnu.org/archive/html/emacs-devel/2006-03/msg01150.html ?
|
||||
|
||||
** Compute the list of active keymaps *after* reading the first event.
|
||||
|
||||
|
@ -32,8 +34,6 @@ a window doesn't select it.
|
|||
but if you type M-n you should get the visited file name of the
|
||||
current buffer.
|
||||
|
||||
** describe-face should show an example of text in the face.
|
||||
|
||||
** Distribute a bar cursor of width > 1 evenly between the two glyphs
|
||||
on each side of the bar (what to do at the edges?).
|
||||
|
||||
|
@ -100,9 +100,6 @@ current buffer.
|
|||
|
||||
** make back_comment use syntax-ppss or equivalent.
|
||||
|
||||
** Improve configure's treatment of NON_GNU_CPP on Solaris.
|
||||
(patch available for after Emacs 22)
|
||||
|
||||
** Consider improving src/sysdep.c's search for a fqdn.
|
||||
http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00782.html
|
||||
|
||||
|
@ -179,6 +176,7 @@ specified filters, specified timers, and specified hooks.
|
|||
|
||||
** Remove the default toggling behavior of minor modes when called from elisp
|
||||
rather than interactively. This a trivial one-liner in easy-mode.el.
|
||||
|
||||
** Create a category of errors called `user-error' for errors which are
|
||||
typically due to pilot errors and should thus be in debug-ignored-errors.
|
||||
|
||||
|
@ -381,15 +379,6 @@ typically due to pilot errors and should thus be in debug-ignored-errors.
|
|||
** Allow unknown image types to be rendered via an external program
|
||||
converting them to, say, PBM (in the same way as PostScript?).
|
||||
|
||||
** Display images with alpha channels, such as png, with the current
|
||||
background color of whatever frame it is displayed in. Currently, we
|
||||
use the default background color if specified in the png file, or, if
|
||||
that is unspecified, the background color of the frame in which the
|
||||
image was first created. Ideally, the image should display the
|
||||
background color of whichever frame it is being displayed in. The
|
||||
main complication is that this will require the loading of a new image
|
||||
object for each different background color.
|
||||
|
||||
** Allow displaying an X window from an external program in a buffer,
|
||||
e.g. to render graphics from Java applets. [gerd and/or wmperry
|
||||
thought this was feasible.]
|
||||
|
|
229
etc/orgcard.tex
229
etc/orgcard.tex
|
@ -1,27 +1,27 @@
|
|||
% Reference Card for Org Mode
|
||||
\def\orgversionnumber{4.67}
|
||||
\def\orgversionnumber{4.77}
|
||||
\def\versionyear{2007} % latest update
|
||||
\def\year{2007} % latest copyright year
|
||||
%
|
||||
|
||||
%**start of header
|
||||
\newcount\columnsperpage
|
||||
\newcount\letterpaper
|
||||
|
||||
% This file can be printed with 1, 2, or 3 columns per page (see below).
|
||||
% At the moment this card works quite nicely in 3 column format and
|
||||
% currently takes 2 full pages. It is thus suited to producing one
|
||||
% double-side page when printed.
|
||||
|
||||
% There are a couple of tweaks in the format of this card which make it work
|
||||
% slightly better on A4 paper. The changes due, I think, to Stephen Eglen,
|
||||
% are commented below. Revert the changes if you want letter sized paper.
|
||||
|
||||
% Try running something like
|
||||
% tex org-mode-ref.tex; dvips -t landscape org-mode-ref.dvi
|
||||
% to print the card
|
||||
% Specify how many you want here.
|
||||
|
||||
\columnsperpage=3
|
||||
|
||||
% Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc
|
||||
% Set letterpapaer to 0 for A4 paper, 1 for letter (US) paper. Useful
|
||||
% only when columnsperpage is 2 or 3.
|
||||
|
||||
\letterpaper=0
|
||||
|
||||
% Nothing else needs to be changed below this line.
|
||||
% Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004,
|
||||
% 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
|
||||
% This file is part of GNU Emacs.
|
||||
|
||||
% GNU Emacs is free software; you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
|
@ -35,8 +35,8 @@
|
|||
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with GNU Emacs; see the file COPYING. If not, write to
|
||||
% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
% Boston, MA 02111-1307, USA.
|
||||
% the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
% Boston, MA 02110-1301, USA.
|
||||
|
||||
% This file is intended to be processed by plain TeX (TeX82).
|
||||
%
|
||||
|
@ -54,6 +54,10 @@
|
|||
% For this you need a dvi device driver that can print sideways.
|
||||
% Which mode to use is controlled by setting \columnsperpage above.
|
||||
%
|
||||
% To compile and print this document:
|
||||
% tex refcard.tex
|
||||
% dvips -t landscape refcard.dvi
|
||||
%
|
||||
% Author:
|
||||
% Stephen Gildea
|
||||
% Internet: gildea@stop.mail-abuse.org
|
||||
|
@ -82,20 +86,20 @@
|
|||
% can be scanned without complaint.
|
||||
\def\bye{\par\vfill\supereject\end}
|
||||
|
||||
\newdimen\intercolumnskip %horizontal space between columns
|
||||
\newbox\columna %boxes to hold columns already built
|
||||
\newdimen\intercolumnskip %horizontal space between columns
|
||||
\newbox\columna %boxes to hold columns already built
|
||||
\newbox\columnb
|
||||
|
||||
\def\ncolumns{\the\columnsperpage}
|
||||
|
||||
\message{[\ncolumns\space
|
||||
\message{[\ncolumns\space
|
||||
column\if 1\ncolumns\else s\fi\space per page]}
|
||||
|
||||
\def\scaledmag#1{ scaled \magstep #1}
|
||||
|
||||
% This multi-way format was designed by Stephen Gildea October 1986.
|
||||
% Note that the 1-column format is fontfamily-independent.
|
||||
\if 1\ncolumns %one-column format uses normal size
|
||||
\if 1\ncolumns %one-column format uses normal size
|
||||
\hsize 4in
|
||||
\vsize 10in
|
||||
\voffset -.7in
|
||||
|
@ -106,14 +110,14 @@
|
|||
|
||||
\footline{\hss\folio}
|
||||
\def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
|
||||
\else %2 or 3 columns uses prereduced size
|
||||
\else %2 or 3 columns uses prereduced size
|
||||
\hsize 3.2in
|
||||
|
||||
% FIXME - Try to make things more A4 friendly
|
||||
% \vsize 7.95in
|
||||
\vsize 7.65in
|
||||
% \hoffset -.75in
|
||||
\hoffset -.25in
|
||||
\if 1\the\letterpaper
|
||||
\vsize 7.95in
|
||||
\else
|
||||
\vsize 7.65in
|
||||
\fi
|
||||
\hoffset -.75in
|
||||
\voffset -.745in
|
||||
\font\titlefont=cmbx10 \scaledmag2
|
||||
\font\headingfont=cmbx10 \scaledmag1
|
||||
|
@ -132,13 +136,14 @@
|
|||
\def\bf{\eightbf}
|
||||
\def\it{\eightit}
|
||||
\def\tt{\eighttt}
|
||||
|
||||
% FIXME - Try to make things more A4 friendly
|
||||
% \normalbaselineskip=.8\normalbaselineskip
|
||||
\normalbaselineskip=.7\normalbaselineskip
|
||||
\if 1\the\letterpaper
|
||||
\normalbaselineskip=.8\normalbaselineskip
|
||||
\else
|
||||
\normalbaselineskip=.7\normalbaselineskip
|
||||
\fi
|
||||
\normallineskip=.8\normallineskip
|
||||
\normallineskiplimit=.8\normallineskiplimit
|
||||
\normalbaselines\rm %make definitions take effect
|
||||
\normalbaselines\rm %make definitions take effect
|
||||
|
||||
\if 2\ncolumns
|
||||
\let\maxcolumn=b
|
||||
|
@ -154,16 +159,16 @@
|
|||
|
||||
\intercolumnskip=.46in
|
||||
\def\abc{a}
|
||||
\output={% %see The TeXbook page 257
|
||||
\output={% %see The TeXbook page 257
|
||||
% This next line is useful when designing the layout.
|
||||
%\immediate\write16{Column \folio\abc\space starts with \firstmark}
|
||||
\if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
|
||||
\else\if a\abc
|
||||
\global\setbox\columna\columnbox \global\def\abc{b}
|
||||
\global\setbox\columna\columnbox \global\def\abc{b}
|
||||
%% in case we never use \columnb (two-column mode)
|
||||
\global\setbox\columnb\hbox to -\intercolumnskip{}
|
||||
\else
|
||||
\global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
|
||||
\global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
|
||||
\def\multicolumnformat{\shipout\vbox{\makeheadline
|
||||
\hbox{\box\columna\hskip\intercolumnskip
|
||||
\box\columnb\hskip\intercolumnskip\columnbox}
|
||||
|
@ -173,7 +178,7 @@
|
|||
\def\bye{\par\vfill\supereject
|
||||
\if a\abc \else\null\vfill\eject\fi
|
||||
\if a\abc \else\null\vfill\eject\fi
|
||||
\end}
|
||||
\end}
|
||||
\fi
|
||||
|
||||
% we won't be using math mode much, so redefine some of the characters
|
||||
|
@ -225,7 +230,7 @@
|
|||
\def\<#1>{{\it #1\/}}
|
||||
|
||||
% kbd - argument is characters typed literally. Like the Texinfo command.
|
||||
\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
|
||||
\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
|
||||
|
||||
% beginexample...endexample - surrounds literal text, such a code example.
|
||||
% typeset in a typewriter font with line breaks preserved
|
||||
|
@ -316,15 +321,15 @@ \section{Structure Editing}
|
|||
\section{Archiving}
|
||||
|
||||
\key{toggle ARCHIVE tag}{C-c C-x C-a}
|
||||
\metax{mark fully done children}{C-u C-c C-x C-a}
|
||||
%\metax{mark fully done children}{C-u C-c C-x C-a}
|
||||
\key{force cycling of an ARCHIVEd tree}{C-TAB}
|
||||
\key{move subtree to archive file}{C-c C-x C-s}
|
||||
\metax{move all fully done children}{C-u C-c C-x C-s}
|
||||
To set archive location for current file, add a line like$^2$:
|
||||
\vskip -1mm
|
||||
\beginexample%
|
||||
\#+ARCHIVE: archfile::* Archived Tasks
|
||||
\endexample
|
||||
%\metax{move all fully done children}{C-u C-c C-x C-s}
|
||||
%To set archive location for current file, add a line like$^2$:
|
||||
%\vskip -1mm
|
||||
%\beginexample%
|
||||
%\#+ARCHIVE: archfile::* Archived Tasks
|
||||
%\endexample
|
||||
|
||||
\section{Filtering and Sparse Trees}
|
||||
|
||||
|
@ -359,13 +364,11 @@ \section{Tables}
|
|||
|
||||
{\bf Row and column editing}
|
||||
|
||||
\key{move the current column left}{M-LEFT}
|
||||
\key{move the current column right}{M-RIGHT}
|
||||
\key{move the current column left}{M-LEFT/RIGHT}
|
||||
\key{kill the current column}{M-S-LEFT}
|
||||
\key{insert new column to left of cursor position}{M-S-RIGHT}
|
||||
|
||||
\key{move the current row up}{M-UP}
|
||||
\key{move the current row down}{M-DOWN}
|
||||
\key{move the current row up/down}{M-UP/DOWN}
|
||||
\key{kill the current row or horizontal line}{M-S-UP}
|
||||
\key{insert new row above the current row}{M-S-DOWN}
|
||||
\key{insert hline below (\kbd{C-u} : above) current row}{C-c -}
|
||||
|
@ -378,34 +381,6 @@ \section{Tables}
|
|||
\key{paste rectangular region}{C-c C-x C-y}
|
||||
\key{fill paragraph across selected cells}{C-c C-q}
|
||||
|
||||
{\bf Calculations} (in combination with Emacs \kbd{calc} package)
|
||||
|
||||
\key{set and eval column formula}{C-c =}
|
||||
\key{set and eval field formula}{C-u C-c =}
|
||||
\key{edit formulas in separate buffer}{C-c '}
|
||||
\key{re-apply all stored equations to current line}{C-c *}
|
||||
\key{re-apply all stored equations to entire table}{C-u C-c *}
|
||||
\key{iterate table to stability}{C-u C-u C-c *}
|
||||
|
||||
%\kbd{TAB}, \kbd{RET} and \kbd{C-c C-c} trigger automatic recalculation
|
||||
%in lines starting with: {\tt | \# |}.
|
||||
|
||||
\key{rotate calculation mark through \# * ! \^ \_ \$}{C-\#}
|
||||
|
||||
\key{show line, column, formula reference}{C-c ?}
|
||||
\key{sum numbers in current column/rectangle}{C-c +}
|
||||
\key{copy down with increment}{S-RET$^3$}
|
||||
|
||||
Formulas typed in field are executed by \kbd{TAB},
|
||||
\kbd{RET} and \kbd{C-c C-c}. \kbd{=} introduces a column
|
||||
formula, \kbd{:=} a named-field formula.
|
||||
|
||||
\key{Example: Add Col1 and Col2}{=\$1+\$2}
|
||||
\key{... with printf format specification}{=\$1+\$2;\%.2f}
|
||||
\key{... with constants from constants.el}{=\$1/\$c/\$cm}
|
||||
\metax{sum from 2nd to 3rd hline}{:=vsum(@II..@III)}
|
||||
\key{apply current column formula}{=}
|
||||
|
||||
{\bf Miscellaneous}
|
||||
|
||||
\key{to limit column width to \kbd{N} characters, use}{...| <N> |...}
|
||||
|
@ -413,6 +388,7 @@ \section{Tables}
|
|||
\key{make current field fully visible}{C-u TAB}
|
||||
\metax{export as tab-separated file}{M-x org-table-export}
|
||||
\metax{import tab-separated file}{M-x org-table-import}
|
||||
\key{sum numbers in current column/rectangle}{C-c +}
|
||||
|
||||
{\bf Tables created with the \kbd{table.el} package}
|
||||
|
||||
|
@ -420,6 +396,42 @@ \section{Tables}
|
|||
\key{recognize existing table.el table}{C-c C-c}
|
||||
\key{convert table (Org-mode $\leftrightarrow$ table.el)}{C-c ~}
|
||||
|
||||
{\bf Spreadsheet}
|
||||
|
||||
Formulas typed in field are executed by \kbd{TAB},
|
||||
\kbd{RET} and \kbd{C-c C-c}. \kbd{=} introduces a column
|
||||
formula, \kbd{:=} a field formula.
|
||||
|
||||
\key{Example: Add Col1 and Col2}{|=\$1+\$2 |}
|
||||
\key{... with printf format specification}{|=\$1+\$2;\%.2f|}
|
||||
\key{... with constants from constants.el}{|=\$1/\$c/\$cm |}
|
||||
\metax{sum from 2nd to 3rd hline}{|:=vsum(@II..@III)|}
|
||||
\key{apply current column formula}{| = |}
|
||||
|
||||
\key{set and eval column formula}{C-c =}
|
||||
\key{set and eval field formula}{C-u C-c =}
|
||||
\key{re-apply all stored equations to current line}{C-c *}
|
||||
\key{re-apply all stored equations to entire table}{C-u C-c *}
|
||||
\key{iterate table to stability}{C-u C-u C-c *}
|
||||
\key{rotate calculation mark through \# * ! \^ \_ \$}{C-\#}
|
||||
\key{show line, column, formula reference}{C-c ?}
|
||||
\key{toggle coordinate grid}{C-c \}}
|
||||
\key{toggle formula debugger}{C-c \{}
|
||||
|
||||
{\it Formula Editor}
|
||||
|
||||
\key{edit formulas in separate buffer}{C-c '}
|
||||
\key{exit and install new formulas}{C-c C-c}
|
||||
\key{exit, install, and apply new formulas}{C-u C-c C-c}
|
||||
\key{abort}{C-c C-q}
|
||||
\key{toggle reference style}{C-c C-r}
|
||||
\key{pretty-print Lisp formula}{TAB}
|
||||
\key{complete Lisp symbol}{M-TAB}
|
||||
\key{shift reference point}{S-cursor}
|
||||
\key{shift test line for column references}{M-up/down}
|
||||
\key{scroll the window showing the table}{M-S-up/down}
|
||||
\key{toggle table coordinate grid}{C-c \}}
|
||||
|
||||
\section{Links}
|
||||
|
||||
\key{globally store link to the current location}{C-c l$^1$}
|
||||
|
@ -466,24 +478,24 @@ \section{Links}
|
|||
%\key{\kbd{vm://myself@some.where.org/folder\#id}}{\rm VM remote}
|
||||
|
||||
|
||||
\section{Remember-mode Integration}
|
||||
% \section{Remember-mode Integration}
|
||||
|
||||
See the manual for how to make remember.el use Org-mode links and
|
||||
files. The note-finishing command \kbd{C-c C-c} will first prompt for
|
||||
an org file. In the file, find a location with:
|
||||
% See the manual for how to make remember.el use Org-mode links and
|
||||
% files. The note-finishing command \kbd{C-c C-c} will first prompt for
|
||||
% an org file. In the file, find a location with:
|
||||
|
||||
\key{rotate subtree visibility}{TAB}
|
||||
\key{next heading}{DOWN}
|
||||
\key{previous heading}{UP}
|
||||
% \key{rotate subtree visibility}{TAB}
|
||||
% \key{next heading}{DOWN}
|
||||
% \key{previous heading}{UP}
|
||||
|
||||
Insert the note with one of the following:
|
||||
% Insert the note with one of the following:
|
||||
|
||||
\key{as sublevel of heading at cursor}{RET}
|
||||
\key{right here (cursor not on heading)}{RET}
|
||||
\key{before current heading}{LEFT}
|
||||
\key{after current heading}{RIGHT}
|
||||
\key{shortcut to end of buffer (cursor at buf-start)}{RET}
|
||||
\key{Abort}{q}
|
||||
% \key{as sublevel of heading at cursor}{RET}
|
||||
% \key{right here (cursor not on heading)}{RET}
|
||||
% \key{before current heading}{LEFT}
|
||||
% \key{after current heading}{RIGHT}
|
||||
% \key{shortcut to end of buffer (cursor at buf-start)}{RET}
|
||||
% \key{Abort}{q}
|
||||
|
||||
\section{Completion}
|
||||
|
||||
|
@ -502,16 +514,18 @@ \section{Completion}
|
|||
\section{TODO Items and Checkboxes}
|
||||
|
||||
\key{rotate the state of the current item}{C-c C-t}
|
||||
\metax{select next/previous state}{S-LEFT/RIGHT}
|
||||
\metax{select next/previous set}{C-S-LEFT/RIGHT}
|
||||
\key{view TODO items in a sparse tree}{C-c C-v}
|
||||
\key{view 3rd TODO keyword's sparse tree}{C-3 C-c C-v}
|
||||
|
||||
\key{set the priority of the current item}{C-c , [ABC]}
|
||||
\key{remove priority cookie from current item}{C-c , SPC}
|
||||
\key{raise priority of current item}{S-UP$^3$}
|
||||
\key{lower priority of current item}{S-DOWN$^3$}
|
||||
\key{raise/lower priority of current item}{S-UP/DOWN$^3$}
|
||||
%\key{lower priority of current item}{S-DOWN$^3$}
|
||||
|
||||
\key{\kbd{\#+SEQ_TODO: TODO TRY BLUFF DONE}}{\rm todo workflow}
|
||||
\key{\kbd{\#+TYP_TODO: Phil home work DONE}}{\rm todo types}
|
||||
%\key{\kbd{\#+SEQ_TODO: TODO TRY BLUFF DONE}}{\rm todo workflow}
|
||||
%\key{\kbd{\#+TYP_TODO: Phil home work DONE}}{\rm todo types}
|
||||
|
||||
\key{insert new checkbox item in plain list}{M-S-RET}
|
||||
\key{toggle checkbox(es) in region/entry/at point}{C-c C-x C-b}
|
||||
|
@ -548,13 +562,11 @@ \section{Timestamps}
|
|||
%\key{... forward/backward one month}{M-S-LEFT/RIGT}
|
||||
\key{Toggle custom format display for dates/times}{C-c C-x C-t}
|
||||
|
||||
|
||||
\section{Clocking Time}
|
||||
{\bf Clocking time}
|
||||
|
||||
\key{start clock on current item}{C-c C-x C-i}
|
||||
\key{stop clock on current item}{C-c C-x C-o}
|
||||
\key{cancel current clock}{C-c C-x C-x}
|
||||
|
||||
\key{display total subtree times}{C-c C-x C-d}
|
||||
\key{remove displayed times}{C-c C-c}
|
||||
\key{insert/update table with clock report}{C-c C-x C-r}
|
||||
|
@ -720,21 +732,6 @@ \section{Exporting and Publishing}
|
|||
|
||||
\key{toggle COMMENT keyword on entry}{C-c ;}
|
||||
|
||||
|
||||
%\section{CUA and pc-select compatibility}%
|
||||
|
||||
%Configure the variable {\tt org-CUA-compatibility} to make Org-mode
|
||||
%avoid the \kbd{S-<cursor>} bindings used by these modes. When set,
|
||||
%Org-mode will change the following keybindings (also in the agenda
|
||||
%buffer, but not during date selection). See note mark four$^3$
|
||||
%throughout the reference card.
|
||||
%%\vskip-mm
|
||||
%\beginexample
|
||||
%S-UP $\to$ M-p S-DOWN $\to$ M-n
|
||||
%S-LEFT $\to$ M-- S-RIGHT $\to$ M-+
|
||||
%S-RET $\to$ C-S-RET
|
||||
%\endexample
|
||||
|
||||
\section{Dynamic Blocks}
|
||||
|
||||
\key{update dynamic block at point}{C-c C-x C-u}
|
||||
|
@ -753,10 +750,8 @@ \section{Notes}
|
|||
|
||||
\bye
|
||||
|
||||
% Local variables:
|
||||
% compile-command: "tex refcard"
|
||||
% End:
|
||||
|
||||
% arch-tag: 139f6750-5cfc-49ca-92b5-237fe5795290
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: t
|
||||
%%% End:
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2007-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 22.1 released.
|
||||
|
||||
2007-01-30 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
* CXTERM-DIC/CCDOSPY.tit, CXTERM-DIC/PY-b5.tit, CXTERM-DIC/SW.tit,
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2007-06-07 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* etags.c (print_version): Add `emacs_copyright' string, for
|
||||
easier automatic updating.
|
||||
|
||||
2007-05-18 Francesco Potort,Al(B <pot@gnu.org>
|
||||
|
||||
* etags.c: Extern definitions of some more pointer functions for
|
||||
|
@ -10,6 +15,10 @@
|
|||
|
||||
* makefile.w32-in (VERSION): Increase to 22.1.50.
|
||||
|
||||
2007-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 22.1 released.
|
||||
|
||||
2007-02-26 Francesco Potort,Al(B <pot@gnu.org>
|
||||
|
||||
* Makefile.in (etags, ctags): Define EMACS_NAME as "GNU Emacs".
|
||||
|
|
|
@ -887,8 +887,11 @@ etags --help --lang=ada.");
|
|||
static void
|
||||
print_version ()
|
||||
{
|
||||
/* Makes it easier to update automatically. */
|
||||
char emacs_copyright[] = "Copyright (C) 2007 Free Software Foundation, Inc.";
|
||||
|
||||
printf ("%s (%s %s)\n", (CTAGS) ? "ctags" : "etags", EMACS_NAME, VERSION);
|
||||
puts ("Copyright (C) 2007 Free Software Foundation, Inc.");
|
||||
puts (emacs_copyright);
|
||||
puts ("This program is distributed under the terms in ETAGS.README");
|
||||
|
||||
exit (EXIT_SUCCESS);
|
||||
|
|
293
lisp/ChangeLog
293
lisp/ChangeLog
|
@ -1,3 +1,267 @@
|
|||
2007-06-10 Martin Rudalics <rudalics@gmx.at>
|
||||
|
||||
* emacs-lisp/bytecomp.el (byte-compile-find-cl-functions): Match
|
||||
against file-name-nondirectory.
|
||||
Fix text on user customization variables.
|
||||
Reported by Johan Bockg,Ae(Brd <bojohan@dd.chalmers.se>.
|
||||
|
||||
2007-06-09 Alfred M. Szmidt <ams@gnu.org> (tiny change)
|
||||
|
||||
* mail/rmail.el (rmail-movemail-variant-in-use): Fix doc typo.
|
||||
|
||||
2007-06-09 Davis Herring <herring@lanl.gov>
|
||||
|
||||
* desktop.el (desktop-minor-mode-table): Doc fix.
|
||||
|
||||
2007-06-08 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* textmodes/css-mode.el (css-navigation-syntax-table):
|
||||
Use set-char-table-range so it also works in the unicode branch.
|
||||
|
||||
2007-06-08 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* help-mode.el (help-xref-forward-stack)
|
||||
(help-xref-stack-forward-item, help-forward-label): New variables.
|
||||
(help-forward): New button type.
|
||||
(help-setup-xref): Initialise help-xref-forward-stack.
|
||||
(help-make-xrefs): Add forward button, if appropriate.
|
||||
(help-xref-go-back): Push item on forward stack.
|
||||
(help-xref-go-forward, help-go-forward): New functions.
|
||||
|
||||
2007-06-07 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* dired.el (dired-mode-map): Remove spurious separator.
|
||||
|
||||
2007-06-07 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* progmodes/ebrowse.el (ebrowse-draw-file-member-info): Doc fix.
|
||||
|
||||
* progmodes/mixal-mode.el (mixal-operation-codes-alist):
|
||||
* progmodes/idlwave.el (idlwave-one-key-select): Fix typo in docstring.
|
||||
|
||||
2007-06-07 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* textmodes/org.el: Version number fixed.
|
||||
|
||||
2007-06-07 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* version.el (emacs-copyright): New constant.
|
||||
* startup.el (fancy-splash-tail): Use emacs-copyright.
|
||||
* calc/calc-help.el (calc-full-help): Use emacs-copyright.
|
||||
|
||||
* emacs-lisp/bytecomp.el (byte-compile-warnings): Add new option
|
||||
`make-local'.
|
||||
(byte-compile-warnings-safe-p): Add `make-local'.
|
||||
(byte-compile-make-variable-buffer-local):
|
||||
Allow byte-compile-warnings to suppress this warning.
|
||||
|
||||
* tutorial.el (tutorial--describe-nonstandard-key): Adjust for new
|
||||
format of "menu" description.
|
||||
(tutorial--find-changed-keys): Describe the specific menu a
|
||||
command is in.
|
||||
|
||||
* dframe.el (dframe-frame-parameter, dframe-mouse-event-p):
|
||||
Rewrite compatibility functions to silence byte-compiler.
|
||||
|
||||
2007-06-07 Alfred M. Szmidt <ams@gnu.org> (tiny change)
|
||||
|
||||
* mail/rmailsum.el (rmail-summary-save-buffer): New command.
|
||||
(rmail-summary-mode-map): Add rmail-summary-save-buffer.
|
||||
|
||||
2007-06-07 Eric M. Ludlam <eric@siege-engine.com>
|
||||
|
||||
* emacs-lisp/checkdoc.el (checkdoc-ispell-lisp-words): Remove "iff".
|
||||
|
||||
2007-06-07 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* progmodes/ebrowse.el (ebrowse-member-table):
|
||||
* textmodes/org.el (org-export-ascii-bullets, org-batch-agenda)
|
||||
(org-batch-agenda-csv): Fix typos in docstrings.
|
||||
|
||||
2007-06-06 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* international/mule-cmds.el (toggle-enable-multibyte-characters)
|
||||
(sort-coding-systems, search-unencodable-char): Doc fixes.
|
||||
(coding-system-change-eol-conversion, set-default-coding-systems)
|
||||
(prefer-coding-system, find-multibyte-characters, princ-list)
|
||||
(leim-list-entry-regexp, set-input-method, locale-language-names)
|
||||
(input-method-exit-on-first-char, exit-language-environment-hook)
|
||||
(locale-charset-language-names): Fix typos in docstrings.
|
||||
|
||||
2007-06-06 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* pgg.el (pgg-sign-region, pgg-sign):
|
||||
* ses.el (ses-call-printer):
|
||||
* calendar/icalendar.el (icalendar--diarytime-to-isotime):
|
||||
* textmodes/org.el (org-cycle): Fix typos in docstrings.
|
||||
|
||||
2007-06-06 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* textmodes/org.el
|
||||
(org-export-region-as-html, org-replace-region-by-html)
|
||||
(org-number-to-letters, org-table-fedit-finish)
|
||||
(org-normalize-color, org-table-fedit-ref-right)
|
||||
(org-date-to-gregorian, org-table-fedit-move)
|
||||
(org-table-convert-refs-to-rc, org-calendar-holiday)
|
||||
(org-table-fedit-toggle-ref-type, org-write-agenda)
|
||||
(org-colgroup-info-to-vline-list, org-agenda-todo-previousset)
|
||||
(org-defkey, org-encode-for-stdout)
|
||||
(org-indent-line-function, org-export-as-html-to-buffer)
|
||||
(org-store-agenda-views, org-update-mode-line)
|
||||
(org-find-if, org-delete-all)
|
||||
(org-table-fedit-convert-buffer, org-emphasize)
|
||||
(org-uniquify, org-table-fedit-lisp-indent)
|
||||
(org-table-fedit-scroll, org-get-todo-sequence-head)
|
||||
(org-table-fedit-scroll-down, org-table-fedit-line-down)
|
||||
(org-table-fedit-ref-left, org-agenda-export-csv-mapper)
|
||||
(org-table-fedit-toggle-coordinates, org-dvipng-color)
|
||||
(org-table-fedit-line-up, org-table-fedit-ref-down)
|
||||
(org-table-formula-from-user, org-mode-flyspell-verify)
|
||||
(org-cycle-show-empty-lines, org-ctrl-c-ret)
|
||||
(org-table-formula-to-user, org-diary-to-ical-string)
|
||||
(orgtbl-export, org-table-fedit-post-command)
|
||||
(org-closed-in-range, org-shiftcontrolright)
|
||||
(org-table-convert-refs-to-an, org-table-hline-and-move)
|
||||
(org-table-formula-less-p, org-format-table-ascii)
|
||||
(org-agenda-get-sexps, org-shift-refpart)
|
||||
(org-diary-sexp-entry, org-time-string-to-absolute)
|
||||
(org-table-show-reference, org-letters-to-number)
|
||||
(org-fix-agenda-info, org-table-fedit-ref-up)
|
||||
(org-table-fedit-shift-reference, org-table-fedit-abort)
|
||||
(org-closest-date, org-shiftcontrolleft)
|
||||
(org-at-heading-or-item-p, org-rematch-and-replace)
|
||||
(org-agenda-todo-nextset, org-export-grab-title-from-buffer):
|
||||
New functions.
|
||||
(org-table-edit-scroll-down, org-finish-edit-formulas)
|
||||
(org-table-edit-next-field, org-abort-edit-formulas)
|
||||
(org-font-lock-level, org-export-find-first-heading-line)
|
||||
(org-table-edit-line-down, org-table-edit-backward-field)
|
||||
(org-edit-formula-lisp-indent, org-table-edit-move)
|
||||
(org-check-log-option, org-this-word)
|
||||
(org-table-edit-line-up, org-table-edit-formulas-post-command)
|
||||
(org-agenda-file-to-end, org-expand-file-name)
|
||||
(org-fake-empty-table-line, org-table-edit-scroll)
|
||||
(org-toggle-log-option, org-show-reference): Function removed.
|
||||
(org-inhibit-invisibility, org-table-formula-make-cmp-string):
|
||||
New defsubsts.
|
||||
(org-unmodified, org-batch-store-agenda-views)
|
||||
(org-batch-agenda-csv): New macro.
|
||||
(org-agenda-export): New customization group.
|
||||
(org-agenda-skip-deadline-if-done, org-agenda-remove-tags)
|
||||
(org-highest-priority, org-agenda-exporter-settings)
|
||||
(org-log-done-with-time, org-replace-disputed-keys)
|
||||
(org-format-latex-header, org-export-table-header-tags)
|
||||
(org-cycle-separator-lines, org-export-table-data-tags)
|
||||
(org-icalendar-include-sexps)
|
||||
(org-empty-line-terminates-plain-lists)
|
||||
(org-log-repeat, org-special-ctrl-a)
|
||||
(org-table-use-standard-references, org-disputed-keys)
|
||||
(org-export-skip-text-before-1st-heading, org-agenda-with-colors)
|
||||
(org-agenda-export-html-style): New option.
|
||||
(org-allow-auto-repeat, org-agenda-remove-tags-when-in-prefix)
|
||||
(org-CUA-compatible): Option removed.
|
||||
(org-agenda-structure, org-sexp-date): New face.
|
||||
(org-todo-keywords-for-agenda, org-not-done-keywords)
|
||||
(org-planning-or-clock-line-re, org-agenda-name)
|
||||
(org-table-colgroup-info, org-todo-sets)
|
||||
(constants-unit-system, org-clock-mode-line-entry)
|
||||
(org-mode-line-timer, org-table-current-begin-pos)
|
||||
(org-todo-keywords-1, org-mode-line-string)
|
||||
(org-table-clean-did-remove-column, org-table-fedit-map)
|
||||
(org-clock-heading, org-table-buffer-is-an)
|
||||
(org-agenda-info, org-done-keywords)
|
||||
(org-done-keywords-for-agenda, org-todo-heads)
|
||||
(org-todo-kwd-alist, org-clock-start-time): New variable.
|
||||
(org-todo-kwd-priority-p, org-edit-formulas-map)
|
||||
(org-repeat-re, org-todo-kwd-max-priority)
|
||||
(org-version, org-done-string)
|
||||
(org-table-clean-did-remove-column-1, org-disputed-keys):
|
||||
Remove Variables.
|
||||
(org-table-translate-regexp, org-repeat-re, org-version): New consts.
|
||||
(org-ts-lengths): Constant removed.
|
||||
(org-follow-gnus-link): Don't ask how many articles to read.
|
||||
(org-export-find-first-export-line): Rename from
|
||||
`org-export-find-first-heading'.
|
||||
Use `org-export-skip-text-before-1st-heading'.
|
||||
(org-table-fedit-post-command): Rename from
|
||||
`org-table-edit-formulas-post-command'.
|
||||
(org-table-fedit-finish): Rename from `org-finish-edit-formulas'.
|
||||
(org-table-fedit-abort): Rename from `org-abort-edit-formulas'.
|
||||
(org-table-fedit-lisp-indent): Rename from
|
||||
`org-edit-formula-lisp-indent'.
|
||||
(org-table-show-reference): Rename from `org-show-reference'.
|
||||
(org-table-store-formulas): Use `org-table-formula-less-p'.
|
||||
(org-table-edit-formulas): Position cursor to current field equation.
|
||||
(org-update-checkbox-count, org-hide-archived-subtrees)
|
||||
(org-timestamp-up-day, org-timestamp-down-day)
|
||||
(org-shiftmetaleft, org-shiftmetaright, org-shiftmetaup)
|
||||
(org-shiftmetadown, org-metaleft, org-metaright, org-metaup)
|
||||
(org-metadown, org-shiftup, org-shiftdown, org-shiftright)
|
||||
(org-shiftleft, org-ctrl-c-ctrl-c, org-context):
|
||||
Let `org-on-heading-p' also check for invisible heading.
|
||||
(org-read-date): Match am/pm times.
|
||||
(org-eval-in-calendar): Fix default date in prompt.
|
||||
|
||||
2007-06-05 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* files.el (auto-mode-alist): Separate "ChangeLog.1" and
|
||||
"ChangeLog.a" entries, giving the latter lower priority.
|
||||
|
||||
2007-06-05 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* faces.el (face-id): If the argument is a face alias,
|
||||
return the ID of the target face.
|
||||
|
||||
2007-06-05 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* net/socks.el (top): Remove unnecessary copyright line.
|
||||
|
||||
2007-06-04 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* longlines.el (longlines-auto-wrap): Handle argument correctly.
|
||||
|
||||
2007-06-04 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* net/socks.el: New file, taken from w3 repository.
|
||||
(top): Update Copyright. Don't load cl.el.
|
||||
(all): Replace `case' by `cond', `string-to-int' by
|
||||
`string-to-number', and `process-kill-without-query' by
|
||||
`set-process-query-on-exit-flag'.
|
||||
(socks-char-int): Remove defalias and all occurencies.
|
||||
|
||||
2007-06-04 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* progmodes/compile.el (compilation-find-file, compilation-handle-exit):
|
||||
Fix typos in docstrings.
|
||||
(compilation-search-path, compilation-buffer-name-function): Doc fixes.
|
||||
(compilation-finish-function): Fix typo in obsolescence declaration.
|
||||
|
||||
2007-06-03 Sam Steingold <sds@gnu.org>
|
||||
|
||||
* progmodes/compile.el: Add TIMESTAMP to the LOC data structure, to
|
||||
handle unending automatic recompilation of changed files (`omake -P').
|
||||
(compilation-loop): VISITED is now 5th CDR.
|
||||
(compilation-next-error-function): Set TIMESTAMP.
|
||||
|
||||
2007-06-03 Sam Steingold <sds@gnu.org>
|
||||
|
||||
* files.el (kill-buffer-ask): New function.
|
||||
(kill-some-buffers): Use it.
|
||||
(kill-matching-buffers): New user command.
|
||||
|
||||
2007-06-01 David Kastrup <dak@gnu.org>
|
||||
|
||||
* dired.el (dired-recursive-deletes, dired-recursive-copies):
|
||||
Change default to `top'.
|
||||
|
||||
2007-05-31 Richard Stallman <rms@gnu.org>
|
||||
|
||||
* dired.el (dired-do-flagged-delete, dired-do-delete): Doc fix.
|
||||
|
||||
2007-05-31 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* textmodes/css-mode.el: New file.
|
||||
|
||||
2007-05-30 Michael Olson <mwolson@gnu.org>
|
||||
|
||||
* emacs-lisp/tq.el (tq-queue-pop): Stifle error when a process has
|
||||
|
@ -9,8 +273,8 @@
|
|||
2007-05-29 Martin Rudalics <rudalics@gmx.at>
|
||||
|
||||
* textmodes/table.el (table--point-entered-cell-function)
|
||||
(table--point-left-cell-function): Bind
|
||||
`inhibit-point-motion-hooks' to t.
|
||||
(table--point-left-cell-function):
|
||||
Bind `inhibit-point-motion-hooks' to t.
|
||||
|
||||
2007-05-29 Nikolaj Schumacher <n_schumacher@web.de> (tiny change)
|
||||
|
||||
|
@ -35,18 +299,17 @@
|
|||
|
||||
* net/tramp.el (top): Make `set-buffer-multibyte' an alias if it
|
||||
doesn't exist.
|
||||
(with-parsed-tramp-file-name): Protect debug spec during
|
||||
compilation.
|
||||
(with-parsed-tramp-file-name): Protect debug spec during compilation.
|
||||
(tramp-handle-insert-directory): Check (featurep 'ls-lisp).
|
||||
(tramp-file-name-p, tramp-file-name-multi-method)
|
||||
(tramp-file-name-method, tramp-file-name-user)
|
||||
(tramp-file-name-host, tramp-file-name-localname): New defuns,
|
||||
replacing defstruct `tramp-file-name'.
|
||||
(tramp-handle-file-remote-p, tramp-completion-dissect-file-name1)
|
||||
(tramp-dissect-file-name, tramp-dissect-multi-file-name): Apply
|
||||
`vector' instead of `make-tramp-file-name'.
|
||||
(tramp-handle-make-auto-save-file-name): Apply
|
||||
`tramp-temporary-file-directory' for compatibility reasons.
|
||||
(tramp-dissect-file-name, tramp-dissect-multi-file-name):
|
||||
Apply `vector' instead of `make-tramp-file-name'.
|
||||
(tramp-handle-make-auto-save-file-name):
|
||||
Apply `tramp-temporary-file-directory' for compatibility reasons.
|
||||
(tramp-completion-mode): Use `natnump' instead of `wholenump'
|
||||
because of XEmacs.
|
||||
(tramp-completion-mode): `last-input-event' is nil when XEmacs is
|
||||
|
@ -170,8 +433,8 @@
|
|||
|
||||
2007-05-22 Katsumi Yamaoka <yamaoka@jpl.org> (tiny change)
|
||||
|
||||
* mail/mail-extr.el (mail-extract-address-components): Recognize
|
||||
non-ASCII characters except for NBSP as words.
|
||||
* mail/mail-extr.el (mail-extract-address-components):
|
||||
Recognize non-ASCII characters except for NBSP as words.
|
||||
|
||||
2007-05-21 Trent Buck <trentbuck@gmail.com> (tiny change)
|
||||
|
||||
|
@ -182,8 +445,8 @@
|
|||
2007-05-21 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* image-mode.el (image-toggle-display): Don't clear image cache.
|
||||
Only use filename in image spec if the file is readable. Call
|
||||
image-refresh.
|
||||
Only use filename in image spec if the file is readable.
|
||||
Call image-refresh.
|
||||
|
||||
* image.el (image-type-from-file-name, image-type): Simplify.
|
||||
(image-type-auto-detected-p): Don't scan auto-mode-alist.
|
||||
|
@ -211,6 +474,10 @@
|
|||
* files.el (auto-mode-alist): Change the regexp so that
|
||||
ChangeLog.unicode and ChangeLog.multi-tty use change-log-mode.
|
||||
|
||||
2007-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 22.1 released.
|
||||
|
||||
2007-05-19 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* paren.el (show-paren-function): Undo 2007-04-19 and 2007-04-20
|
||||
|
@ -230,7 +497,7 @@
|
|||
|
||||
2007-05-18 Rob Riepel <riepel@Stanford.EDU>
|
||||
|
||||
* emulation/tpu-edt.el (CSI-map, SS3-map): Moved from global-map to
|
||||
* emulation/tpu-edt.el (CSI-map, SS3-map): Move from global-map to
|
||||
tpu-global-map.
|
||||
(tpu-original-global-map): Variable deleted.
|
||||
(tpu-control-keys-map): New keymap variable.
|
||||
|
|
|
@ -271,7 +271,7 @@
|
|||
2007-04-14 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* tmm.el (tmm-get-keybind): Use copy-sequence to ensure that the
|
||||
global map isn't modified
|
||||
global map isn't modified.
|
||||
|
||||
2007-04-14 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
|
@ -1413,7 +1413,7 @@
|
|||
* progmodes/python.el (python-quote-syntax): Don't bother with
|
||||
syntax-ppss-context.
|
||||
(python-fill-paragraph): Make sure that fenced-string delimiters that
|
||||
stand on their own line stay there
|
||||
stand on their own line stay there.
|
||||
|
||||
2007-03-01 Lennart Borgman <lennart.borgman.073@student.lu.se>
|
||||
|
||||
|
@ -2549,7 +2549,7 @@
|
|||
* type-break.el (type-break-demo-hanoi, type-break-demo-life)
|
||||
(type-break-demo-boring): Call read-event instead of read-char.
|
||||
|
||||
2007-01-19 Daniel Pfeiffer <occitan@esperanto.org> (small change)
|
||||
2007-01-19 Daniel Pfeiffer <occitan@esperanto.org> (tiny change)
|
||||
|
||||
* progmodes/compile.el: Add handling for makepplog.
|
||||
|
||||
|
@ -3414,7 +3414,7 @@
|
|||
(wdired-search-and-rename): Simplify code.
|
||||
(wdired-preprocess-files, wdired-preprocess-perms): Make
|
||||
read-only property of preceding character rear-nonsticky to
|
||||
avoid that it can be modified. Put old-name and old-link
|
||||
avoid that it can be modified. Put old-name and old-link
|
||||
properties on character preceding name and replace
|
||||
put-text-property by add-text-properties.
|
||||
(wdired-get-filename, wdired-get-previous-link): Get old-name
|
||||
|
@ -3605,7 +3605,7 @@
|
|||
allout-mode-map. Call it on file load, so the mode docstring
|
||||
substitutions work even if allout mode has not yet been invoked.
|
||||
(allout-mode): Use new allout-setup-mode-map to track any keybinding
|
||||
customizations since the map was last processed. Also, refine the
|
||||
customizations since the map was last processed. Also, refine the
|
||||
docstring so it's ship-shape for release.
|
||||
(allout-default-layout, allout-beginning-of-line-cycles)
|
||||
(allout-distinctive-bullets-string, allout-use-mode-specific-leader)
|
||||
|
@ -5281,7 +5281,7 @@
|
|||
New C-c key bindings: for `cperl-find-bad-style',
|
||||
`cperl-pod-spell', `cperl-here-doc-spell', `cperl-narrow-to-here-doc',
|
||||
`cperl-perdoc', and `cperl-perldoc-at-point'.
|
||||
CPerl Mode menu changes: "Fix style by spaces", "Imenu on Perl Info"
|
||||
CPerl Mode menu changes: "Fix style by spaces", "Imenu on Perl Info"
|
||||
moved, new submenu of Tools with Ispell entries and narrowing.
|
||||
(cperl-after-sub-regexp): New defsubst.
|
||||
(cperl-imenu--function-name-regexp-perl): Use `cperl-after-sub-regexp'.
|
||||
|
@ -5304,7 +5304,7 @@
|
|||
(cperl-calculate-indent): Try to allow '_' be non-word char
|
||||
Support subs with attributes.
|
||||
(cperl-where-am-i): Quiet (?) a warning.
|
||||
(cperl-cached-syntax-table) New function.
|
||||
(cperl-cached-syntax-table): New function.
|
||||
(cperl-forward-re): Use `cperl-cached-syntax-table'.
|
||||
(cperl-unwind-to-safe): Recognize `syntax-type' property
|
||||
changing in a middle of line.
|
||||
|
@ -5478,7 +5478,7 @@
|
|||
(cperl-string-syntax-table): Make { and } not-grouping
|
||||
(Sometimes they ARE grouping in RExen, but matching them would only
|
||||
confuse in many situations when they are not)
|
||||
(beginning-of-buffer): Replace two occurences with goto-char...
|
||||
(beginning-of-buffer): Replace two occurrences with goto-char...
|
||||
(cperl-calculate-indent): `char-after' could be nil...
|
||||
(cperl-find-pods-heres): REx can start after "[" too.
|
||||
Hightlight (??{}) in RExen too.
|
||||
|
@ -5551,7 +5551,7 @@
|
|||
(cperl-next-interpolated-REx): New function.
|
||||
(cperl-next-interpolated-REx-0): Likewise.
|
||||
(cperl-next-interpolated-REx-1): Likewise.
|
||||
"\C-c\C-x", "\C-c\C-y", "\C-c\C-v": New keybinding for these functions.
|
||||
"\C-c\C-x", "\C-c\C-y", "\C-c\C-v": New keybinding for these functions.
|
||||
Perl/Regexp menu: 3 new entries for `cperl-next-interpolated-REx'.
|
||||
(cperl-praise): Mention finded interpolated RExen.
|
||||
|
||||
|
@ -5797,7 +5797,7 @@
|
|||
|
||||
* wid-edit.el (widget-button-click-moves-point): New variable.
|
||||
(widget-button-click): If widget-button-click-moves-point is
|
||||
non-nil, set point after performing the button action
|
||||
non-nil, set point after performing the button action.
|
||||
|
||||
* cus-edit.el (custom-mode): Set widget-button-click-moves-point.
|
||||
|
||||
|
@ -6069,8 +6069,8 @@
|
|||
buffer-read-only isn't set.
|
||||
(allout-annotate-hidden): Enable topic annotation during copies even
|
||||
when the buffer is read-only, eg for topic copies. Ensure that the loop
|
||||
advances, even when the span extends beyond the deletion region.
|
||||
(allout-toggle-subtree-encryption): Use allout-structure-added-hook
|
||||
advances, even when the span extends beyond the deletion region.
|
||||
(allout-toggle-subtree-encryption): Use allout-structure-added-hook
|
||||
rather than allout-exposure-changed-hook, as a stronger assertion.
|
||||
(allout-keybindings-list): Add bindings for
|
||||
allout-copy-line-as-kill and allout-copy-topic-as-kill.
|
||||
|
@ -6121,7 +6121,7 @@
|
|||
|
||||
* cus-start.el (all): Rename x-gtk-show-chooser-help-text to
|
||||
x-gtk-file-dialog-help-text. Rename x-use-old-gtk-file-dialog
|
||||
to x-gtk-use-old-file-dialog
|
||||
to x-gtk-use-old-file-dialog.
|
||||
|
||||
2006-09-18 Richard Stallman <rms@gnu.org>
|
||||
|
||||
|
@ -8116,7 +8116,7 @@
|
|||
|
||||
* tumme.el (tumme-create-thumb, tumme-thumbnail-display-external)
|
||||
(tumme-display-image, tumme-rotate-thumbnail, tumme-rotate-original)
|
||||
(tumme-set-exif-data, tumme-get-exif-data): Use shell-command-switch.
|
||||
(tumme-set-exif-data, tumme-get-exif-data): Use shell-command-switch.
|
||||
|
||||
* thumbs.el (thumbs-call-convert): Use shell-command-switch.
|
||||
|
||||
|
@ -8652,7 +8652,7 @@
|
|||
(viper-next-line-at-bol): If point is on a widget or a button, simulate
|
||||
clicking on that widget/button.
|
||||
|
||||
* viper.el (viper-mode): Allow a separate cursor color in Emacs state.
|
||||
* viper.el (viper-mode): Allow a separate cursor color in Emacs state.
|
||||
|
||||
* ediff-diff (ediff-test-patch-utility): Catch errors.
|
||||
(ediff-actual-diff-options, ediff-actual-diff3-options): New variables.
|
||||
|
@ -9203,7 +9203,7 @@
|
|||
(ewoc--wrap): New func.
|
||||
(ewoc-create): Take additional arg NOSEP. If nil, wrap node and
|
||||
header/footer pretty-printers. Save header/footer pretty-printer.
|
||||
(ewoc-set-hf): Use ewoc's header/footer pretty-printer. *
|
||||
(ewoc-set-hf): Use ewoc's header/footer pretty-printer.
|
||||
|
||||
* pcvs.el (cvs-make-cvs-buffer): Specify NOSEP to `ewoc-create'.
|
||||
|
||||
|
@ -10152,7 +10152,7 @@
|
|||
2006-05-05 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* startup.el (command-line): On MS-Windows, probe "~", not
|
||||
"~USER", for warning about non-existent home directory
|
||||
"~USER", for warning about non-existent home directory.
|
||||
|
||||
* arc-mode.el (archive-l-e): New optional argument `float' means
|
||||
generate a float value.
|
||||
|
@ -12103,7 +12103,7 @@
|
|||
preserve window-start.
|
||||
(speedbar-update-directory-contents): Try to preserve window-start
|
||||
and window-point.
|
||||
(speedbar-update-special-contents): Don't move back to start of window.
|
||||
(speedbar-update-special-contents): Don't move back to start of window.
|
||||
|
||||
* progmodes/gdb-ui.el (gdb-speedbar-refresh): Rename from
|
||||
gdb-speedbar-timer-fn. Use speedbar-refresh instead of
|
||||
|
@ -12729,7 +12729,7 @@
|
|||
|
||||
(allout-mode): Explicitly specify the mode map in the docstring.
|
||||
Clarify provision for various write-file hook var names.
|
||||
Adjusted for invisible-text overlays instead of selective-display.
|
||||
Adjusted for invisible-text overlays instead of selective-display.
|
||||
|
||||
(allout-depth): Really return 0 if not within any topic. This
|
||||
rectifies `allout-beginning-of-level' and sequence numbering
|
||||
|
@ -15747,10 +15747,10 @@
|
|||
2005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org>
|
||||
|
||||
* progmodes/cc-fix.el: Add definitions of the macros push and pop
|
||||
(for GNU Emacs 20.4)
|
||||
(for GNU Emacs 20.4).
|
||||
|
||||
* progmodes/cc-defs.el:
|
||||
(i): Load cc-fix.elc for `push' and `pop' (for GNU Emacs 20.4)
|
||||
(i): Load cc-fix.elc for `push' and `pop' (for GNU Emacs 20.4).
|
||||
|
||||
* progmodes/cc-cmds.el (c-show-syntactic-information): Change the
|
||||
highlighting mechanism so it will work in XEmacs too.
|
||||
|
@ -16051,7 +16051,7 @@
|
|||
|
||||
Introduce an "awk" style, mainly for auto-newline and clean-ups.
|
||||
|
||||
* progmodes/cc-align.el: New function c-snug-1line-defun-close
|
||||
* progmodes/cc-align.el: New function c-snug-1line-defun-close.
|
||||
|
||||
* progmodes/cc-cmds.el: In c-electric-brace, add code for new
|
||||
clean-up one-liner-defun.
|
||||
|
@ -16185,7 +16185,7 @@
|
|||
|
||||
* progmodes/cc-awk.el: Move regexps for analysing AWK code to near the
|
||||
start of the file. ^L now separate sections of the file.
|
||||
(c-awk-non-eol-esc-pair-re, c-awk-blank-or-comment-line-re)
|
||||
(c-awk-non-eol-esc-pair-re, c-awk-blank-or-comment-line-re)
|
||||
(c-awk-one-line-possibly-open-string-re)
|
||||
(c-awk-regexp-one-line-possibly-open-char-class-re)
|
||||
(c-awk-one-line-possibly-open-regexp-re)
|
||||
|
@ -17298,7 +17298,7 @@
|
|||
|
||||
2005-11-30 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* emulation/cua-rect.el (cua--rectangle-overlays): Make permanent-local.
|
||||
* emulation/cua-rect.el (cua--rectangle-overlays): Make permanent-local.
|
||||
(cua--rectangle-post-command): Cleanup overlays and deactivate mark
|
||||
after revert-buffer (or anything else which kills all local variables).
|
||||
|
||||
|
@ -18540,7 +18540,7 @@
|
|||
(pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional PASSPHRASE
|
||||
argument to all these routines, so the passphrase can be managed
|
||||
externally and passed in to the system.
|
||||
(pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache
|
||||
(pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache
|
||||
function.
|
||||
|
||||
2005-11-04 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
@ -18762,7 +18762,7 @@
|
|||
(pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional PASSPHRASE
|
||||
argument to all these routines, so the passphrase can be managed
|
||||
externally and passed in to the system.
|
||||
(pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache
|
||||
(pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache
|
||||
function.
|
||||
|
||||
2005-11-04 Edward O'Connor <hober0@gmail.com> (tiny change)
|
||||
|
@ -19664,14 +19664,14 @@
|
|||
New defvar. Replaces `dired-move-to-filename-regexp' from dired.el.
|
||||
|
||||
* dired.el (dired-move-to-filename-regexp): Remove.
|
||||
All occurences replaced by `directory-listing-before-filename-regexp'.
|
||||
All occurrences replaced by `directory-listing-before-filename-regexp'.
|
||||
|
||||
* dired-x.el, locate.el, vc.el:
|
||||
Replace `dired-move-to-filename-regexp' by
|
||||
`directory-listing-before-filename-regexp'. In vc.el it is
|
||||
overwritten locally; maybe this can be handled in files.el too.
|
||||
|
||||
* net/ange-ftp.el (ange-ftp-date-regexp): Remove. All occurences
|
||||
* net/ange-ftp.el (ange-ftp-date-regexp): Remove. All occurrences
|
||||
replaced by `directory-listing-before-filename-regexp'.
|
||||
|
||||
2005-10-23 Andreas Schwab <schwab@suse.de>
|
||||
|
@ -19923,7 +19923,7 @@
|
|||
(outlineify-sticky): Use the file vars mechanism.
|
||||
(allout-inhibit-protection, allout-during-write-cue)
|
||||
(allout-override-protect, allout-before-change-protect): Remove.
|
||||
(allout-flag-region, allout-open-topic): Adjust read-only text.
|
||||
(allout-flag-region, allout-open-topic): Adjust read-only text.
|
||||
(allout-open-line-not-read-only): Add to facilitate read-only
|
||||
text based protection.
|
||||
(allout-kill-line): Revise to adjust read-only text, clue the
|
||||
|
@ -20402,7 +20402,7 @@
|
|||
|
||||
2005-10-12 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
|
||||
|
||||
* startup.el (command-line-x-option-alist): -nb => -nbi
|
||||
* startup.el (command-line-x-option-alist): -nb => -nbi.
|
||||
|
||||
2005-10-12 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
|
@ -20580,7 +20580,7 @@
|
|||
* term/x-win.el: Remove -i, --icon-type from comment.
|
||||
|
||||
* startup.el (command-line-x-option-alist): Remove options -i,
|
||||
-itype, --icon-type, added -nb, --no-bitmap-icon
|
||||
-itype, --icon-type, added -nb, --no-bitmap-icon.
|
||||
|
||||
2005-10-09 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
|
@ -20866,7 +20866,7 @@
|
|||
* textmodes/ispell.el (ispell-word, ispell-region):
|
||||
Call ispell-maybe-find-aspell-dictionaries.
|
||||
(ispell-accept-buffer-local-defs):
|
||||
Don't call ispell-maybe-find-aspell-dictionaries
|
||||
Don't call ispell-maybe-find-aspell-dictionaries.
|
||||
|
||||
2005-10-04 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
|
@ -22474,7 +22474,7 @@
|
|||
|
||||
* calendar/diary-lib.el (diary-modify-entry-list-string-function):
|
||||
New hook.
|
||||
(add-to-diary-list): Call `diary-modify-entry-list-string-function'
|
||||
(add-to-diary-list): Call `diary-modify-entry-list-string-function'.
|
||||
|
||||
2005-08-24 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
|
@ -24379,7 +24379,7 @@
|
|||
* viper-init.el: Get rid of -face in face names.
|
||||
|
||||
* ediff-diff.el (ediff-extract-diffs, ediff-extract-diffs3):
|
||||
Make it work with longlines mode
|
||||
Make it work with longlines mode.
|
||||
|
||||
* ediff-mult.el (ediff-meta-mode-hook): New variable.
|
||||
|
||||
|
@ -27807,7 +27807,7 @@
|
|||
(reftex-unhighlight): Use `reftex-delete-overlay'.
|
||||
(reftex-uniq): Function removed. Use `reftex-uniquify' instead.
|
||||
(reftex-access-search-path): Use `reftex-uniquify' instead of
|
||||
`reftex-uniq'
|
||||
`reftex-uniq'.
|
||||
|
||||
* textmodes/reftex-sel.el (reftex-select-unmark): Overlay
|
||||
`before-string' property modification enables for Emacs as well.
|
||||
|
@ -29286,7 +29286,7 @@
|
|||
|
||||
* isearch.el (isearch-edit-string): Make the search-ring available for
|
||||
minibuffer history commands.
|
||||
(minibuffer-local-isearch-map): Remove bindings for M-p and M-n,
|
||||
(minibuffer-local-isearch-map): Remove bindings for M-p and M-n,
|
||||
the default history commands now work just as well.
|
||||
(isearch-ring-retreat-edit, isearch-ring-advance-edit): Remove.
|
||||
|
||||
|
@ -29446,7 +29446,7 @@
|
|||
`org-insert-mode-line-in-empty-file' has been set.
|
||||
(org-agenda-todo, org-agenda-priority): Modify to use
|
||||
`org-agenda-change-all-lines'.
|
||||
(org-warning-face): Change color on dark background
|
||||
(org-warning-face): Change color on dark background.
|
||||
|
||||
2005-04-14 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
|
@ -29570,7 +29570,7 @@
|
|||
|
||||
2005-04-11 Rajesh Vaidheeswarran <rv@gnu.org>
|
||||
|
||||
* whitespace.el (whitespace-version): Bump to 3.5
|
||||
* whitespace.el (whitespace-version): Bump to 3.5.
|
||||
|
||||
(whitespace-buffer-leading, whitespace-buffer-trailing):
|
||||
Invert sense of the test to highlight the whitespace.
|
||||
|
@ -29598,7 +29598,7 @@
|
|||
|
||||
* dired.el (dired-mode): Use dnd-* instead of x-dnd-*
|
||||
(dired-dnd-handle-local-file): Call dnd-get-local-file-name.
|
||||
(dired-dnd-handle-file): Call dnd-get-local-file-uri
|
||||
(dired-dnd-handle-file): Call dnd-get-local-file-uri.
|
||||
|
||||
* cus-edit.el (dnd): New group.
|
||||
|
||||
|
@ -32014,7 +32014,7 @@
|
|||
(calcFunc-sech, calcFunc-csch, calcFunc-coth, math-sec-raw)
|
||||
(math-csc-raw, math-cot-raw): New functions.
|
||||
|
||||
* calc/calc-rules.el (calc-DistribRules, calc-NegateRules): Add rules.
|
||||
* calc/calc-rules.el (calc-DistribRules, calc-NegateRules): Add rules.
|
||||
|
||||
* calc/calc-undo.el (calc-handle-undo): Remove prefix from
|
||||
the variable name in a message.
|
||||
|
@ -32589,7 +32589,7 @@
|
|||
2005-01-21 Ren,Ai(B Kyllingstad <listmailxemacs@kyllingstad.com>
|
||||
|
||||
* pcomplete.el: Define pcomplete-read-event instead of read-event,
|
||||
since it's not a complete read-event implementation
|
||||
since it's not a complete read-event implementation.
|
||||
|
||||
2005-01-20 Jay Belanger <belanger@truman.edu>
|
||||
|
||||
|
|
|
@ -414,7 +414,7 @@ C-w Describe how there is no warranty for Calc."
|
|||
(princ (format "GNU Emacs Calculator version %s.\n"
|
||||
calc-version))
|
||||
(princ " By Dave Gillespie.\n")
|
||||
(princ " Copyright (C) 2007 Free Software Foundation, Inc.\n\n")
|
||||
(princ (format " %s\n\n" emacs-copyright))
|
||||
(princ "Type `h s' for a more detailed summary.\n")
|
||||
(princ "Or type `h i' to read the full Calc manual on-line.\n\n")
|
||||
(princ "Basic keys:\n")
|
||||
|
|
|
@ -678,7 +678,7 @@ takes care of european-style."
|
|||
nil)))
|
||||
|
||||
(defun icalendar--diarytime-to-isotime (timestring ampmstring)
|
||||
"Convert a a time like 9:30pm to an iso-conform string like T213000.
|
||||
"Convert a time like 9:30pm to an iso-conform string like T213000.
|
||||
In this example the TIMESTRING would be \"9:30\" and the AMPMSTRING
|
||||
would be \"pm\"."
|
||||
(if timestring
|
||||
|
|
|
@ -423,7 +423,7 @@ Furthermore the major mode function must be autoloaded.")
|
|||
Each entry has the form (NAME RESTORE-FUNCTION).
|
||||
NAME is the name of the buffer-local variable indicating that the minor
|
||||
mode is active. RESTORE-FUNCTION is the function to activate the minor mode.
|
||||
called. RESTORE-FUNCTION nil means don't try to restore the minor mode.
|
||||
RESTORE-FUNCTION nil means don't try to restore the minor mode.
|
||||
Only minor modes for which the name of the buffer-local variable
|
||||
and the name of the minor mode function are different have to be added to
|
||||
this table. See also `desktop-minor-mode-handlers'."
|
||||
|
|
|
@ -152,13 +152,11 @@
|
|||
|
||||
;;; Compatibility functions
|
||||
;;
|
||||
(if (fboundp 'frame-parameter)
|
||||
|
||||
(defalias 'dframe-frame-parameter 'frame-parameter)
|
||||
|
||||
(defun dframe-frame-parameter (frame parameter)
|
||||
"Return FRAME's PARAMETER value."
|
||||
(cdr (assoc parameter (frame-parameters frame)))))
|
||||
(defun dframe-frame-parameter (frame parameter)
|
||||
"Return FRAME's PARAMETER value."
|
||||
(if (fboundp 'frame-parameter)
|
||||
(frame-parameter frame parameter)
|
||||
(cdr (assoc parameter (frame-parameters frame))))) ; XEmacs
|
||||
|
||||
|
||||
;;; Variables
|
||||
|
@ -887,10 +885,10 @@ Must be bound to event E."
|
|||
|
||||
;;; Interactive user functions for the mouse
|
||||
;;
|
||||
(if dframe-xemacsp
|
||||
(defalias 'dframe-mouse-event-p 'button-press-event-p)
|
||||
(defun dframe-mouse-event-p (event)
|
||||
"Return t if the event is a mouse related event."
|
||||
(defun dframe-mouse-event-p (event)
|
||||
"Return t if the event is a mouse related event."
|
||||
(if (fboundp 'button-press-event-p)
|
||||
(button-press-event-p event) ; XEmacs
|
||||
(if (and (listp event)
|
||||
(member (event-basic-type event)
|
||||
'(mouse-1 mouse-2 mouse-3)))
|
||||
|
|
|
@ -1452,9 +1452,6 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
|
|||
(define-key map [menu-bar operate]
|
||||
(cons "Operate" (make-sparse-keymap "Operate")))
|
||||
|
||||
(define-key map [menu-bar operate dashes-2]
|
||||
'("--"))
|
||||
|
||||
(define-key map
|
||||
[menu-bar operate image-dired-delete-tag]
|
||||
'(menu-item "Delete Image Tag..." image-dired-delete-tag
|
||||
|
@ -2362,7 +2359,7 @@ Optional argument means return a file name relative to `default-directory'."
|
|||
|
||||
;; Deleting files
|
||||
|
||||
(defcustom dired-recursive-deletes nil ; Default only delete empty directories.
|
||||
(defcustom dired-recursive-deletes 'top ; Default only delete empty directories.
|
||||
"*Decide whether recursive deletes are allowed.
|
||||
A value of nil means no recursive deletes.
|
||||
`always' means delete recursively without asking. This is DANGEROUS!
|
||||
|
@ -2410,7 +2407,9 @@ Anything else, ask for each sub-directory."
|
|||
(defun dired-do-flagged-delete (&optional nomessage)
|
||||
"In Dired, delete the files flagged for deletion.
|
||||
If NOMESSAGE is non-nil, we don't display any message
|
||||
if there are no flagged files."
|
||||
if there are no flagged files.
|
||||
`dired-recursive-deletes' controls whether
|
||||
deletion of non-empty directories is allowed."
|
||||
(interactive)
|
||||
(let* ((dired-marker-char dired-del-marker)
|
||||
(regexp (dired-marker-regexp))
|
||||
|
@ -2426,7 +2425,9 @@ if there are no flagged files."
|
|||
(message "(No deletions requested)")))))
|
||||
|
||||
(defun dired-do-delete (&optional arg)
|
||||
"Delete all marked (or next ARG) files."
|
||||
"Delete all marked (or next ARG) files.
|
||||
`dired-recursive-deletes' controls whether
|
||||
deletion of non-empty directories is allowed."
|
||||
;; This is more consistent with the file marking feature than
|
||||
;; dired-do-flagged-delete.
|
||||
(interactive "P")
|
||||
|
@ -3206,7 +3207,7 @@ To be called first in body of `dired-sort-other', etc."
|
|||
|
||||
;;;; Drag and drop support
|
||||
|
||||
(defcustom dired-recursive-copies nil
|
||||
(defcustom dired-recursive-copies 'top
|
||||
"*Decide whether recursive copies are allowed.
|
||||
A value of nil means no recursive copies.
|
||||
`always' means copy recursively without asking.
|
||||
|
|
|
@ -98,9 +98,11 @@
|
|||
;; `obsolete' (obsolete variables and functions)
|
||||
;; `noruntime' (calls to functions only defined
|
||||
;; within `eval-when-compile')
|
||||
;; `cl-warnings' (calls to CL functions)
|
||||
;; `cl-functions' (calls to CL functions)
|
||||
;; `interactive-only' (calls to commands that are
|
||||
;; not good to call from Lisp)
|
||||
;; `make-local' (dubious calls to
|
||||
;; `make-variable-buffer-local')
|
||||
;; byte-compile-compatibility Whether the compiler should
|
||||
;; generate .elc files which can be loaded into
|
||||
;; generic emacs 18.
|
||||
|
@ -356,14 +358,16 @@ Elements of the list may be:
|
|||
cl-functions calls to runtime functions from the CL package (as
|
||||
distinguished from macros and aliases).
|
||||
interactive-only
|
||||
commands that normally shouldn't be called from Lisp code."
|
||||
commands that normally shouldn't be called from Lisp code.
|
||||
make-local calls to make-variable-buffer-local that may be incorrect."
|
||||
:group 'bytecomp
|
||||
:type `(choice (const :tag "All" t)
|
||||
(set :menu-tag "Some"
|
||||
(const free-vars) (const unresolved)
|
||||
(const callargs) (const redefine)
|
||||
(const obsolete) (const noruntime)
|
||||
(const cl-functions) (const interactive-only))))
|
||||
(const cl-functions) (const interactive-only)
|
||||
(const make-local))))
|
||||
(put 'byte-compile-warnings 'safe-local-variable 'byte-compile-warnings-safe-p)
|
||||
;;;###autoload
|
||||
(defun byte-compile-warnings-safe-p (x)
|
||||
|
@ -374,7 +378,7 @@ Elements of the list may be:
|
|||
(when (memq e '(free-vars unresolved
|
||||
callargs redefine
|
||||
obsolete noruntime
|
||||
cl-functions interactive-only))
|
||||
cl-functions interactive-only make-local))
|
||||
e))
|
||||
x)
|
||||
x))))
|
||||
|
@ -1344,7 +1348,8 @@ extra args."
|
|||
(unless byte-compile-cl-functions
|
||||
(dolist (elt load-history)
|
||||
(when (and (stringp (car elt))
|
||||
(string-match "^cl\\>" (car elt)))
|
||||
(string-match
|
||||
"^cl\\>" (file-name-nondirectory (car elt))))
|
||||
(setq byte-compile-cl-functions
|
||||
(append byte-compile-cl-functions
|
||||
(cdr elt)))))
|
||||
|
@ -3890,7 +3895,8 @@ that suppresses all warnings during execution of BODY."
|
|||
;; Warn about misuses of make-variable-buffer-local.
|
||||
(byte-defop-compiler-1 make-variable-buffer-local byte-compile-make-variable-buffer-local)
|
||||
(defun byte-compile-make-variable-buffer-local (form)
|
||||
(if (eq (car-safe (car-safe (cdr-safe form))) 'quote)
|
||||
(if (and (eq (car-safe (car-safe (cdr-safe form))) 'quote)
|
||||
(memq 'make-local byte-compile-warnings))
|
||||
(byte-compile-warn
|
||||
"`make-variable-buffer-local' should be called at toplevel"))
|
||||
(byte-compile-normal-call form))
|
||||
|
|
|
@ -263,7 +263,7 @@ system. Possible values are:
|
|||
(const t)))
|
||||
|
||||
(defvar checkdoc-ispell-lisp-words
|
||||
'("alist" "emacs" "etags" "iff" "keymap" "paren" "regexp" "sexp" "xemacs")
|
||||
'("alist" "emacs" "etags" "keymap" "paren" "regexp" "sexp" "xemacs")
|
||||
"List of words that are correct when spell-checking Lisp documentation.")
|
||||
|
||||
(defcustom checkdoc-max-keyref-before-warn 10
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2007-06-06 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* erc.el (erc-show-channel-key-p, erc-startup-file-list):
|
||||
Fix typo in docstring.
|
||||
|
||||
2007-04-01 Michael Olson <mwolson@gnu.org>
|
||||
|
||||
* erc.el (erc-version-string): Release ERC 5.2.
|
||||
|
|
|
@ -842,7 +842,7 @@ See `erc-server-flood-margin' for other flood-related parameters.")
|
|||
The first existent and readable one will get executed.
|
||||
|
||||
If the filename ends with `.el' it is presumed to be an Emacs Lisp
|
||||
script and it gets (load)ed. Otherwise is is treated as a bunch of
|
||||
script and it gets (load)ed. Otherwise it is treated as a bunch of
|
||||
regular IRC commands."
|
||||
:group 'erc-scripts
|
||||
:type '(repeat file))
|
||||
|
@ -5756,7 +5756,7 @@ Otherwise, use the `erc-header-line' face."
|
|||
(function :tag "Call a function")))
|
||||
|
||||
(defcustom erc-show-channel-key-p t
|
||||
"Show the the channel key in the header line."
|
||||
"Show the channel key in the header line."
|
||||
:group 'erc-paranoia
|
||||
:type 'boolean)
|
||||
|
||||
|
|
|
@ -292,11 +292,12 @@ Value is FACE."
|
|||
|
||||
(defun face-id (face &optional frame)
|
||||
"Return the internal ID of face with name FACE.
|
||||
If FACE is a face-alias, return the ID of the target face.
|
||||
The optional argument FRAME is ignored, since the internal face ID
|
||||
of a face name is the same for all frames."
|
||||
(check-face face)
|
||||
(get face 'face))
|
||||
|
||||
(or (get face 'face)
|
||||
(face-id (get face 'face-alias))))
|
||||
|
||||
(defun face-equal (face1 face2 &optional frame)
|
||||
"Non-nil if faces FACE1 and FACE2 are equal.
|
||||
|
|
|
@ -1924,7 +1924,7 @@ since only a single case-insensitive search through the alist is made."
|
|||
("\\.[sS]\\'" . asm-mode)
|
||||
("\\.asm\\'" . asm-mode)
|
||||
("[cC]hange\\.?[lL]og?\\'" . change-log-mode)
|
||||
("[cC]hange[lL]og[-.][-0-9a-z]+\\'" . change-log-mode)
|
||||
("[cC]hange[lL]og[-.][0-9]+\\'" . change-log-mode)
|
||||
("\\$CHANGE_LOG\\$\\.TXT" . change-log-mode)
|
||||
("\\.scm\\.[0-9]*\\'" . scheme-mode)
|
||||
("\\.[ck]?sh\\'\\|\\.shar\\'\\|/\\.z?profile\\'" . sh-mode)
|
||||
|
@ -2012,6 +2012,9 @@ since only a single case-insensitive search through the alist is made."
|
|||
("[/.]c\\(?:on\\)?f\\(?:i?g\\)?\\(?:\\.[a-zA-Z0-9._-]+\\)?\\'" . conf-mode)
|
||||
("\\`/etc/\\(?:DIR_COLORS\\|ethers\\|.?fstab\\|.*hosts\\|lesskey\\|login\\.?de\\(?:fs\\|vperm\\)\\|magic\\|mtab\\|pam\\.d/.*\\|permissions\\(?:\\.d/.+\\)?\\|protocols\\|rpc\\|services\\)\\'" . conf-space-mode)
|
||||
("\\`/etc/\\(?:acpid?/.+\\|aliases\\(?:\\.d/.+\\)?\\|default/.+\\|group-?\\|hosts\\..+\\|inittab\\|ksysguarddrc\\|opera6rc\\|passwd-?\\|shadow-?\\|sysconfig/.+\\)\\'" . conf-mode)
|
||||
;; ChangeLog.old etc. Other change-log-mode entries are above;
|
||||
;; this has lower priority to avoid matching changelog.sgml etc.
|
||||
("[cC]hange[lL]og[-.][-0-9a-z]+\\'" . change-log-mode)
|
||||
;; either user's dot-files or under /etc or some such
|
||||
("/\\.?\\(?:gnokiirc\\|kde.*rc\\|mime\\.types\\|wgetrc\\)\\'" . conf-mode)
|
||||
;; alas not all ~/.*rc files are like this
|
||||
|
@ -4389,6 +4392,14 @@ This command is used in the special Dired buffer created by
|
|||
(message "No files can be recovered from this session now")))
|
||||
(kill-buffer buffer))))
|
||||
|
||||
(defun kill-buffer-ask (buffer)
|
||||
"Kill buffer if confirmed."
|
||||
(when (yes-or-no-p
|
||||
(format "Buffer %s %s. Kill? " (buffer-name buffer)
|
||||
(if (buffer-modified-p buffer)
|
||||
"HAS BEEN EDITED" "is unmodified")))
|
||||
(kill-buffer buffer)))
|
||||
|
||||
(defun kill-some-buffers (&optional list)
|
||||
"Kill some buffers. Asks the user whether to kill each one of them.
|
||||
Non-interactively, if optional argument LIST is non-nil, it
|
||||
|
@ -4403,13 +4414,20 @@ specifies the list of buffers to kill, asking for approval for each one."
|
|||
; if we killed the base buffer.
|
||||
(not (string-equal name ""))
|
||||
(/= (aref name 0) ?\s)
|
||||
(yes-or-no-p
|
||||
(format "Buffer %s %s. Kill? "
|
||||
name
|
||||
(if (buffer-modified-p buffer)
|
||||
"HAS BEEN EDITED" "is unmodified")))
|
||||
(kill-buffer buffer)))
|
||||
(kill-buffer-ask buffer)))
|
||||
(setq list (cdr list))))
|
||||
|
||||
(defun kill-matching-buffers (regexp &optional internal-too)
|
||||
"Kill buffers whose name matches the specified regexp.
|
||||
The optional second argument indicates whether to kill internal buffers too."
|
||||
(interactive "sKill buffers matching this regular expression: \nP")
|
||||
(dolist (buffer (buffer-list))
|
||||
(let ((name (buffer-name buffer)))
|
||||
(when (and name (not (string-equal name ""))
|
||||
(or internal-too (/= (aref name 0) ?\s))
|
||||
(string-match regexp name))
|
||||
(kill-buffer-ask buffer)))))
|
||||
|
||||
|
||||
(defun auto-save-mode (arg)
|
||||
"Toggle auto-saving of contents of current buffer.
|
||||
|
|
|
@ -1,3 +1,34 @@
|
|||
2007-06-08 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||
|
||||
* gnus-ems.el (gnus-x-splash): Make it work.
|
||||
|
||||
* gnus-start.el (gnus-1): Relax restrictions that prevent gnus-x-splash
|
||||
from being used.
|
||||
|
||||
* gnus-art.el (gnus-article-summary-command-nosave): Correct the order
|
||||
of the arguments passed to pop-to-buffer.
|
||||
(gnus-article-read-summary-keys): Ditto.
|
||||
|
||||
2007-06-07 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* gnus-art.el (gnus-split-methods): Fix typo in docstring.
|
||||
|
||||
2007-06-06 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* gnus-diary.el (gnus-diary-time-format, gnus-summary-sort-by-schedule):
|
||||
* gnus-sum.el (gnus-summary-highlight):
|
||||
* mail-source.el (mail-source-delete-old-incoming-confirm):
|
||||
* nndiary.el (nndiary-reminders): Fix typos in docstrings.
|
||||
|
||||
2007-06-04 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||
|
||||
* gnus-art.el (gnus-mime-view-part-externally)
|
||||
(gnus-mime-view-part-internally): Fix predicate function passed to
|
||||
completing-read.
|
||||
|
||||
* mm-decode.el (mm-image-fit-p): Return t if argument is not an image;
|
||||
return t if image size is just the same as window size.
|
||||
|
||||
2007-05-28 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||
|
||||
* message.el (message-pop-to-buffer): Add switch-function argument.
|
||||
|
@ -355,7 +386,7 @@
|
|||
(message-simplify-subject): New function to remove duplicate code.
|
||||
(message-reply, message-followup): Use it.
|
||||
(message-simplify-subject-functions): New variable.
|
||||
(message-strip-subject-encoded-words): New function
|
||||
(message-strip-subject-encoded-words): New function.
|
||||
|
||||
2006-11-08 Wolfgang Jenkner <wjenkner@inode.at> (tiny change)
|
||||
|
||||
|
@ -1195,8 +1226,7 @@
|
|||
* mm-view.el (mm-fill-flowed): New variable.
|
||||
(mm-inline-text): Use it.
|
||||
|
||||
2006-02-21 Wolfram Fenske <wolfram.fenske@student.uni-magdeburg.de>
|
||||
(tiny change)
|
||||
2006-02-21 Wolfram Fenske <wolfram.fenske@student.uni-magdeburg.de> (tiny change)
|
||||
|
||||
* nnimap.el (nnimap-request-move-article): Change folder back to
|
||||
source group before deleting.
|
||||
|
@ -1758,7 +1788,7 @@
|
|||
(pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional 'passphrase'
|
||||
argument to all these routines, so the passphrase can be managed
|
||||
externally and passed in to the system.
|
||||
(pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache
|
||||
(pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache
|
||||
function.
|
||||
|
||||
2005-10-29 Ken Manheimer <ken.manheimer@gmail.com>
|
||||
|
@ -3633,7 +3663,7 @@
|
|||
* nnmail.el (nnmail-split-fancy-with-parent-ignore-groups)
|
||||
(nnmail-cache-ignore-groups, nnmail-spool-hook)
|
||||
(nnmail-split-fancy-match-partial-words)
|
||||
(nnmail-split-lowercase-expanded):
|
||||
(nnmail-split-lowercase-expanded): Add :version.
|
||||
|
||||
* nndiary.el (nndiary): Add :version.
|
||||
|
||||
|
@ -3909,7 +3939,7 @@
|
|||
* gnus-int.el (gnus-request-delete-group):
|
||||
Use gnus-cache-delete-group and gnus-agent-delete-group to keep the
|
||||
local disk in sync with the server.
|
||||
(gnus-request-rename-group):
|
||||
(gnus-request-rename-group):
|
||||
Use gnus-cache-rename-group and gnus-agent-rename-group to keep the
|
||||
local disk in sync with the server.
|
||||
|
||||
|
@ -4036,7 +4066,7 @@
|
|||
|
||||
* gnus-sum.el (gnus-select-newgroup): Replace inline code with
|
||||
gnus-agent-possibly-alter-active.
|
||||
(gnus-adjust-marked-articles): Faster handling of simple lists
|
||||
(gnus-adjust-marked-articles): Faster handling of simple lists.
|
||||
|
||||
2004-10-18 David Edmondson <dme@dme.org>
|
||||
|
||||
|
@ -4179,7 +4209,7 @@
|
|||
|
||||
* gnus-fun.el: Require gnus-ems and gnus-util.
|
||||
|
||||
* gnus-diary.el (gnus-diary-header-schedule): caddr -> car (cddr
|
||||
* gnus-diary.el (gnus-diary-header-schedule): caddr -> car (cddr).
|
||||
|
||||
* gnus-art.el (gnus-article-edit-mode): Define before first reference.
|
||||
|
||||
|
@ -4262,6 +4292,7 @@
|
|||
|
||||
* nnmail.el (nnmail-fancy-expiry-targets)
|
||||
(nnmail-mail-splitting-charset, nnmail-mail-splitting-decodes):
|
||||
Add :version.
|
||||
|
||||
* nnimap.el (nnimap-split-download-body, nnimap-dont-close)
|
||||
(nnimap-retrieve-groups-asynchronous): Add :version.
|
||||
|
@ -4270,7 +4301,7 @@
|
|||
* mml.el (mml-content-disposition-parameters)
|
||||
(mml-insert-mime-headers-always): Add :version.
|
||||
|
||||
* mm-util.el (mm-coding-system-priorities):
|
||||
* mm-util.el (mm-coding-system-priorities): Add :version.
|
||||
|
||||
* mm-decode.el (mm-inline-text-html-with-images)
|
||||
(mm-keep-viewer-alive-types, mm-external-terminal-program)
|
||||
|
@ -4327,7 +4358,7 @@
|
|||
* gnus-srvr.el (gnus-server-browse-in-group-buffer)
|
||||
(gnus-server-offline-face): Add :version.
|
||||
|
||||
* gnus-score.el (gnus-adaptive-word-length-limit):
|
||||
* gnus-score.el (gnus-adaptive-word-length-limit): Add :version.
|
||||
|
||||
* gnus-msg.el (gnus-gcc-externalize-attachments)
|
||||
(gnus-debug-files, gnus-debug-exclude-variables)
|
||||
|
@ -4349,7 +4380,7 @@
|
|||
* gnus-delay.el (gnus-delay-default-hour): Add :version.
|
||||
|
||||
* gnus-cite.el (gnus-cite-blank-line-after-header)
|
||||
(gnus-article-boring-faces):
|
||||
(gnus-article-boring-faces): Add :version.
|
||||
|
||||
* gnus-art.el (gnus-buttonized-mime-types)
|
||||
(gnus-inhibit-mime-unbuttonizing)
|
||||
|
@ -4413,10 +4444,10 @@
|
|||
2004-09-10 Teodor Zlatanov <tzz@lifelogs.com>
|
||||
|
||||
* nnimap.el (nnimap-open-connection): Allow 'imaps' as a synonym
|
||||
for the 'imap' port in netrc files
|
||||
for the 'imap' port in netrc files.
|
||||
|
||||
* gnus-registry.el (gnus-registry-trim): Watch out for negatives
|
||||
in gnus-registry-trim
|
||||
in gnus-registry-trim.
|
||||
|
||||
2004-09-10 Simon Josefsson <jas@extundo.com>
|
||||
|
||||
|
|
|
@ -651,7 +651,7 @@ value is a list of possible files to save in if the match is non-nil.
|
|||
If the match is a string, it is used as a regexp match on the
|
||||
article. If the match is a symbol, that symbol will be funcalled
|
||||
from the buffer of the article to be saved with the newsgroup as the
|
||||
parameter. If it is a list, it will be evaled in the same buffer.
|
||||
parameter. If it is a list, it will be evalled in the same buffer.
|
||||
|
||||
If this form or function returns a string, this string will be used as
|
||||
a possible file name; and if it returns a non-nil list, that list will
|
||||
|
@ -4674,7 +4674,7 @@ specified charset."
|
|||
(mm-enable-external t))
|
||||
(if (not (stringp method))
|
||||
(gnus-mime-view-part-as-type
|
||||
nil (lambda (type) (stringp (mailcap-mime-info type))))
|
||||
nil (lambda (types) (stringp (mailcap-mime-info (car types)))))
|
||||
(when handle
|
||||
(if (mm-handle-undisplayer handle)
|
||||
(mm-remove-part handle)
|
||||
|
@ -4695,7 +4695,7 @@ If no internal viewer is available, use an external viewer."
|
|||
(inhibit-read-only t))
|
||||
(if (not (mm-inlinable-p handle))
|
||||
(gnus-mime-view-part-as-type
|
||||
nil (lambda (type) (mm-inlinable-p handle type)))
|
||||
nil (lambda (types) (mm-inlinable-p handle (car types))))
|
||||
(when handle
|
||||
(if (mm-handle-undisplayer handle)
|
||||
(mm-remove-part handle)
|
||||
|
@ -5607,7 +5607,7 @@ not have a face in `gnus-article-boring-faces'."
|
|||
"Execute the last keystroke in the summary buffer."
|
||||
(interactive)
|
||||
(let (func)
|
||||
(pop-to-buffer gnus-article-current-summary 'norecord)
|
||||
(pop-to-buffer gnus-article-current-summary nil 'norecord)
|
||||
(setq func (lookup-key (current-local-map) (this-command-keys)))
|
||||
(call-interactively func)))
|
||||
|
||||
|
@ -5646,7 +5646,7 @@ not have a face in `gnus-article-boring-faces'."
|
|||
(member keys nosave-in-article))
|
||||
(let (func)
|
||||
(save-window-excursion
|
||||
(pop-to-buffer gnus-article-current-summary 'norecord)
|
||||
(pop-to-buffer gnus-article-current-summary nil 'norecord)
|
||||
;; We disable the pick minor mode commands.
|
||||
(let (gnus-pick-mode)
|
||||
(setq func (lookup-key (current-local-map) keys))))
|
||||
|
@ -5658,14 +5658,14 @@ not have a face in `gnus-article-boring-faces'."
|
|||
(call-interactively func)
|
||||
(setq new-sum-point (point)))
|
||||
(when (member keys nosave-but-article)
|
||||
(pop-to-buffer gnus-article-buffer 'norecord)))
|
||||
(pop-to-buffer gnus-article-buffer nil 'norecord)))
|
||||
;; These commands should restore window configuration.
|
||||
(let ((obuf (current-buffer))
|
||||
(owin (current-window-configuration))
|
||||
(opoint (point))
|
||||
win func in-buffer selected new-sum-start new-sum-hscroll)
|
||||
(cond (not-restore-window
|
||||
(pop-to-buffer gnus-article-current-summary 'norecord))
|
||||
(pop-to-buffer gnus-article-current-summary nil 'norecord))
|
||||
((setq win (get-buffer-window gnus-article-current-summary))
|
||||
(select-window win))
|
||||
(t
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
:group 'gnus-summary-format)
|
||||
|
||||
(defcustom gnus-diary-time-format "%a, %b %e %y, %H:%M"
|
||||
"*Time format to display appointements in nndiary summary buffers.
|
||||
"*Time format to display appointments in nndiary summary buffers.
|
||||
Please refer to `format-time-string' for information on possible values."
|
||||
:type 'string
|
||||
:group 'gnus-diary)
|
||||
|
@ -224,7 +224,7 @@ There are currently two built-in format functions:
|
|||
(gnus-thread-header h2)))
|
||||
|
||||
(defun gnus-summary-sort-by-schedule (&optional reverse)
|
||||
"Sort nndiary summary buffers by schedule of appointements.
|
||||
"Sort nndiary summary buffers by schedule of appointments.
|
||||
Optional prefix (or REVERSE argument) means sort in reverse order."
|
||||
(interactive "P")
|
||||
(gnus-summary-sort 'schedule reverse))
|
||||
|
|
|
@ -172,40 +172,95 @@
|
|||
|
||||
(defun gnus-x-splash ()
|
||||
"Show a splash screen using a pixmap in the current buffer."
|
||||
(let ((dir (nnheader-find-etc-directory "gnus"))
|
||||
pixmap file height beg i)
|
||||
(save-excursion
|
||||
(switch-to-buffer (gnus-get-buffer-create gnus-group-buffer))
|
||||
(let ((buffer-read-only nil)
|
||||
width height)
|
||||
(erase-buffer)
|
||||
(when (and dir
|
||||
(file-exists-p (setq file
|
||||
(expand-file-name "x-splash" dir))))
|
||||
(let ((coding-system-for-read 'raw-text)
|
||||
default-enable-multibyte-characters)
|
||||
(with-temp-buffer
|
||||
(insert-file-contents file)
|
||||
(goto-char (point-min))
|
||||
(ignore-errors
|
||||
(setq pixmap (read (current-buffer)))))))
|
||||
(when pixmap
|
||||
(make-face 'gnus-splash)
|
||||
(setq height (/ (car pixmap) (frame-char-height))
|
||||
width (/ (cadr pixmap) (frame-char-width)))
|
||||
(set-face-foreground 'gnus-splash "Brown")
|
||||
(set-face-stipple 'gnus-splash pixmap)
|
||||
(insert-char ?\n (* (/ (window-height) 2 height) height))
|
||||
(setq i height)
|
||||
(while (> i 0)
|
||||
(insert-char ?\ (* (/ (window-width) 2 width) width))
|
||||
(setq beg (point))
|
||||
(insert-char ?\ width)
|
||||
(set-text-properties beg (point) '(face gnus-splash))
|
||||
(insert ?\n)
|
||||
(decf i))
|
||||
(goto-char (point-min))
|
||||
(sit-for 0))))))
|
||||
(interactive)
|
||||
(unless window-system
|
||||
(error "`gnus-x-splash' requires running on the window system"))
|
||||
(switch-to-buffer (gnus-get-buffer-create (if (or (gnus-alive-p)
|
||||
(interactive-p))
|
||||
"*gnus-x-splash*"
|
||||
gnus-group-buffer)))
|
||||
(let ((inhibit-read-only nil)
|
||||
(file (nnheader-find-etc-directory "images/gnus/x-splash" t))
|
||||
pixmap fcw fch width height fringes sbars left yoffset top ls)
|
||||
(erase-buffer)
|
||||
(when (and file
|
||||
(ignore-errors
|
||||
(let ((coding-system-for-read 'raw-text)
|
||||
default-enable-multibyte-characters)
|
||||
(with-temp-buffer
|
||||
(insert-file-contents file)
|
||||
(goto-char (point-min))
|
||||
(setq pixmap (read (current-buffer)))))))
|
||||
(setq fcw (float (frame-char-width))
|
||||
fch (float (frame-char-height))
|
||||
width (/ (car pixmap) fcw)
|
||||
height (/ (cadr pixmap) fch)
|
||||
fringes (if (fboundp 'window-fringes)
|
||||
(eval '(window-fringes))
|
||||
'(10 11 nil))
|
||||
sbars (frame-parameter nil 'vertical-scroll-bars))
|
||||
(cond ((eq sbars 'right)
|
||||
(setq sbars
|
||||
(cons 0 (/ (or (frame-parameter nil 'scroll-bar-width) 14)
|
||||
fcw))))
|
||||
(sbars
|
||||
(setq sbars
|
||||
(cons (/ (or (frame-parameter nil 'scroll-bar-width) 14)
|
||||
fcw)
|
||||
0))))
|
||||
(setq left (- (* (round (/ (1- (/ (+ (window-width)
|
||||
(car sbars) (cdr sbars)
|
||||
(/ (+ (or (car fringes) 0)
|
||||
(or (cadr fringes) 0))
|
||||
fcw))
|
||||
width))
|
||||
2))
|
||||
width)
|
||||
(car sbars)
|
||||
(/ (or (car fringes) 0) fcw))
|
||||
yoffset (cadr (window-edges))
|
||||
top (max 0 (- (* (max (if (and tool-bar-mode
|
||||
(not (featurep 'gtk))
|
||||
(eq (frame-first-window)
|
||||
(selected-window)))
|
||||
1 0)
|
||||
(round (/ (1- (/ (+ (1- (window-height))
|
||||
(* 2 yoffset))
|
||||
height))
|
||||
2)))
|
||||
height)
|
||||
yoffset))
|
||||
ls (/ (or line-spacing 0) fch)
|
||||
height (max 0 (- height ls)))
|
||||
(cond ((>= (- top ls) 1)
|
||||
(insert
|
||||
(propertize
|
||||
" "
|
||||
'display `(space :width 0 :ascent 100))
|
||||
"\n"
|
||||
(propertize
|
||||
" "
|
||||
'display `(space :width 0 :height ,(- top ls 1) :ascent 100))
|
||||
"\n"))
|
||||
((> (- top ls) 0)
|
||||
(insert
|
||||
(propertize
|
||||
" "
|
||||
'display `(space :width 0 :height ,(- top ls) :ascent 100))
|
||||
"\n")))
|
||||
(if (and (> width 0) (> left 0))
|
||||
(insert (propertize
|
||||
" "
|
||||
'display `(space :width ,left :height ,height :ascent 0)))
|
||||
(setq width (+ width left)))
|
||||
(when (> width 0)
|
||||
(insert (propertize
|
||||
" "
|
||||
'display `(space :width ,width :height ,height :ascent 0)
|
||||
'face `(gnus-splash :stipple ,pixmap))))
|
||||
(goto-char (if (<= (- top ls) 0) (1- (point)) (point-min)))
|
||||
(redraw-frame (selected-frame))
|
||||
(sit-for 0))))
|
||||
|
||||
;;; Image functions.
|
||||
|
||||
|
|
|
@ -760,8 +760,7 @@ prompt the user for the name of an NNTP server to use."
|
|||
(cond
|
||||
((featurep 'xemacs)
|
||||
(gnus-xmas-splash))
|
||||
((and window-system
|
||||
(= (frame-height) (1+ (window-height))))
|
||||
(window-system
|
||||
(gnus-x-splash))))
|
||||
|
||||
(let ((level (and (numberp arg) (> arg 0) arg))
|
||||
|
|
|
@ -973,14 +973,14 @@ automatically when it is selected."
|
|||
. gnus-summary-normal-read))
|
||||
"*Controls the highlighting of summary buffer lines.
|
||||
|
||||
A list of (FORM . FACE) pairs. When deciding how a a particular
|
||||
A list of (FORM . FACE) pairs. When deciding how a particular
|
||||
summary line should be displayed, each form is evaluated. The content
|
||||
of the face field after the first true form is used. You can change
|
||||
how those summary lines are displayed, by editing the face field.
|
||||
|
||||
You can use the following variables in the FORM field.
|
||||
|
||||
score: The article's score
|
||||
score: The article's score.
|
||||
default: The default article score.
|
||||
default-high: The default score for high scored articles.
|
||||
default-low: The default score for low scored articles.
|
||||
|
|
|
@ -284,7 +284,7 @@ files older than number of days."
|
|||
(integer :tag "days")))
|
||||
|
||||
(defcustom mail-source-delete-old-incoming-confirm t
|
||||
"*If non-nil, ask for for confirmation before deleting old incoming files.
|
||||
"*If non-nil, ask for confirmation before deleting old incoming files.
|
||||
This variable only applies when `mail-source-delete-incoming' is a positive
|
||||
number."
|
||||
:version "22.1"
|
||||
|
|
|
@ -1371,18 +1371,19 @@ be determined."
|
|||
(defun mm-image-fit-p (handle)
|
||||
"Say whether the image in HANDLE will fit the current window."
|
||||
(let ((image (mm-get-image handle)))
|
||||
(if (fboundp 'glyph-width)
|
||||
;; XEmacs' glyphs can actually tell us about their width, so
|
||||
;; lets be nice and smart about them.
|
||||
(or mm-inline-large-images
|
||||
(and (< (glyph-width image) (window-pixel-width))
|
||||
(< (glyph-height image) (window-pixel-height))))
|
||||
(let* ((size (image-size image))
|
||||
(w (car size))
|
||||
(h (cdr size)))
|
||||
(or mm-inline-large-images
|
||||
(and (< h (1- (window-height))) ; Don't include mode line.
|
||||
(< w (window-width))))))))
|
||||
(or (not image)
|
||||
(if (fboundp 'glyph-width)
|
||||
;; XEmacs' glyphs can actually tell us about their width, so
|
||||
;; lets be nice and smart about them.
|
||||
(or mm-inline-large-images
|
||||
(and (<= (glyph-width image) (window-pixel-width))
|
||||
(<= (glyph-height image) (window-pixel-height))))
|
||||
(let* ((size (image-size image))
|
||||
(w (car size))
|
||||
(h (cdr size)))
|
||||
(or mm-inline-large-images
|
||||
(and (<= h (1- (window-height))) ; Don't include mode line.
|
||||
(<= w (window-width)))))))))
|
||||
|
||||
(defun mm-valid-image-format-p (format)
|
||||
"Say whether FORMAT can be displayed natively by Emacs."
|
||||
|
|
|
@ -131,7 +131,7 @@ non-nil."
|
|||
|
||||
|
||||
(defcustom nndiary-reminders '((0 . day))
|
||||
"*Different times when you want to be reminded of your appointements.
|
||||
"*Different times when you want to be reminded of your appointments.
|
||||
Diary articles will appear again, as if they'd been just received.
|
||||
|
||||
Entries look like (3 . day) which means something like \"Please
|
||||
|
@ -145,7 +145,7 @@ not 'century, sorry).
|
|||
NOTE: the units of measure actually express dates, not durations: if you
|
||||
use 'week, messages will pop up on Sundays at 00:00 (or Mondays if
|
||||
`nndiary-week-starts-on-monday' is non-nil) and *not* 7 days before the
|
||||
appointement, if you use 'month, messages will pop up on the first day of
|
||||
appointment, if you use 'month, messages will pop up on the first day of
|
||||
each months, at 00:00 and so on.
|
||||
|
||||
If you really want to specify a duration (like 24 hours exactly), you can
|
||||
|
@ -155,15 +155,15 @@ scheme might appear somewhat weird at a first glance, it is very powerful.
|
|||
In order to make this clear, here are some examples:
|
||||
|
||||
- '(0 . day): this is the default value of `nndiary-reminders'. It means
|
||||
pop up the appointements of the day each morning at 00:00.
|
||||
pop up the appointments of the day each morning at 00:00.
|
||||
|
||||
- '(1 . day): this means pop up the appointements the day before, at 00:00.
|
||||
- '(1 . day): this means pop up the appointments the day before, at 00:00.
|
||||
|
||||
- '(6 . hour): for an appointement at 18:30, this would pop up the
|
||||
appointement message at 12:00.
|
||||
- '(6 . hour): for an appointment at 18:30, this would pop up the
|
||||
appointment message at 12:00.
|
||||
|
||||
- '(360 . minute): for an appointement at 18:30 and 15 seconds, this would
|
||||
pop up the appointement message at 12:30."
|
||||
- '(360 . minute): for an appointment at 18:30 and 15 seconds, this would
|
||||
pop up the appointment message at 12:30."
|
||||
:group 'nndiary
|
||||
:type '(repeat (cons :format "%v\n"
|
||||
(integer :format "%v")
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
|
||||
(define-key help-mode-map [mouse-2] 'help-follow-mouse)
|
||||
(define-key help-mode-map "\C-c\C-b" 'help-go-back)
|
||||
(define-key help-mode-map "\C-c\C-f" 'help-go-forward)
|
||||
(define-key help-mode-map "\C-c\C-c" 'help-follow-symbol)
|
||||
;; Documentation only, since we use minor-mode-overriding-map-alist.
|
||||
(define-key help-mode-map "\r" 'help-follow)
|
||||
|
@ -52,13 +53,28 @@ To use the element, do (apply FUNCTION ARGS) then goto the point.")
|
|||
(put 'help-xref-stack 'permanent-local t)
|
||||
(make-variable-buffer-local 'help-xref-stack)
|
||||
|
||||
(defvar help-xref-forward-stack nil
|
||||
"The stack of used to navigate help forwards after using the back button.
|
||||
Used by `help-follow' and `help-xref-go-forward'.
|
||||
An element looks like (POSITION FUNCTION ARGS...).
|
||||
To use the element, do (apply FUNCTION ARGS) then goto the point.")
|
||||
(put 'help-xref-forward-stack 'permanent-local t)
|
||||
(make-variable-buffer-local 'help-xref-forward-stack)
|
||||
|
||||
(defvar help-xref-stack-item nil
|
||||
"An item for `help-follow' in this buffer to push onto `help-xref-stack'.
|
||||
The format is (FUNCTION ARGS...).")
|
||||
(put 'help-xref-stack-item 'permanent-local t)
|
||||
(make-variable-buffer-local 'help-xref-stack-item)
|
||||
|
||||
(defvar help-xref-stack-forward-item nil
|
||||
"An item for `help-go-back' to push onto `help-xref-forward-stack'.
|
||||
The format is (FUNCTION ARGS...).")
|
||||
(put 'help-xref-stack-forward-item 'permanent-local t)
|
||||
(make-variable-buffer-local 'help-xref-stack-forward-item)
|
||||
|
||||
(setq-default help-xref-stack nil help-xref-stack-item nil)
|
||||
(setq-default help-xref-forward-stack nil help-xref-forward-stack-item nil)
|
||||
|
||||
(defcustom help-mode-hook nil
|
||||
"Hook run by `help-mode'."
|
||||
|
@ -123,6 +139,11 @@ The format is (FUNCTION ARGS...).")
|
|||
'help-function #'help-xref-go-back
|
||||
'help-echo (purecopy "mouse-2, RET: go back to previous help buffer"))
|
||||
|
||||
(define-button-type 'help-forward
|
||||
:supertype 'help-xref
|
||||
'help-function #'help-xref-go-forward
|
||||
'help-echo (purecopy "mouse-2, RET: move forward to next help buffer"))
|
||||
|
||||
(define-button-type 'help-info
|
||||
:supertype 'help-xref
|
||||
'help-function #'info
|
||||
|
@ -242,6 +263,9 @@ Commands:
|
|||
(defvar help-back-label (purecopy "[back]")
|
||||
"Label to use by `help-make-xrefs' for the go-back reference.")
|
||||
|
||||
(defvar help-forward-label (purecopy "[forward]")
|
||||
"Label to use by `help-make-xrefs' for the go-forward reference.")
|
||||
|
||||
(defconst help-xref-symbol-regexp
|
||||
(purecopy (concat "\\(\\<\\(\\(variable\\|option\\)\\|" ; Link to var
|
||||
"\\(function\\|command\\)\\|" ; Link to function
|
||||
|
@ -286,7 +310,8 @@ because we want to record the \"previous\" position of point so we can
|
|||
restore it properly when going back."
|
||||
(with-current-buffer (help-buffer)
|
||||
(when help-xref-stack-item
|
||||
(push (cons (point) help-xref-stack-item) help-xref-stack))
|
||||
(push (cons (point) help-xref-stack-item) help-xref-stack)
|
||||
(setq help-xref-forward-stack nil))
|
||||
(when interactive-p
|
||||
(let ((tail (nthcdr 10 help-xref-stack)))
|
||||
;; Truncate the stack.
|
||||
|
@ -480,6 +505,11 @@ that."
|
|||
(insert "\n")
|
||||
(help-insert-xref-button help-back-label 'help-back
|
||||
(current-buffer))
|
||||
(insert "\t"))
|
||||
;; Make a forward-reference in this buffer if appropriate.
|
||||
(when help-xref-forward-stack
|
||||
(help-insert-xref-button help-forward-label 'help-forward
|
||||
(current-buffer))
|
||||
(insert "\n")))
|
||||
;; View mode steals RET from us.
|
||||
(set (make-local-variable 'minor-mode-overriding-map-alist)
|
||||
|
@ -598,6 +628,7 @@ help buffer."
|
|||
"From BUFFER, go back to previous help buffer text using `help-xref-stack'."
|
||||
(let (item position method args)
|
||||
(with-current-buffer buffer
|
||||
(push (cons (point) help-xref-stack-item) help-xref-forward-stack)
|
||||
(when help-xref-stack
|
||||
(setq item (pop help-xref-stack)
|
||||
;; Clear the current item so that it won't get pushed
|
||||
|
@ -613,12 +644,39 @@ help buffer."
|
|||
(set-window-point (get-buffer-window buffer) position)
|
||||
(goto-char position)))))
|
||||
|
||||
(defun help-xref-go-forward (buffer)
|
||||
"From BUFFER, go forward to next help buffer."
|
||||
(let (item position method args)
|
||||
(with-current-buffer buffer
|
||||
(push (cons (point) help-xref-stack-item) help-xref-stack)
|
||||
(when help-xref-forward-stack
|
||||
(setq item (pop help-xref-forward-stack)
|
||||
;; Clear the current item so that it won't get pushed
|
||||
;; by the function we're about to call. TODO: We could also
|
||||
;; push it onto a "forward" stack and add a `forw' button.
|
||||
help-xref-stack-item nil
|
||||
position (car item)
|
||||
method (cadr item)
|
||||
args (cddr item))))
|
||||
(apply method args)
|
||||
(with-current-buffer buffer
|
||||
(if (get-buffer-window buffer)
|
||||
(set-window-point (get-buffer-window buffer) position)
|
||||
(goto-char position)))))
|
||||
|
||||
(defun help-go-back ()
|
||||
"Go back to previous topic in this help buffer."
|
||||
(interactive)
|
||||
(if help-xref-stack
|
||||
(help-xref-go-back (current-buffer))
|
||||
(error "No previous help buffer")))
|
||||
|
||||
(defun help-go-forward ()
|
||||
"Go back to next topic in this help buffer."
|
||||
(interactive)
|
||||
(if help-xref-forward-stack
|
||||
(help-xref-go-forward (current-buffer))
|
||||
(error "No next help buffer")))
|
||||
|
||||
(defun help-do-xref (pos function args)
|
||||
"Call the help cross-reference function FUNCTION with args ARGS.
|
||||
|
|
1343
lisp/ldefs-boot.el
1343
lisp/ldefs-boot.el
File diff suppressed because it is too large
Load diff
|
@ -368,10 +368,10 @@ Hard newlines are left intact."
|
|||
With optional argument ARG, turn on line wrapping if and only if ARG is positive.
|
||||
If automatic line wrapping is turned on, wrap the entire buffer."
|
||||
(interactive "P")
|
||||
(and (null arg)
|
||||
(null longlines-auto-wrap)
|
||||
(setq arg 1))
|
||||
(if (> (prefix-numeric-value arg) 0)
|
||||
(setq arg (if arg
|
||||
(> (prefix-numeric-value arg) 0)
|
||||
(not longlines-auto-wrap)))
|
||||
(if arg
|
||||
(let ((mod (buffer-modified-p)))
|
||||
(setq longlines-auto-wrap t)
|
||||
(longlines-wrap-region (point-min) (point-max))
|
||||
|
|
|
@ -228,7 +228,7 @@ Otherwise, look for `movemail' in the directories in
|
|||
`emacs' Means any implementation, compatible with the native Emacs one.
|
||||
This is the default;
|
||||
`mailutils' Means GNU mailutils implementation, capable of handling full
|
||||
mail URLs as the source mailbox;")
|
||||
mail URLs as the source mailbox.")
|
||||
|
||||
;;;###autoload
|
||||
(defun rmail-movemail-variant-p (&rest variants)
|
||||
|
|
|
@ -854,6 +854,15 @@ Search, the `unseen' attribute is restored.")
|
|||
(set-buffer rmail-buffer)
|
||||
(rmail-show-message msg-num t))))))
|
||||
(rmail-summary-update-highlight nil)))))
|
||||
|
||||
(defun rmail-summary-save-buffer ()
|
||||
"Save the buffer associated with this RMAIL summary."
|
||||
(interactive)
|
||||
(save-window-excursion
|
||||
(save-excursion
|
||||
(switch-to-buffer rmail-buffer)
|
||||
(save-buffer))))
|
||||
|
||||
|
||||
(if rmail-summary-mode-map
|
||||
nil
|
||||
|
@ -923,6 +932,7 @@ Search, the `unseen' attribute is restored.")
|
|||
'rmail-summary-sort-by-lines)
|
||||
(define-key rmail-summary-mode-map "\C-c\C-s\C-k"
|
||||
'rmail-summary-sort-by-labels)
|
||||
(define-key rmail-summary-mode-map "\C-x\C-s" 'rmail-summary-save-buffer)
|
||||
)
|
||||
|
||||
;;; Menu bar bindings.
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2007-06-06 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* mh-mime.el (mh-mh-directive-present-p):
|
||||
* mh-search.el (mh-index-group-by-folder): Fix typos in docstrings.
|
||||
|
||||
2006-11-14 Bill Wohler <wohler@newt.com>
|
||||
|
||||
* mh-xface.el (mh-x-image-url-cache-canonicalize): Add `*' to
|
||||
|
@ -10,7 +15,7 @@
|
|||
* mh-e.el (Version, mh-version): Update for release 8.0.3.
|
||||
|
||||
* mh-e.el (mh-alias-local-users): Boolean docstrings should start
|
||||
with "Non-nil means". Perhaps this option should have a -flag
|
||||
with "Non-nil means". Perhaps this option should have a -flag
|
||||
appended.
|
||||
(mh-junk-background): Sync docstring with manual.
|
||||
|
||||
|
@ -62,7 +67,7 @@
|
|||
* mh-tool-bar.el (mh-tool-bar-define): Fix XEmacs' vector-list so
|
||||
it refers to the icons in mh-xemacs-icon-map instead of trying to
|
||||
declare the icons in situ. This allows mh-tool-bar.el to be
|
||||
compiled under XEmacs. Remove initial value for
|
||||
compiled under XEmacs. Remove initial value for
|
||||
mh-tool-bar-folder-buttons, mh-tool-bar-show-buttons,
|
||||
mh-tool-bar-letter-buttons. The MH-E icons now appear in XEmacs.
|
||||
In mh-tool-bar-init, check for mh-xemacs-use-tool-bar-flag sooner.
|
||||
|
@ -133,7 +138,7 @@
|
|||
2006-04-26 Eric Ding <ericding@alum.mit.edu>
|
||||
|
||||
* mh-e.el (mh-invisible-header-fields-internal): Add entry
|
||||
"X-Provags-ID:"
|
||||
"X-Provags-ID:".
|
||||
|
||||
2006-04-25 Bill Wohler <wohler@newt.com>
|
||||
|
||||
|
@ -155,9 +160,9 @@
|
|||
|
||||
* mh-letter.el (mh-insert-letter): If a message number isn't
|
||||
given, throw an error rather than using a potentially incorrect
|
||||
message number (closes SF #1473729). In addition, use the cur
|
||||
message number (closes SF #1473729). In addition, use the cur
|
||||
message if mh-sent-from-msg is nil (when sending a message, in
|
||||
contrast to replying). Move conversion of int to string into
|
||||
contrast to replying). Move conversion of int to string into
|
||||
interactive stanza so body can assume variables are of proper
|
||||
type.
|
||||
|
||||
|
@ -177,15 +182,15 @@
|
|||
(mh-tool-bar-folder-buttons-set, mh-tool-bar-letter-buttons-set):
|
||||
Call it (closes SF #1452718).
|
||||
|
||||
* mh-folder.el (mh-folder-buttons-init-flag): Delete. Use
|
||||
* mh-folder.el (mh-folder-buttons-init-flag): Delete. Use
|
||||
mh-folder-tool-bar-map instead.
|
||||
(image-load-path): Delete. No longer used.
|
||||
(image-load-path): Delete. No longer used.
|
||||
(mh-folder-mode): Moved setting of image-load-path into
|
||||
mh-tool-bar-folder-buttons-init.
|
||||
|
||||
* mh-letter.el (mh-letter-buttons-init-flag): Delete. Use
|
||||
* mh-letter.el (mh-letter-buttons-init-flag): Delete. Use
|
||||
mh-letter-tool-bar-map instead.
|
||||
(image-load-path): Delete. No longer used.
|
||||
(image-load-path): Delete. No longer used.
|
||||
(mh-letter-mode): Moved setting of image-load-path into
|
||||
mh-tool-bar-letter-buttons-init.
|
||||
|
||||
|
@ -202,10 +207,10 @@
|
|||
* mh-e.el (defcustom-mh, defface-mh, defgroup-mh, mh-face-data)
|
||||
(mh-strip-package-version, mh-face-data, mh-inherit-face-flag)
|
||||
(mh-min-colors-defined-flag): Do not unbind these macros and
|
||||
variables. Nice idea, but too many nasty side-effects. These
|
||||
variables. Nice idea, but too many nasty side-effects. These
|
||||
macros are needed by [Cc]ustom-make-dependencies when creating the
|
||||
MH-E customization groups in mh-cus-load.el. These disappeared
|
||||
when the macros above were introduced. Besides, if a developer
|
||||
MH-E customization groups in mh-cus-load.el. These disappeared
|
||||
when the macros above were introduced. Besides, if a developer
|
||||
were to try to show the help for a macro or variable they were
|
||||
looking at and got [No match] when they did so, that would be bad.
|
||||
|
||||
|
@ -218,11 +223,11 @@
|
|||
variables and functions with the same name are found correctly by
|
||||
find-func (invoked by clicking on the filename link in the *Help*
|
||||
buffer).
|
||||
(mh-defmacro-compat): Rename to defmacro-mh. Ditto.
|
||||
(mh-defmacro-compat): Rename to defmacro-mh. Ditto.
|
||||
|
||||
* mh-e.el: (mh-defgroup): Rename to defgroup-mh. Ditto.
|
||||
(mh-defcustom): Rename to defcustom-mh. Ditto.
|
||||
(mh-defface): Rename to defface-mh. Ditto.
|
||||
* mh-e.el (mh-defgroup): Rename to defgroup-mh. Ditto.
|
||||
(mh-defcustom): Rename to defcustom-mh. Ditto.
|
||||
(mh-defface): Rename to defface-mh. Ditto.
|
||||
(mh-font-lock-add-keywords): Make changes according to these
|
||||
renamings.
|
||||
|
||||
|
@ -232,11 +237,11 @@
|
|||
* mh-utils.el (mh-sub-folders-actual): Mention that folder must
|
||||
have been processed by mh-normalize-folder-name.
|
||||
(mh-folder-completion-function): Handle completion of folders with
|
||||
absolute names. Also, when flag is t, display complete folder name
|
||||
absolute names. Also, when flag is t, display complete folder name
|
||||
to provide proper highlighting in Emacs 22 now that
|
||||
minibuffer-completing-file-name is nil (closes SF #1470518).
|
||||
(mh-folder-completing-read): No longer set
|
||||
minibuffer-completing-file-name to t. This was causing "Can't set
|
||||
minibuffer-completing-file-name to t. This was causing "Can't set
|
||||
current directory errors" when browsing absolute file names.
|
||||
Another benefit of this change is that SPC can be used for
|
||||
completion again (closes SF #1470518).
|
||||
|
@ -256,9 +261,9 @@
|
|||
|
||||
* mh-show.el (font-lock-auto-fontify): Ditto.
|
||||
|
||||
* mh-utils.el (mh-speed-flists-cache): Ditto
|
||||
* mh-utils.el (mh-speed-flists-cache): Ditto.
|
||||
|
||||
* mh-acros.el (struct, x, y): No need to wrap defvar with
|
||||
* mh-acros.el (struct, x, y): No need to wrap defvar with
|
||||
eval-when-compile when shushing compiler, even when
|
||||
mh-do-in-xemacs or another construct is used.
|
||||
|
||||
|
@ -287,7 +292,7 @@
|
|||
* mh-xface.el (default-enable-multibyte-characters): Ditto.
|
||||
|
||||
* mh-compat.el (mh-font-lock-add-keywords): New alias for
|
||||
font-lock-add-keywords. Returns nil on XEmacs.
|
||||
font-lock-add-keywords. Returns nil on XEmacs.
|
||||
|
||||
* mh-e.el: Add MH-E function and variable keywords such as
|
||||
mh-defun-compat and mh-defcustom to font-lock-keywords.
|
||||
|
@ -297,7 +302,7 @@
|
|||
* mh-e.el (customize-package-emacs-version-alist)
|
||||
(mh-e, mh-alias, mh-folder, mh-folder-selection)
|
||||
(mh-identity, mh-inc, mh-junk, mh-letter, mh-ranges)
|
||||
(mh-scan-line-formats, mh-search, mh-sending-mail, )
|
||||
(mh-scan-line-formats, mh-search, mh-sending-mail)
|
||||
(mh-sequences, mh-show, mh-speedbar, mh-thread, mh-tool-bar)
|
||||
(mh-hooks, mh-faces, mh-alias-completion-ignore-case-flag)
|
||||
(mh-alias-expand-aliases-flag, mh-alias-flash-on-comma)
|
||||
|
@ -307,7 +312,7 @@
|
|||
(mh-new-messages-folders, mh-ticked-messages-folders)
|
||||
(mh-large-folder, mh-recenter-summary-flag)
|
||||
(mh-recursive-folders-flag, mh-sortm-args)
|
||||
(mh-default-folder-for-message-function, )
|
||||
(mh-default-folder-for-message-function)
|
||||
(mh-default-folder-list, mh-default-folder-must-exist-flag)
|
||||
(mh-default-folder-prefix, mh-identity-list)
|
||||
(mh-auto-fields-list, mh-auto-fields-prompt-flag)
|
||||
|
@ -320,18 +325,18 @@
|
|||
(mh-extract-from-attribution-verb, mh-ins-buf-prefix)
|
||||
(mh-letter-complete-function, mh-letter-fill-column)
|
||||
(mh-mml-method-default, mh-signature-file-name)
|
||||
(mh-signature-separator-flag, mh-x-face-file, )
|
||||
(mh-signature-separator-flag, mh-x-face-file)
|
||||
(mh-yank-behavior, mh-interpret-number-as-range-flag)
|
||||
(mh-adaptive-cmd-note-flag, mh-scan-format-file, mh-scan-prog)
|
||||
(mh-search-program, mh-compose-forward-as-mime-flag)
|
||||
(mh-compose-letter-function, mh-compose-prompt-flag)
|
||||
(mh-forward-subject-format, mh-insert-x-mailer-flag)
|
||||
(mh-redist-full-contents-flag, mh-reply-default-reply-to)
|
||||
(mh-reply-show-message-flag, )
|
||||
(mh-reply-show-message-flag)
|
||||
(mh-refile-preserves-sequences-flag, mh-tick-seq)
|
||||
(mh-update-sequences-after-mh-show-flag)
|
||||
(mh-bury-show-buffer-flag, mh-clean-message-header-flag)
|
||||
(mh-decode-mime-flag, )
|
||||
(mh-decode-mime-flag)
|
||||
(mh-display-buttons-for-alternatives-flag)
|
||||
(mh-display-buttons-for-inline-parts-flag)
|
||||
(mh-do-not-confirm-flag, mh-fetch-x-image-url)
|
||||
|
@ -348,8 +353,7 @@
|
|||
(mh-alias-reloaded-hook, mh-before-commands-processed-hook)
|
||||
(mh-before-quit-hook, mh-before-send-letter-hook)
|
||||
(mh-delete-msg-hook, mh-find-path-hook, mh-folder-mode-hook)
|
||||
(mh-forward-hook, mh-inc-folder-hook, )
|
||||
(mh-insert-signature-hook, )
|
||||
(mh-forward-hook, mh-inc-folder-hook, mh-insert-signature-hook)
|
||||
(mh-kill-folder-suppress-prompt-hooks, mh-letter-mode-hook)
|
||||
(mh-mh-to-mime-hook, mh-search-mode-hook, mh-quit-hook)
|
||||
(mh-refile-msg-hook, mh-show-hook, mh-show-mode-hook)
|
||||
|
@ -361,7 +365,7 @@
|
|||
(mh-letter-header-field, mh-search-folder, mh-show-cc)
|
||||
(mh-show-date, mh-show-from, mh-show-header, mh-show-pgg-bad)
|
||||
(mh-show-pgg-good, mh-show-pgg-unknown, mh-show-signature)
|
||||
(mh-show-subject, mh-show-to, mh-show-xface, )
|
||||
(mh-show-subject, mh-show-to, mh-show-xface)
|
||||
(mh-speedbar-folder, mh-speedbar-folder-with-unseen-messages)
|
||||
(mh-speedbar-selected-folder)
|
||||
(mh-speedbar-selected-folder-with-unseen-messages): Use dotted
|
||||
|
@ -375,7 +379,7 @@
|
|||
2006-03-31 Bill Wohler <wohler@newt.com>
|
||||
|
||||
* mh-e.el (mh-strip-package-version): Move before use to avoid
|
||||
compiler error. Make macro, also to avoid compiler error.
|
||||
compiler error. Make macro, also to avoid compiler error.
|
||||
(mh-defface-compat): Incorporate body into mh-face-data and
|
||||
delete.
|
||||
|
||||
|
@ -474,7 +478,7 @@
|
|||
MH-Letter mode, move save-buffer and mh-fully-kill-draft icons in
|
||||
front of mh-compose-insertion to be consistent with other mailers,
|
||||
such as Evolution. In MH-Folder mode, move vanilla reply icon to
|
||||
the left of the other reply icons. Use mail/inbox icon instead of
|
||||
the left of the other reply icons. Use mail/inbox icon instead of
|
||||
mail, next-page instead of page-down, delete instead of close,
|
||||
mail/move instead of mail/refile, data-save instead of execute,
|
||||
mail/flag-for-followup instead of highlight, contact instead of
|
||||
|
@ -513,7 +517,7 @@
|
|||
2006-03-15 Bill Wohler <wohler@newt.com>
|
||||
|
||||
* mh-compat.el (mh-image-load-path-for-library): Fix example by
|
||||
not recommending that one binds image-load-path. Just defvar it to
|
||||
not recommending that one binds image-load-path. Just defvar it to
|
||||
placate compiler and only use it if previously defined.
|
||||
|
||||
* mh-e.el (image-load-path): Don't bind!
|
||||
|
@ -551,11 +555,11 @@
|
|||
2006-03-10 Bill Wohler <wohler@newt.com>
|
||||
|
||||
* mh-compat.el (mh-replace-regexp-in-string): Pass the literal
|
||||
flag to replace-in-string. This was badly needed by
|
||||
flag to replace-in-string. This was badly needed by
|
||||
mh-quote-pick-expr in order to properly quote subjects when using
|
||||
/ s on XEmacs (closes SF #1447598).
|
||||
(mh-image-load-path-for-library): Merged changes from Reiner. Add
|
||||
no-error argument. If path t, just return directory.
|
||||
(mh-image-load-path-for-library): Merged changes from Reiner. Add
|
||||
no-error argument. If path t, just return directory.
|
||||
|
||||
* mh-e.el (mh-profile-component): Drop `s' from mhparam
|
||||
-components for Mailutils compatibility (closes SF #1446985).
|
||||
|
@ -598,11 +602,11 @@
|
|||
(mh-sub-folders): Use new flag to mh-normalize-folder-name to make
|
||||
this function more robust. It could too easily list the folders in /.
|
||||
(mh-folder-list): Fix a couple of problems pointed out by Thomas
|
||||
Baumann. Set folder to nil if empty. Don't append "/" if folder nil.
|
||||
Baumann. Set folder to nil if empty. Don't append "/" if folder nil.
|
||||
|
||||
2006-03-03 Bill Wohler <wohler@newt.com>
|
||||
|
||||
* mh-folder.el (mh-folder-mode): Rename mh-image-load-path to
|
||||
* mh-folder.el (mh-folder-mode): Rename mh-image-load-path to
|
||||
mh-image-load-path-for-library.
|
||||
|
||||
* mh-letter.el (mh-letter-mode): Rename mh-image-load-path to
|
||||
|
@ -689,7 +693,7 @@
|
|||
2006-02-21 Eric Ding <ericding@alum.mit.edu>
|
||||
|
||||
* mh-e.el (mh-invisible-header-fields-internal): Add entry
|
||||
"X-Sasl-enc:"
|
||||
"X-Sasl-enc:".
|
||||
|
||||
2006-02-20 Eric Ding <ericding@alum.mit.edu>
|
||||
|
||||
|
@ -958,7 +962,7 @@
|
|||
|
||||
* mh-comp.el (mh-send-sub): Don't find components file in current
|
||||
directory--this seems to have been a side-effect of commenting out
|
||||
the use of an old mh-etc variable. Improve error message.
|
||||
the use of an old mh-etc variable. Improve error message.
|
||||
|
||||
2006-01-31 Bill Wohler <wohler@newt.com>
|
||||
|
||||
|
@ -979,7 +983,7 @@
|
|||
(mh-display-completion-list): Move here from mh-comp.el.
|
||||
(mh-face-foreground, mh-face-background): Move here from
|
||||
mh-xface.el.
|
||||
(mh-write-file-functions): Move here from mh-folder.el
|
||||
(mh-write-file-functions): Move here from mh-folder.el.
|
||||
|
||||
* mh-folder.el (mh-write-file-functions-compat): Move to
|
||||
mh-compat.el and rename to mh-write-file-functions.
|
||||
|
@ -1042,7 +1046,7 @@
|
|||
mh-adaptive-cmd-note-flag.
|
||||
|
||||
* mh-comp.el (sc-cite-original): Remove autoload of "sc" with old
|
||||
docstring. sc-cite-original is autoloaded via loaddefs.el for all
|
||||
docstring. sc-cite-original is autoloaded via loaddefs.el for all
|
||||
supported versions. In addition, the package name "sc" has been
|
||||
made obsolete by "supercite since at least Emacs 21.
|
||||
|
||||
|
@ -1323,7 +1327,7 @@
|
|||
|
||||
* mh-exec.el: Move content into mh-e.el and remove.
|
||||
|
||||
* mh-folder.el: New file. Contains mh-folder-mode from mh-e.el.
|
||||
* mh-folder.el: New file. Contains mh-folder-mode from mh-e.el.
|
||||
|
||||
* mh-funcs.el (mh-note-copied, mh-note-printed): Move to new file
|
||||
mh-scan.el.
|
||||
|
@ -1368,7 +1372,7 @@
|
|||
|
||||
* mh-print.el: Rearrange for consistency with other files.
|
||||
|
||||
* mh-scan.el: New file. Contains scan line constants and utilities
|
||||
* mh-scan.el: New file. Contains scan line constants and utilities
|
||||
from XXX, mh-funcs, mh-utils.el.
|
||||
|
||||
* mh-search.el: Rearrange for consistency with other files.
|
||||
|
@ -1565,7 +1569,7 @@
|
|||
* mh-comp.el (mh-pgp-support-flag): Move here from mh-utils.el;
|
||||
needed to help remove dependency on mh-utils.
|
||||
|
||||
* mh-exec.el: New file. Move process support routines here from
|
||||
* mh-exec.el: New file. Move process support routines here from
|
||||
mh-utils.el.
|
||||
|
||||
* mh-init.el (mh-utils): Remove require.
|
||||
|
@ -1612,7 +1616,7 @@
|
|||
(mh-kill-folder-suppress-prompt-hooks): Rename mh-index-p to
|
||||
mh-search-p.
|
||||
(mh-search-mode-hook): Change group from mh-index to mh-search.
|
||||
(mh-index-folder): Rename to mh-search-folder. Change group from
|
||||
(mh-index-folder): Rename to mh-search-folder. Change group from
|
||||
mh-index to mh-search.
|
||||
|
||||
* mh-e.el (mh-folder-font-lock-keywords): Rename mh-index-folder
|
||||
|
@ -1667,7 +1671,7 @@
|
|||
2006-01-12 Bill Wohler <wohler@newt.com>
|
||||
|
||||
* mh-search.el: New file containing contents of mh-index.el and
|
||||
mh-pick.el. C-c C-c launches your mh-index-program; C-c C-p runs
|
||||
mh-pick.el. C-c C-c launches your mh-index-program; C-c C-p runs
|
||||
pick. Pick no longer sets the "search" sequence. Instead, it
|
||||
brings up a folder view that we're accustomed to. (Closes SF
|
||||
#829207.)
|
||||
|
@ -1722,13 +1726,13 @@
|
|||
|
||||
* mh-utils.el (mh-x-image-url-cache-canonicalize): Use
|
||||
url-hexify-string to remove special characters from filenames
|
||||
(closes SF #1396499). Note that this invalidates the existing
|
||||
(closes SF #1396499). Note that this invalidates the existing
|
||||
names in your cache so you might as well remove
|
||||
~/Mail/.mhe-x-image-cache/* now.
|
||||
(url-unreserved-chars, url-hexify-string): Define if not defined.
|
||||
Copied from url-util.el in Emacs22 for Emacs 21.
|
||||
|
||||
* mh-buffers.el: New file. Contains constants and code from
|
||||
* mh-buffers.el: New file. Contains constants and code from
|
||||
mh-index.el and mh-utils.el.
|
||||
|
||||
* mh-alias.el:
|
||||
|
@ -1758,7 +1762,7 @@
|
|||
2006-01-10 Bill Wohler <wohler@newt.com>
|
||||
|
||||
* mh-comp.el (mh-insert-letter): If you choose a different folder,
|
||||
the cur message is used. Sync docstring with manual (closes SF
|
||||
the cur message is used. Sync docstring with manual (closes SF
|
||||
#1205890).
|
||||
|
||||
* mh-mime.el (mh-compose-forward): Use standard range argument
|
||||
|
@ -1776,7 +1780,7 @@
|
|||
use function mh-variants instead.
|
||||
(mh-variant-info, mh-variant-mh-info, mh-variant-mu-mh-info)
|
||||
(mh-variant-nmh-info): Co-locate next to mh-variants, which uses
|
||||
them. Updated to use mh-file-command-p which is more accurrate
|
||||
them. Updated to use mh-file-command-p which is more accurrate
|
||||
than file-executable-p which returns t for directories.
|
||||
(mh-file-command-p): Move here from mh-utils, since
|
||||
mh-variant-*-info are the only functions to use it.
|
||||
|
@ -1962,8 +1966,8 @@
|
|||
|
||||
* mh-customize.el (mh-folder-msg-number): Snow is actually
|
||||
off-white on low color displays which turns to white when bold.
|
||||
This is unreadable on white backgrounds. Use snow with min-colors
|
||||
requirement. Use cyan on low-color displays.
|
||||
This is unreadable on white backgrounds. Use snow with min-colors
|
||||
requirement. Use cyan on low-color displays.
|
||||
|
||||
* mh-init.el (mh-defface-compat): On low-color displays, delete
|
||||
the high-color display rather than simply strip the min-colors
|
||||
|
@ -1976,13 +1980,13 @@
|
|||
2006-01-02 Bill Wohler <wohler@newt.com>
|
||||
|
||||
* mh-alias.el (mh-alias-grab-from-field): Remove leading * from
|
||||
docstring. Does this mean something in a defun?
|
||||
docstring. Does this mean something in a defun?
|
||||
|
||||
* mh-customize.el (bw-new-face-to-old, bw-old-face-to-new):
|
||||
Checkdoc fix.
|
||||
|
||||
* mh-e.el (mh-inc-folder): Rename maildrop-name argument to file
|
||||
so it reads better in docstring and manual. Sync docstring with
|
||||
so it reads better in docstring and manual. Sync docstring with
|
||||
manual.
|
||||
|
||||
* mh-init.el (mh-defface-compat): Remove trailing space (checkdoc).
|
||||
|
@ -2004,7 +2008,7 @@
|
|||
* mh-e.el (mh-refile-or-write-again, mh-toggle-showing): Ditto.
|
||||
|
||||
* mh-funcs.el (mh-pipe-msg, mh-sort-folder, mh-undo-folder)
|
||||
(mh-store-msg, mh-store-buffer): Ditto
|
||||
(mh-store-msg, mh-store-buffer): Ditto.
|
||||
|
||||
* mh-index.el (mh-index-search, mh-index-do-search)
|
||||
(mh-index-next-folder, mh-index-sequenced-messages): Ditto.
|
||||
|
@ -2014,7 +2018,7 @@
|
|||
* mh-mime.el (mh-mh-compose-external-compressed-tar)
|
||||
(mh-mh-compose-external-type, mh-mh-to-mime, mh-mh-to-mime-undo)
|
||||
(mh-mml-secure-message-sign, mh-mml-secure-message-encrypt)
|
||||
(mh-mml-secure-message-signencrypt): Ditto
|
||||
(mh-mml-secure-message-signencrypt): Ditto.
|
||||
|
||||
* mh-pick.el (mh-search-folder): Ditto.
|
||||
|
||||
|
@ -2068,7 +2072,7 @@
|
|||
(mh-scan-date-regexp, mh-scan-rcpt-regexp, mh-scan-body-regexp)
|
||||
(mh-scan-subject-regexp): Sync docstrings with manual
|
||||
(mh-scan-format-regexp): Rename to
|
||||
mh-scan-sent-to-me-sender-regexp. Drop date parenthesized
|
||||
mh-scan-sent-to-me-sender-regexp. Drop date parenthesized
|
||||
expression. Make expression more like the others (anchored at the
|
||||
beginning of line). Sync docstrings with manual.
|
||||
(mh-folder-font-lock-keywords): Use faces directly rather than
|
||||
|
@ -2228,7 +2232,7 @@
|
|||
(mh-tool-bar-define): Replace toolbar with tool-bar or tool bar
|
||||
depending on context.
|
||||
(mh-toolbar-init): Rename to mh-tool-bar-init. Simplify condition
|
||||
for calling set-specifier. Only look at the value of
|
||||
for calling set-specifier. Only look at the value of
|
||||
mh-xemacs-use-tool-bar-flag.
|
||||
(mh-tool-bar-folder-buttons, mh-tool-bar-letter-buttons):
|
||||
Sync docstrings with manual.
|
||||
|
@ -2501,7 +2505,7 @@
|
|||
msg argument to message (to make for a better docstring).
|
||||
|
||||
* mh-customize.el (mh-redist-full-contents-flag): Convert defvar
|
||||
to defcustom. Rename by adding -flag.
|
||||
to defcustom. Rename by adding -flag.
|
||||
(mh-compose-forward-as-mime-flag)
|
||||
(mh-compose-letter-function, mh-forward-subject-format)
|
||||
(mh-insert-x-mailer-flag, mh-reply-default-reply-to)
|
||||
|
@ -2623,10 +2627,10 @@
|
|||
Sync docstring with manual.
|
||||
|
||||
* mh-identity.el (mh-assoc-ignore-case): Merge with version in
|
||||
mh-alias.el and move to mh-acros.el
|
||||
mh-alias.el and move to mh-acros.el.
|
||||
|
||||
* mh-alias.el (mh-assoc-ignore-case): Merge with version in
|
||||
mh-identity.el and move to mh-acros.el
|
||||
mh-identity.el and move to mh-acros.el.
|
||||
|
||||
* mh-acros.el (mh-assoc-ignore-case): Merge of function from
|
||||
mh-identity.el and mh-alias.el.
|
||||
|
@ -2667,15 +2671,15 @@
|
|||
mh-mhn-compose-external-compressed-tar to
|
||||
mh-mh-compose-external-compressed-tar. Rename
|
||||
mh-mhn-compose-anon-ftp to mh-mh-compose-anon-ftp. Rename
|
||||
mh-edit-mhn to mh-mh-to-mime. Rename mh-mhn-directive-present-p to
|
||||
mh-mh-directive-present-p. Rename mh-revert-mhn-edit to
|
||||
mh-edit-mhn to mh-mh-to-mime. Rename mh-mhn-directive-present-p to
|
||||
mh-mh-directive-present-p. Rename mh-revert-mhn-edit to
|
||||
mh-mh-to-mime-undo. Rename mh-gnus-pgp-support-flag to
|
||||
mh-pgp-support-flag. Rename mh-compose-insertion value from 'mhn
|
||||
to 'mh.
|
||||
(mh-insert-signature): Rename mh-mhn-directive-present-p to
|
||||
mh-mh-directive-present-p.
|
||||
(mh-send-letter): Rename mh-mhn-directive-present-p to
|
||||
mh-mh-directive-present-p. Rename mh-edit-mhn to mh-mh-to-mime.
|
||||
mh-mh-directive-present-p. Rename mh-edit-mhn to mh-mh-to-mime.
|
||||
(mh-letter-mode-map): Rename mh-edit-mhn to mh-mh-to-mime. Rename
|
||||
mh-mhn-compose-anon-ftp to mh-mh-compose-anon-ftp. Rename
|
||||
mh-mhn-compose-external-compressed-tar to
|
||||
|
@ -2829,7 +2833,7 @@
|
|||
|
||||
* mh-e.el (Version, mh-version): Add +cvs to version.
|
||||
|
||||
2005-10-14 Bill Wohler <wohler@newt.com>
|
||||
2005-10-14 Bill Wohler <wohler@newt.com>
|
||||
|
||||
Released MH-E version 7.85.
|
||||
|
||||
|
|
|
@ -1667,7 +1667,7 @@ This action can be undone by running \\[undo]."
|
|||
(defun mh-mh-directive-present-p (&optional begin end)
|
||||
"Check if the text between BEGIN and END might be a MH-style directive.
|
||||
The optional argument BEGIN defaults to the beginning of the
|
||||
buffer, while END defaults to the the end of the buffer."
|
||||
buffer, while END defaults to the end of the buffer."
|
||||
(unless begin (setq begin (point-min)))
|
||||
(unless end (setq end (point-max)))
|
||||
(save-excursion
|
||||
|
|
|
@ -1357,7 +1357,7 @@ record is invalid return 'error."
|
|||
;;;###mh-autoload
|
||||
(defun mh-index-group-by-folder ()
|
||||
"Partition the messages based on source folder.
|
||||
Returns an alist with the the folder names in the car and the cdr
|
||||
Returns an alist with the folder names in the car and the cdr
|
||||
being the list of messages originally from that folder."
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
|
|
650
lisp/net/socks.el
Normal file
650
lisp/net/socks.el
Normal file
|
@ -0,0 +1,650 @@
|
|||
;;; socks.el --- A Socks v5 Client for Emacs
|
||||
|
||||
;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002,
|
||||
;; 2007 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: William M. Perry <wmperry@gnu.org>
|
||||
;; Dave Love <fx@gnu.org>
|
||||
;; Keywords: comm, firewalls
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation; either version 2, or (at your option)
|
||||
;; any later version.
|
||||
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs; see the file COPYING. If not, write to the
|
||||
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
;; Boston, MA 02110-1301, USA.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This is an implementation of the SOCKS v5 protocol as defined in
|
||||
;; RFC 1928.
|
||||
|
||||
;; TODO
|
||||
;; - Finish the redirection rules stuff
|
||||
;; - Implement composition of servers. Recursively evaluate the
|
||||
;; redirection rules and do SOCKS-over-HTTP and SOCKS-in-SOCKS
|
||||
|
||||
(eval-when-compile
|
||||
(require 'wid-edit))
|
||||
(require 'custom)
|
||||
|
||||
(if (not (fboundp 'split-string))
|
||||
(defun split-string (string &optional pattern)
|
||||
"Return a list of substrings of STRING which are separated by PATTERN.
|
||||
If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"."
|
||||
(or pattern
|
||||
(setq pattern "[ \f\t\n\r\v]+"))
|
||||
(let (parts (start 0))
|
||||
(while (string-match pattern string start)
|
||||
(setq parts (cons (substring string start (match-beginning 0)) parts)
|
||||
start (match-end 0)))
|
||||
(nreverse (cons (substring string start) parts)))))
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Custom widgets
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(define-widget 'dynamic-choice 'menu-choice
|
||||
"A pretty simple dynamic dropdown list"
|
||||
:format "%[%t%]: %v"
|
||||
:tag "Network"
|
||||
:case-fold t
|
||||
:void '(item :format "invalid (%t)\n")
|
||||
:value-create 's5-widget-value-create
|
||||
:value-delete 'widget-children-value-delete
|
||||
:value-get 'widget-choice-value-get
|
||||
:value-inline 'widget-choice-value-inline
|
||||
:mouse-down-action 'widget-choice-mouse-down-action
|
||||
:action 'widget-choice-action
|
||||
:error "Make a choice"
|
||||
:validate 'widget-choice-validate
|
||||
:match 's5-dynamic-choice-match
|
||||
:match-inline 's5-dynamic-choice-match-inline)
|
||||
|
||||
(defun s5-dynamic-choice-match (widget value)
|
||||
(let ((choices (funcall (widget-get widget :choice-function)))
|
||||
current found)
|
||||
(while (and choices (not found))
|
||||
(setq current (car choices)
|
||||
choices (cdr choices)
|
||||
found (widget-apply current :match value)))
|
||||
found))
|
||||
|
||||
(defun s5-dynamic-choice-match-inline (widget value)
|
||||
(let ((choices (funcall (widget-get widget :choice-function)))
|
||||
current found)
|
||||
(while (and choices (not found))
|
||||
(setq current (car choices)
|
||||
choices (cdr choices)
|
||||
found (widget-match-inline current value)))
|
||||
found))
|
||||
|
||||
(defun s5-widget-value-create (widget)
|
||||
(let ((choices (funcall (widget-get widget :choice-function)))
|
||||
(value (widget-get widget :value)))
|
||||
(if (not value)
|
||||
(widget-put widget :value (widget-value (car choices))))
|
||||
(widget-put widget :args choices)
|
||||
(widget-choice-value-create widget)))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Customization support
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(defgroup socks nil
|
||||
"SOCKS Support"
|
||||
:prefix "socks-"
|
||||
:group 'processes)
|
||||
|
||||
'(defcustom socks-server-aliases nil
|
||||
"A list of server aliases for use in access control and filtering rules."
|
||||
:group 'socks
|
||||
:type '(repeat (list :format "%v"
|
||||
:value ("" "" 1080 5)
|
||||
(string :tag "Alias")
|
||||
(string :tag "Hostname/IP Address")
|
||||
(integer :tag "Port #")
|
||||
(choice :tag "SOCKS Version"
|
||||
(integer :tag "SOCKS v4" :value 4)
|
||||
(integer :tag "SOCKS v5" :value 5)))))
|
||||
|
||||
'(defcustom socks-network-aliases
|
||||
'(("Anywhere" (netmask "0.0.0.0" "0.0.0.0")))
|
||||
"A list of network aliases for use in subsequent rules."
|
||||
:group 'socks
|
||||
:type '(repeat (list :format "%v"
|
||||
:value (netmask "" "255.255.255.0")
|
||||
(string :tag "Alias")
|
||||
(radio-button-choice
|
||||
:format "%v"
|
||||
(list :tag "IP address range"
|
||||
(const :format "" :value range)
|
||||
(string :tag "From")
|
||||
(string :tag "To"))
|
||||
(list :tag "IP address/netmask"
|
||||
(const :format "" :value netmask)
|
||||
(string :tag "IP Address")
|
||||
(string :tag "Netmask"))
|
||||
(list :tag "Domain Name"
|
||||
(const :format "" :value domain)
|
||||
(string :tag "Domain name"))
|
||||
(list :tag "Unique hostname/IP address"
|
||||
(const :format "" :value exact)
|
||||
(string :tag "Hostname/IP Address"))))))
|
||||
|
||||
'(defun s5-servers-filter ()
|
||||
(if socks-server-aliases
|
||||
(mapcar (lambda (x) (list 'const :tag (car x) :value (car x))) s5-server-aliases)
|
||||
'((const :tag "No aliases defined" :value nil))))
|
||||
|
||||
'(defun s5-network-aliases-filter ()
|
||||
(mapcar (lambda (x) (list 'const :tag (car x) :value (car x)))
|
||||
socks-network-aliases))
|
||||
|
||||
'(defcustom socks-redirection-rules
|
||||
nil
|
||||
"A list of redirection rules."
|
||||
:group 'socks
|
||||
:type '(repeat (list :format "%v"
|
||||
:value ("Anywhere" nil)
|
||||
(dynamic-choice :choice-function s5-network-aliases-filter
|
||||
:tag "Destination network")
|
||||
(radio-button-choice
|
||||
:tag "Connection type"
|
||||
(const :tag "Direct connection" :value nil)
|
||||
(dynamic-choice :format "%t: %[%v%]"
|
||||
:choice-function s5-servers-filter
|
||||
:tag "Proxy chain via")))))
|
||||
|
||||
(defcustom socks-server
|
||||
(list "Default server" "socks" 1080 5)
|
||||
""
|
||||
:group 'socks
|
||||
:type '(list
|
||||
(string :format "" :value "Default server")
|
||||
(string :tag "Server")
|
||||
(integer :tag "Port")
|
||||
(radio-button-choice :tag "SOCKS Version"
|
||||
:format "%t: %v"
|
||||
(const :tag "SOCKS v4 " :format "%t" :value 4)
|
||||
(const :tag "SOCKS v5" :format "%t" :value 5))))
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Get down to the nitty gritty
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(defconst socks-version 5)
|
||||
(defvar socks-debug nil)
|
||||
|
||||
;; Common socks v5 commands
|
||||
(defconst socks-connect-command 1)
|
||||
(defconst socks-bind-command 2)
|
||||
(defconst socks-udp-associate-command 3)
|
||||
|
||||
;; Miscellaneous other socks constants
|
||||
(defconst socks-authentication-null 0)
|
||||
(defconst socks-authentication-failure 255)
|
||||
|
||||
;; Response codes
|
||||
(defconst socks-response-success 0)
|
||||
(defconst socks-response-general-failure 1)
|
||||
(defconst socks-response-access-denied 2)
|
||||
(defconst socks-response-network-unreachable 3)
|
||||
(defconst socks-response-host-unreachable 4)
|
||||
(defconst socks-response-connection-refused 5)
|
||||
(defconst socks-response-ttl-expired 6)
|
||||
(defconst socks-response-cmd-not-supported 7)
|
||||
(defconst socks-response-address-not-supported 8)
|
||||
|
||||
(defvar socks-errors
|
||||
'("Succeeded"
|
||||
"General SOCKS server failure"
|
||||
"Connection not allowed by ruleset"
|
||||
"Network unreachable"
|
||||
"Host unreachable"
|
||||
"Connection refused"
|
||||
"Time-to-live expired"
|
||||
"Command not supported"
|
||||
"Address type not supported"))
|
||||
|
||||
;; The socks v5 address types
|
||||
(defconst socks-address-type-v4 1)
|
||||
(defconst socks-address-type-name 3)
|
||||
(defconst socks-address-type-v6 4)
|
||||
|
||||
;; Base variables
|
||||
(defvar socks-timeout 5)
|
||||
(defvar socks-connections (make-hash-table :size 13))
|
||||
|
||||
;; Miscellaneous stuff for authentication
|
||||
(defvar socks-authentication-methods nil)
|
||||
(defvar socks-username (user-login-name))
|
||||
(defvar socks-password nil)
|
||||
|
||||
(defun socks-register-authentication-method (id desc callback)
|
||||
(let ((old (assq id socks-authentication-methods)))
|
||||
(if old
|
||||
(setcdr old (cons desc callback))
|
||||
(setq socks-authentication-methods
|
||||
(cons (cons id (cons desc callback))
|
||||
socks-authentication-methods)))))
|
||||
|
||||
(defun socks-unregister-authentication-method (id)
|
||||
(let ((old (assq id socks-authentication-methods)))
|
||||
(if old
|
||||
(setq socks-authentication-methods
|
||||
(delq old socks-authentication-methods)))))
|
||||
|
||||
(socks-register-authentication-method 0 "No authentication" 'identity)
|
||||
|
||||
(defun socks-build-auth-list ()
|
||||
(let ((num 0)
|
||||
(retval ""))
|
||||
(mapcar
|
||||
(function
|
||||
(lambda (x)
|
||||
(if (fboundp (cdr (cdr x)))
|
||||
(setq retval (format "%s%c" retval (car x))
|
||||
num (1+ num)))))
|
||||
(reverse socks-authentication-methods))
|
||||
(format "%c%s" num retval)))
|
||||
|
||||
(defconst socks-state-waiting-for-auth 0)
|
||||
(defconst socks-state-submethod-negotiation 1)
|
||||
(defconst socks-state-authenticated 2)
|
||||
(defconst socks-state-waiting 3)
|
||||
(defconst socks-state-connected 4)
|
||||
|
||||
(defmacro socks-wait-for-state-change (proc htable cur-state)
|
||||
(`
|
||||
(while (and (= (gethash 'state (, htable)) (, cur-state))
|
||||
(memq (process-status (, proc)) '(run open)))
|
||||
(accept-process-output (, proc) socks-timeout))))
|
||||
|
||||
(defun socks-filter (proc string)
|
||||
(let ((info (gethash proc socks-connections))
|
||||
state version desired-len)
|
||||
(or info (error "socks-filter called on non-SOCKS connection %S" proc))
|
||||
(setq state (gethash 'state info))
|
||||
(cond
|
||||
((= state socks-state-waiting-for-auth)
|
||||
(puthash 'scratch (concat string (gethash 'scratch info)) info)
|
||||
(setq string (gethash 'scratch info))
|
||||
(if (< (length string) 2)
|
||||
nil ; We need to spin some more
|
||||
(puthash 'authtype (aref string 1) info)
|
||||
(puthash 'scratch (substring string 2 nil) info)
|
||||
(puthash 'state socks-state-submethod-negotiation info)))
|
||||
((= state socks-state-submethod-negotiation)
|
||||
)
|
||||
((= state socks-state-authenticated)
|
||||
)
|
||||
((= state socks-state-waiting)
|
||||
(puthash 'scratch (concat string (gethash 'scratch info)) info)
|
||||
(setq string (gethash 'scratch info))
|
||||
(setq version (gethash 'server-protocol info))
|
||||
(cond
|
||||
((equal version 'http)
|
||||
(if (not (string-match "\r\n\r\n" string))
|
||||
nil ; Need to spin some more
|
||||
(puthash 'state socks-state-connected info)
|
||||
(puthash 'reply 0 info)
|
||||
(puthash 'response string info)))
|
||||
((equal version 4)
|
||||
(if (< (length string) 2)
|
||||
nil ; Can't know how much to read yet
|
||||
(setq desired-len
|
||||
(+ 4 ; address length
|
||||
2 ; port
|
||||
2 ; initial data
|
||||
))
|
||||
(if (< (length string) desired-len)
|
||||
nil ; need to spin some more
|
||||
(let ((response (aref string 1)))
|
||||
(if (= response 90)
|
||||
(setq response 0))
|
||||
(puthash 'state socks-state-connected info)
|
||||
(puthash 'reply response info)
|
||||
(puthash 'response string info)))))
|
||||
((equal version 5)
|
||||
(if (< (length string) 4)
|
||||
nil
|
||||
(setq desired-len
|
||||
(+ 6 ; Standard socks header
|
||||
(cond
|
||||
((= (aref string 3) socks-address-type-v4) 4)
|
||||
((= (aref string 3) socks-address-type-v6) 16)
|
||||
((= (aref string 3) socks-address-type-name)
|
||||
(if (< (length string) 5)
|
||||
255
|
||||
(+ 1 (aref string 4)))))))
|
||||
(if (< (length string) desired-len)
|
||||
nil ; Need to spin some more
|
||||
(puthash 'state socks-state-connected info)
|
||||
(puthash 'reply (aref string 1) info)
|
||||
(puthash 'response string info))))))
|
||||
((= state socks-state-connected)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defun socks-open-connection (server-info)
|
||||
(interactive)
|
||||
(save-excursion
|
||||
(let ((proc (socks-original-open-network-stream "socks"
|
||||
nil
|
||||
(nth 1 server-info)
|
||||
(nth 2 server-info)))
|
||||
(info (make-hash-table :size 13))
|
||||
(authtype nil)
|
||||
version)
|
||||
|
||||
;; Initialize process and info about the process
|
||||
(set-process-filter proc 'socks-filter)
|
||||
(set-process-query-on-exit-flag proc nil)
|
||||
(puthash proc info socks-connections)
|
||||
(puthash 'state socks-state-waiting-for-auth info)
|
||||
(puthash 'authtype socks-authentication-failure info)
|
||||
(puthash 'server-protocol (nth 3 server-info) info)
|
||||
(puthash 'server-name (nth 1 server-info) info)
|
||||
(setq version (nth 3 server-info))
|
||||
(cond
|
||||
((equal version 'http)
|
||||
;; Don't really have to do any connection setup under http
|
||||
nil)
|
||||
((equal version 4)
|
||||
;; Don't really have to do any connection setup under v4
|
||||
nil)
|
||||
((equal version 5)
|
||||
;; Need to handle all the authentication crap under v5
|
||||
;; Send what we think we can handle for authentication types
|
||||
(process-send-string proc (format "%c%s" socks-version
|
||||
(socks-build-auth-list)))
|
||||
|
||||
;; Basically just do a select() until we change states.
|
||||
(socks-wait-for-state-change proc info socks-state-waiting-for-auth)
|
||||
(setq authtype (gethash 'authtype info))
|
||||
(cond
|
||||
((= authtype socks-authentication-null)
|
||||
(and socks-debug (message "No authentication necessary")))
|
||||
((= authtype socks-authentication-failure)
|
||||
(error "No acceptable authentication methods found."))
|
||||
(t
|
||||
(let* ((auth-type (gethash 'authtype info))
|
||||
(auth-handler (assoc auth-type socks-authentication-methods))
|
||||
(auth-func (and auth-handler (cdr (cdr auth-handler))))
|
||||
(auth-desc (and auth-handler (car (cdr auth-handler)))))
|
||||
(set-process-filter proc nil)
|
||||
(if (and auth-func (fboundp auth-func)
|
||||
(funcall auth-func proc))
|
||||
nil ; We succeeded!
|
||||
(delete-process proc)
|
||||
(error "Failed to use auth method: %s (%d)"
|
||||
(or auth-desc "Unknown") auth-type))
|
||||
)
|
||||
)
|
||||
)
|
||||
(puthash 'state socks-state-authenticated info)
|
||||
(set-process-filter proc 'socks-filter)))
|
||||
proc)))
|
||||
|
||||
(defun socks-send-command (proc command atype address port)
|
||||
(let ((addr (cond
|
||||
((or (= atype socks-address-type-v4)
|
||||
(= atype socks-address-type-v6))
|
||||
address)
|
||||
((= atype socks-address-type-name)
|
||||
(format "%c%s" (length address) address))
|
||||
(t
|
||||
(error "Unkown address type: %d" atype))))
|
||||
(info (gethash proc socks-connections))
|
||||
request version)
|
||||
(or info (error "socks-send-command called on non-SOCKS connection %S"
|
||||
proc))
|
||||
(puthash 'state socks-state-waiting info)
|
||||
(setq version (gethash 'server-protocol info))
|
||||
(cond
|
||||
((equal version 'http)
|
||||
(setq request (format (eval-when-compile
|
||||
(concat
|
||||
"CONNECT %s:%d HTTP/1.0\r\n"
|
||||
"User-Agent: Emacs/SOCKS v1.0\r\n"
|
||||
"\r\n"))
|
||||
(cond
|
||||
((equal atype socks-address-type-name) address)
|
||||
(t
|
||||
(error "Unsupported address type for HTTP: %d" atype)))
|
||||
port)))
|
||||
((equal version 4)
|
||||
(setq request (format
|
||||
"%c%c%c%c%s%s%c"
|
||||
version ; version
|
||||
command ; command
|
||||
(lsh port -8) ; port, high byte
|
||||
(- port (lsh (lsh port -8) 8)) ; port, low byte
|
||||
addr ; address
|
||||
(user-full-name) ; username
|
||||
0 ; terminate username
|
||||
)))
|
||||
((equal version 5)
|
||||
(setq request (format
|
||||
"%c%c%c%c%s%c%c"
|
||||
version ; version
|
||||
command ; command
|
||||
0 ; reserved
|
||||
atype ; address type
|
||||
addr ; address
|
||||
(lsh port -8) ; port, high byte
|
||||
(- port (lsh (lsh port -8) 8)) ; port, low byte
|
||||
)))
|
||||
(t
|
||||
(error "Unknown protocol version: %d" version)))
|
||||
(process-send-string proc request)
|
||||
(socks-wait-for-state-change proc info socks-state-waiting)
|
||||
(process-status proc)
|
||||
(if (= (or (gethash 'reply info) 1) socks-response-success)
|
||||
nil ; Sweet sweet success!
|
||||
(delete-process proc)
|
||||
(error "SOCKS: %s" (nth (or (gethash 'reply info) 1) socks-errors)))
|
||||
proc))
|
||||
|
||||
|
||||
;; Replacement functions for open-network-stream, etc.
|
||||
(defvar socks-noproxy nil
|
||||
"*List of regexps matching hosts that we should not socksify connections to")
|
||||
|
||||
(defun socks-find-route (host service)
|
||||
(let ((route socks-server)
|
||||
(noproxy socks-noproxy))
|
||||
(while noproxy
|
||||
(if (eq ?! (aref (car noproxy) 0))
|
||||
(if (string-match (substring (car noproxy) 1) host)
|
||||
(setq noproxy nil))
|
||||
(if (string-match (car noproxy) host)
|
||||
(setq route nil
|
||||
noproxy nil)))
|
||||
(setq noproxy (cdr noproxy)))
|
||||
route))
|
||||
|
||||
(defvar socks-override-functions nil
|
||||
"*Whether to overwrite the open-network-stream function with the SOCKSified
|
||||
version.")
|
||||
|
||||
(if (fboundp 'socks-original-open-network-stream)
|
||||
nil ; Do nothing, we've been here already
|
||||
(defalias 'socks-original-open-network-stream
|
||||
(symbol-function 'open-network-stream))
|
||||
(if socks-override-functions
|
||||
(defalias 'open-network-stream 'socks-open-network-stream)))
|
||||
|
||||
(defvar socks-services-file "/etc/services")
|
||||
(defvar socks-tcp-services (make-hash-table :size 13 :test 'equal))
|
||||
(defvar socks-udp-services (make-hash-table :size 13 :test 'equal))
|
||||
|
||||
(defun socks-parse-services ()
|
||||
(if (not (and (file-exists-p socks-services-file)
|
||||
(file-readable-p socks-services-file)))
|
||||
(error "Could not find services file: %s" socks-services-file))
|
||||
(save-excursion
|
||||
(clrhash socks-tcp-services)
|
||||
(clrhash socks-udp-services)
|
||||
(set-buffer (get-buffer-create " *socks-tmp*"))
|
||||
(erase-buffer)
|
||||
(insert-file-contents socks-services-file)
|
||||
;; Nuke comments
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward "#.*" nil t)
|
||||
(replace-match ""))
|
||||
;; Nuke empty lines
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward "^[ \t\n]+" nil t)
|
||||
(replace-match ""))
|
||||
;; Now find all the lines
|
||||
(goto-char (point-min))
|
||||
(let (name port type)
|
||||
(while (re-search-forward "^\\([^ \t]+\\)[ \t]+\\([0-9]+\\)/\\([a-z]+\\)"
|
||||
nil t)
|
||||
(setq name (downcase (match-string 1))
|
||||
port (string-to-number (match-string 2))
|
||||
type (downcase (match-string 3)))
|
||||
(puthash name port (if (equal type "udp")
|
||||
socks-udp-services
|
||||
socks-tcp-services))))))
|
||||
|
||||
(defun socks-find-services-entry (service &optional udp)
|
||||
"Return the port # associated with SERVICE"
|
||||
(if (= (hash-table-count socks-tcp-services) 0)
|
||||
(socks-parse-services))
|
||||
(gethash (downcase service)
|
||||
(if udp socks-udp-services socks-tcp-services)))
|
||||
|
||||
(defun socks-open-network-stream (name buffer host service)
|
||||
(let* ((route (socks-find-route host service))
|
||||
proc info version atype)
|
||||
(if (not route)
|
||||
(socks-original-open-network-stream name buffer host service)
|
||||
(setq proc (socks-open-connection route)
|
||||
info (gethash proc socks-connections)
|
||||
version (gethash 'server-protocol info))
|
||||
(cond
|
||||
((equal version 4)
|
||||
(setq host (socks-nslookup-host host))
|
||||
(if (not (listp host))
|
||||
(error "Could not get IP address for: %s" host))
|
||||
(setq host (apply 'format "%c%c%c%c" host))
|
||||
(setq atype socks-address-type-v4))
|
||||
(t
|
||||
(setq atype socks-address-type-name)))
|
||||
(socks-send-command proc
|
||||
socks-connect-command
|
||||
atype
|
||||
host
|
||||
(if (stringp service)
|
||||
(socks-find-services-entry service)
|
||||
service))
|
||||
(puthash 'buffer buffer info)
|
||||
(puthash 'host host info)
|
||||
(puthash 'service host info)
|
||||
(set-process-filter proc nil)
|
||||
(set-process-buffer proc (if buffer (get-buffer-create buffer)))
|
||||
proc)))
|
||||
|
||||
;; Authentication modules go here
|
||||
|
||||
;; Basic username/password authentication, ala RFC 1929
|
||||
(socks-register-authentication-method 2 "Username/Password"
|
||||
'socks-username/password-auth)
|
||||
|
||||
(defconst socks-username/password-auth-version 1)
|
||||
|
||||
(defun socks-username/password-auth-filter (proc str)
|
||||
(let ((info (gethash proc socks-connections))
|
||||
state desired-len)
|
||||
(or info (error "socks-filter called on non-SOCKS connection %S" proc))
|
||||
(setq state (gethash 'state info))
|
||||
(puthash 'scratch (concat (gethash 'scratch info) str) info)
|
||||
(if (< (length (gethash 'scratch info)) 2)
|
||||
nil
|
||||
(puthash 'password-auth-status (aref (gethash 'scratch info) 1) info)
|
||||
(puthash 'state socks-state-authenticated info))))
|
||||
|
||||
(defun socks-username/password-auth (proc)
|
||||
(let* ((info (gethash proc socks-connections))
|
||||
(state (gethash 'state info)))
|
||||
(if (not socks-password)
|
||||
(setq socks-password (read-passwd
|
||||
(format "Password for %s@%s: "
|
||||
socks-username
|
||||
(gethash 'server-name info)))))
|
||||
(puthash 'scratch "" info)
|
||||
(set-process-filter proc 'socks-username/password-auth-filter)
|
||||
(process-send-string proc
|
||||
(format "%c%c%s%c%s"
|
||||
socks-username/password-auth-version
|
||||
(length socks-username)
|
||||
socks-username
|
||||
(length socks-password)
|
||||
socks-password))
|
||||
(socks-wait-for-state-change proc info state)
|
||||
(= (gethash 'password-auth-status info) 0)))
|
||||
|
||||
|
||||
;; More advanced GSS/API stuff, not yet implemented - volunteers?
|
||||
;; (socks-register-authentication-method 1 "GSS/API" 'socks-gssapi-auth)
|
||||
|
||||
(defun socks-gssapi-auth (proc)
|
||||
nil)
|
||||
|
||||
|
||||
;; CHAP stuff
|
||||
;; (socks-register-authentication-method 3 "CHAP" 'socks-chap-auth)
|
||||
(defun socks-chap-auth (proc)
|
||||
nil)
|
||||
|
||||
|
||||
;; CRAM stuff
|
||||
;; (socks-register-authentication-method 5 "CRAM" 'socks-cram-auth)
|
||||
(defun socks-cram-auth (proc)
|
||||
nil)
|
||||
|
||||
|
||||
(defcustom socks-nslookup-program "nslookup"
|
||||
"*If non-NIL then a string naming the nslookup program."
|
||||
:type '(choice (const :tag "None" :value nil) string)
|
||||
:group 'socks)
|
||||
|
||||
(defun socks-nslookup-host (host)
|
||||
"Attempt to resolve the given HOSTNAME using nslookup if possible."
|
||||
(interactive "sHost: ")
|
||||
(if socks-nslookup-program
|
||||
(let ((proc (start-process " *nslookup*" " *nslookup*"
|
||||
socks-nslookup-program host))
|
||||
(res host))
|
||||
(set-process-query-on-exit-flag proc nil)
|
||||
(save-excursion
|
||||
(set-buffer (process-buffer proc))
|
||||
(while (progn
|
||||
(accept-process-output proc)
|
||||
(memq (process-status proc) '(run open))))
|
||||
(goto-char (point-min))
|
||||
(if (re-search-forward "Name:.*\nAddress\\(es\\)?: *\\([0-9.]+\\)$" nil t)
|
||||
(progn
|
||||
(setq res (buffer-substring (match-beginning 2)
|
||||
(match-end 2))
|
||||
res (mapcar 'string-to-int (split-string res "\\.")))))
|
||||
(kill-buffer (current-buffer)))
|
||||
res)
|
||||
host))
|
||||
|
||||
(provide 'socks)
|
||||
|
||||
;; arch-tag: 67aef0d9-f4f7-4056-89c3-b4c9bf93ce7f
|
||||
;;; socks.el ends here
|
|
@ -332,7 +332,7 @@ cache or user."
|
|||
(interactive "r")
|
||||
(let ((status
|
||||
(pgg-save-coding-system start end
|
||||
(pgg-invoke "encrypt-symmetric-region"
|
||||
(pgg-invoke "encrypt-symmetric-region"
|
||||
(or pgg-scheme pgg-default-scheme)
|
||||
(point-min) (point-max) passphrase))))
|
||||
(when (interactive-p)
|
||||
|
@ -416,7 +416,7 @@ If the optional 3rd argument CLEARTEXT is non-nil, it does not create
|
|||
a detached signature.
|
||||
|
||||
If this function is called interactively, CLEARTEXT is enabled
|
||||
and the the output is displayed.
|
||||
and the output is displayed.
|
||||
|
||||
If optional PASSPHRASE is not specified, it will be obtained from the
|
||||
passphrase cache or user."
|
||||
|
@ -441,7 +441,7 @@ If optional arguments START and END are specified, only sign data
|
|||
within the region.
|
||||
|
||||
If this function is called interactively, CLEARTEXT is enabled
|
||||
and the the output is displayed.
|
||||
and the output is displayed.
|
||||
|
||||
If optional PASSPHRASE is not specified, it will be obtained from the
|
||||
passphrase cache or user."
|
||||
|
@ -485,7 +485,7 @@ signer's public key from `pgg-default-keyserver-address'."
|
|||
(or (cdr (assq 'preferred-key-server packet))
|
||||
pgg-default-keyserver-address))
|
||||
(pgg-fetch-key keyserver key))
|
||||
(setq status
|
||||
(setq status
|
||||
(pgg-save-coding-system start end
|
||||
(pgg-invoke "verify-region" (or pgg-scheme pgg-default-scheme)
|
||||
(point-min) (point-max) signature)))
|
||||
|
|
|
@ -38,11 +38,14 @@
|
|||
;; LINE will be nil for a message that doesn't contain them. Then the
|
||||
;; location refers to a indented beginning of line or beginning of file.
|
||||
;; Once any location in some file has been jumped to, the list is extended to
|
||||
;; (COLUMN LINE FILE-STRUCTURE MARKER . VISITED) for all LOCs pertaining to
|
||||
;; that file.
|
||||
;; (COLUMN LINE FILE-STRUCTURE MARKER TIMESTAMP . VISITED)
|
||||
;; for all LOCs pertaining to that file.
|
||||
;; MARKER initially points to LINE and COLUMN in a buffer visiting that file.
|
||||
;; Being a marker it sticks to some text, when the buffer grows or shrinks
|
||||
;; before that point. VISITED is t if we have jumped there, else nil.
|
||||
;; TIMESTAMP is necessary because of "incremental compilation": `omake -P'
|
||||
;; polls filesystem for changes and recompiles when a file is modified
|
||||
;; using the same *compilation* buffer. this necessitates re-parsing markers.
|
||||
|
||||
;; FILE-STRUCTURE is a list of
|
||||
;; ((FILENAME . DIRECTORY) FORMATS (LINE LOC ...) ...)
|
||||
|
@ -117,7 +120,7 @@ bound to the compilation buffer and window, respectively.")
|
|||
"Function to compute the name of a compilation buffer.
|
||||
The function receives one argument, the name of the major mode of the
|
||||
compilation buffer. It should return a string.
|
||||
nil means compute the name with `(concat \"*\" (downcase major-mode) \"*\")'.")
|
||||
If nil, compute the name with `(concat \"*\" (downcase major-mode) \"*\")'.")
|
||||
|
||||
;;;###autoload
|
||||
(defvar compilation-finish-function nil
|
||||
|
@ -126,7 +129,7 @@ It is called with two arguments: the compilation buffer, and a string
|
|||
describing how the process finished.")
|
||||
|
||||
(make-obsolete-variable 'compilation-finish-function
|
||||
"Use `compilation-finish-functions', but it works a little differently."
|
||||
"use `compilation-finish-functions', but it works a little differently."
|
||||
"22.1")
|
||||
|
||||
;;;###autoload
|
||||
|
@ -466,7 +469,7 @@ Otherwise, it saves all modified buffers without asking."
|
|||
(defcustom compilation-search-path '(nil)
|
||||
"*List of directories to search for source files named in error messages.
|
||||
Elements should be directory names, not file names of directories.
|
||||
nil as an element means to try the default directory."
|
||||
The value nil as an element means to try the default directory."
|
||||
:type '(repeat (choice (const :tag "Default" nil)
|
||||
(string :tag "Directory")))
|
||||
:group 'compilation)
|
||||
|
@ -1419,7 +1422,7 @@ Turning the mode on runs the normal hook `compilation-minor-mode-hook'."
|
|||
(font-lock-fontify-buffer)))
|
||||
|
||||
(defun compilation-handle-exit (process-status exit-status msg)
|
||||
"Write MSG in the current buffer and hack its mode-line-process."
|
||||
"Write MSG in the current buffer and hack its `mode-line-process'."
|
||||
(let ((inhibit-read-only t)
|
||||
(status (if compilation-exit-message-function
|
||||
(funcall compilation-exit-message-function
|
||||
|
@ -1516,7 +1519,7 @@ Just inserts the text, but uses `insert-before-markers'."
|
|||
(eq (prog1 last (setq last (nth 2 (car msg))))
|
||||
last))
|
||||
(if compilation-skip-visited
|
||||
(nthcdr 4 (car msg)))
|
||||
(nthcdr 5 (car msg)))
|
||||
(if compilation-skip-to-next-location
|
||||
(eq (car msg) loc))
|
||||
;; count this message only if none of the above are true
|
||||
|
@ -1619,7 +1622,7 @@ This is the value of `next-error-function' in Compilation buffers."
|
|||
(when reset
|
||||
(setq compilation-current-error nil))
|
||||
(let* ((columns compilation-error-screen-columns) ; buffer's local value
|
||||
(last 1)
|
||||
(last 1) timestamp
|
||||
(loc (compilation-next-error (or n 1) nil
|
||||
(or compilation-current-error
|
||||
compilation-messages-start
|
||||
|
@ -1632,10 +1635,17 @@ This is the value of `next-error-function' in Compilation buffers."
|
|||
compilation-current-error
|
||||
(copy-marker (line-beginning-position)))
|
||||
loc (car loc))
|
||||
;; If loc contains no marker, no error in that file has been visited. If
|
||||
;; the marker is invalid the buffer has been killed. So, recalculate all
|
||||
;; markers for that file.
|
||||
(unless (and (nth 3 loc) (marker-buffer (nth 3 loc)))
|
||||
;; If loc contains no marker, no error in that file has been visited.
|
||||
;; If the marker is invalid the buffer has been killed.
|
||||
;; If the file is newer than the timestamp, it has been modified
|
||||
;; (`omake -P' polls filesystem for changes and recompiles when needed
|
||||
;; in the same process and buffer).
|
||||
;; So, recalculate all markers for that file.
|
||||
(unless (and (nth 3 loc) (marker-buffer (nth 3 loc))
|
||||
(equal (nth 4 loc)
|
||||
(setq timestamp
|
||||
(with-current-buffer (marker-buffer (nth 3 loc))
|
||||
(visited-file-modtime)))))
|
||||
(with-current-buffer (compilation-find-file marker (caar (nth 2 loc))
|
||||
(cadr (car (nth 2 loc))))
|
||||
(save-restriction
|
||||
|
@ -1658,7 +1668,8 @@ This is the value of `next-error-function' in Compilation buffers."
|
|||
(set-marker (nth 3 col) (point))
|
||||
(setcdr (nthcdr 2 col) `(,(point-marker)))))))))
|
||||
(compilation-goto-locus marker (nth 3 loc) (nth 3 end-loc))
|
||||
(setcdr (nthcdr 3 loc) t))) ; Set this one as visited.
|
||||
(setcdr (nthcdr 3 loc) (list timestamp))
|
||||
(setcdr (nthcdr 4 loc) t))) ; Set this one as visited.
|
||||
|
||||
(defvar compilation-gcpro nil
|
||||
"Internal variable used to keep some values from being GC'd.")
|
||||
|
@ -1825,8 +1836,8 @@ and overlay is highlighted between MK and END-MK."
|
|||
Search the directories in `compilation-search-path'.
|
||||
A nil in `compilation-search-path' means to try the
|
||||
\"current\" directory, which is passed in DIRECTORY.
|
||||
If DIRECTORY. is relative, it is combined with `default-directory'.
|
||||
If DIRECTORY. is nil, that means use `default-directory'.
|
||||
If DIRECTORY is relative, it is combined with `default-directory'.
|
||||
If DIRECTORY is nil, that means use `default-directory'.
|
||||
If FILENAME is not found at all, ask the user where to find it.
|
||||
Pop up the buffer containing MARKER and scroll to MARKER if we ask the user."
|
||||
(or formats (setq formats '("%s")))
|
||||
|
@ -1867,7 +1878,7 @@ Pop up the buffer containing MARKER and scroll to MARKER if we ask the user."
|
|||
;; restrictive otherwise, since it also prevents the
|
||||
;; user from completing "fo" to "foo/" when she
|
||||
;; wants to enter "foo/bar".
|
||||
;;
|
||||
;;
|
||||
;; Try to make sure the user can only select
|
||||
;; a valid answer. This predicate may be ignored,
|
||||
;; tho, so we still have to double-check afterwards.
|
||||
|
|
|
@ -1003,7 +1003,7 @@ type `ebrowse-hs' is set to the resulting obarray."
|
|||
|
||||
|
||||
(defun ebrowse-member-table (header)
|
||||
"Return the member obarray. Build it it hasn't been set up yet.
|
||||
"Return the member obarray. Build it if it hasn't been set up yet.
|
||||
HEADER is the tree header structure of the class tree."
|
||||
(when (null (ebrowse-hs-member-table header))
|
||||
(loop for buffer in (ebrowse-browser-buffer-list)
|
||||
|
@ -3598,7 +3598,7 @@ The file name is read from the minibuffer."
|
|||
|
||||
|
||||
(defun* ebrowse-draw-file-member-info (info &optional (kind ""))
|
||||
"Display a line in an the members per file info buffer.
|
||||
"Display a line in the members info buffer.
|
||||
INFO describes the member. It has the form (TREE ACCESSOR MEMBER).
|
||||
TREE is the class of the member to display.
|
||||
ACCESSOR is the accessor symbol of its member list.
|
||||
|
|
|
@ -7095,7 +7095,7 @@ sort the list before displaying"
|
|||
"Make the user select an element from the alist in the variable SYM.
|
||||
The keys of the alist are expected to be strings. The function returns the
|
||||
car of the selected association.
|
||||
To do this, PROMPT is displayed and and the user must hit a letter key to
|
||||
To do this, PROMPT is displayed and the user must hit a letter key to
|
||||
select an entry. If the user does not reply within DELAY seconds, a help
|
||||
window with the options is displayed automatically.
|
||||
The key which is associated with each option is generated automatically.
|
||||
|
|
|
@ -1017,7 +1017,7 @@ The converted character representation is stored in rAX."
|
|||
"Alist that contains all the possible operation codes for mix.
|
||||
Each elt has the form
|
||||
(OP-CODE GROUP FULL-NAME C-BYTE F-BYTE DESCRIPTION EXECUTION-TIME)
|
||||
Where OP-CODE is the text of the opcode as an symbol,
|
||||
Where OP-CODE is the text of the opcode as a symbol,
|
||||
FULL-NAME is the human readable name as a string,
|
||||
C-BYTE is the operation code telling what operation is to be performed,
|
||||
F-BYTE holds a modification of the operation code which can be a symbol
|
||||
|
|
|
@ -878,9 +878,9 @@ preceding cell has spilled over."
|
|||
|
||||
(defun ses-call-printer (printer &optional value)
|
||||
"Invokes PRINTER (a string or parenthesized string or function-symbol or
|
||||
lambda of one argument) on VALUE. Result is the the printed cell as a
|
||||
string. The variable `ses-call-printer-return' is set to t if the printer
|
||||
used parenthesis to request left-justification, or the error-signal if the
|
||||
lambda of one argument) on VALUE. Result is the printed cell as a string.
|
||||
The variable `ses-call-printer-return' is set to t if the printer used
|
||||
parenthesis to request left-justification, or the error-signal if the
|
||||
printer signaled one (and \"%s\" is used as the default printer), else nil."
|
||||
(setq ses-call-printer-return nil)
|
||||
(unless value
|
||||
|
|
|
@ -1315,7 +1315,7 @@ using the mouse.\n\n")
|
|||
(emacs-version)
|
||||
"\n"
|
||||
:face '(variable-pitch :height 0.5)
|
||||
"Copyright (C) 2007 Free Software Foundation, Inc.")
|
||||
emacs-copyright)
|
||||
(and auto-save-list-file-prefix
|
||||
;; Don't signal an error if the
|
||||
;; directory for auto-save-list files
|
||||
|
|
|
@ -663,15 +663,15 @@ appear on disk when you save the tar-file's buffer."
|
|||
(size (tar-header-size tokens))
|
||||
(link-p (tar-header-link-type tokens)))
|
||||
(if link-p
|
||||
(error "This is a%s, not a real file"
|
||||
(cond ((eq link-p 5) " directory")
|
||||
((eq link-p 20) " tar directory header")
|
||||
((eq link-p 28) " next has longname")
|
||||
((eq link-p 29) " multivolume-continuation")
|
||||
((eq link-p 35) " sparse entry")
|
||||
((eq link-p 38) " volume header")
|
||||
((eq link-p 55) "n extended pax header")
|
||||
(t "link"))))
|
||||
(error "This is %s, not a real file"
|
||||
(cond ((eq link-p 5) "a directory")
|
||||
((eq link-p 20) "a tar directory header")
|
||||
((eq link-p 28) "a next has longname")
|
||||
((eq link-p 29) "a multivolume-continuation")
|
||||
((eq link-p 35) "a sparse entry")
|
||||
((eq link-p 38) "a volume header")
|
||||
((eq link-p 55) "an extended pax header")
|
||||
(t "a link"))))
|
||||
(if (zerop size) (error "This is a zero-length file"))
|
||||
descriptor))
|
||||
|
||||
|
|
469
lisp/textmodes/css-mode.el
Normal file
469
lisp/textmodes/css-mode.el
Normal file
|
@ -0,0 +1,469 @@
|
|||
;;; css-mode.el --- Major mode to edit CSS files
|
||||
|
||||
;; Copyright (C) 2006, 2007 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
;; Keywords: hypermedia
|
||||
|
||||
;; This file is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation; either version 2, or (at your option)
|
||||
;; any later version.
|
||||
|
||||
;; This file is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs; see the file COPYING. If not, write to
|
||||
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
;; Boston, MA 02110-1301, USA.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Yet another CSS mode.
|
||||
|
||||
;;; Todo:
|
||||
|
||||
;; - electric ; and }
|
||||
;; - filling code with auto-fill-mode
|
||||
;; - completion
|
||||
;; - fix font-lock errors with multi-line selectors
|
||||
|
||||
;;; Code:
|
||||
|
||||
(defun css-extract-keyword-list (res)
|
||||
(with-temp-buffer
|
||||
(url-insert-file-contents "http://www.w3.org/TR/REC-CSS2/css2.txt")
|
||||
(goto-char (point-max))
|
||||
(search-backward "Appendix H. Index")
|
||||
(forward-line)
|
||||
(delete-region (point-min) (point))
|
||||
(let ((result nil)
|
||||
keys)
|
||||
(dolist (re res)
|
||||
(goto-char (point-min))
|
||||
(setq keys nil)
|
||||
(while (re-search-forward (cdr re) nil t)
|
||||
(push (match-string 1) keys))
|
||||
(push (cons (car re) (sort keys 'string-lessp)) result))
|
||||
(nreverse result))))
|
||||
|
||||
(defun css-extract-parse-val-grammar (string env)
|
||||
(let ((start 0)
|
||||
(elems ())
|
||||
name)
|
||||
(while (string-match
|
||||
(concat "\\(?:"
|
||||
(concat "<a [^>]+><span [^>]+>\\(?:"
|
||||
"<\\([^&]+\\)>\\|'\\([^']+\\)'"
|
||||
"\\)</span></a>")
|
||||
"\\|" "\\(\\[\\)"
|
||||
"\\|" "\\(]\\)"
|
||||
"\\|" "\\(||\\)"
|
||||
"\\|" "\\(|\\)"
|
||||
"\\|" "\\([*+?]\\)"
|
||||
"\\|" "\\({[^}]+}\\)"
|
||||
"\\|" "\\(\\w+\\(?:-\\w+\\)*\\)"
|
||||
"\\)[ \t\n]*")
|
||||
string start)
|
||||
;; (assert (eq start (match-beginning 0)))
|
||||
(setq start (match-end 0))
|
||||
(cond
|
||||
;; Reference to a type of value.
|
||||
((setq name (match-string-no-properties 1 string))
|
||||
(push (intern name) elems))
|
||||
;; Reference to another property's values.
|
||||
((setq name (match-string-no-properties 2 string))
|
||||
(setq elems (delete-dups (append (cdr (assoc name env)) elems))))
|
||||
;; A literal
|
||||
((setq name (match-string-no-properties 9 string))
|
||||
(push name elems))
|
||||
;; We just ignore the rest. I.e. we ignore the structure because
|
||||
;; it's too difficult to exploit anyway (it would allow us to only
|
||||
;; complete top/center/bottom after one of left/center/right and
|
||||
;; vice-versa).
|
||||
(t nil)))
|
||||
elems))
|
||||
|
||||
|
||||
(defun css-extract-props-and-vals ()
|
||||
(with-temp-buffer
|
||||
(url-insert-file-contents "http://www.w3.org/TR/CSS21/propidx.html")
|
||||
(goto-char (point-min))
|
||||
(let ((props ()))
|
||||
(while (re-search-forward "#propdef-\\([^\"]+\\)\"><span class=\"propinst-\\1 xref\">'\\1'</span></a>" nil t)
|
||||
(let ((prop (match-string-no-properties 1)))
|
||||
(save-excursion
|
||||
(goto-char (match-end 0))
|
||||
(search-forward "<td>")
|
||||
(let ((vals-string (buffer-substring (point)
|
||||
(progn
|
||||
(re-search-forward "[ \t\n]+|[ \t\n]+<a href=\"cascade.html#value-def-inherit\" class=\"noxref\"><span class=\"value-inst-inherit\">inherit</span></a>")
|
||||
(match-beginning 0)))))
|
||||
;;
|
||||
(push (cons prop (css-extract-parse-val-grammar vals-string props))
|
||||
props)))))
|
||||
props)))
|
||||
|
||||
;; Extraction was done with:
|
||||
;; (css-extract-keyword-list
|
||||
;; '((pseudo . "^ +\\* :\\([^ \n,]+\\)")
|
||||
;; (at . "^ +\\* @\\([^ \n,]+\\)")
|
||||
;; (descriptor . "^ +\\* '\\([^ '\n]+\\)' (descriptor)")
|
||||
;; (media . "^ +\\* '\\([^ '\n]+\\)' media group")
|
||||
;; (property . "^ +\\* '\\([^ '\n]+\\)',")))
|
||||
|
||||
(defconst css-pseudo-ids
|
||||
'("active" "after" "before" "first" "first-child" "first-letter" "first-line"
|
||||
"focus" "hover" "lang" "left" "link" "right" "visited")
|
||||
"Identifiers for pseudo-elements and pseudo-classes.")
|
||||
|
||||
(defconst css-at-ids
|
||||
'("charset" "font-face" "import" "media" "page")
|
||||
"Identifiers that appear in the form @foo.")
|
||||
|
||||
(defconst css-descriptor-ids
|
||||
'("ascent" "baseline" "bbox" "cap-height" "centerline" "definition-src"
|
||||
"descent" "font-family" "font-size" "font-stretch" "font-style"
|
||||
"font-variant" "font-weight" "mathline" "panose-1" "slope" "src" "stemh"
|
||||
"stemv" "topline" "unicode-range" "units-per-em" "widths" "x-height")
|
||||
"Identifiers for font descriptors.")
|
||||
|
||||
(defconst css-media-ids
|
||||
'("all" "aural" "bitmap" "continuous" "grid" "paged" "static" "tactile"
|
||||
"visual")
|
||||
"Identifiers for types of media.")
|
||||
|
||||
(defconst css-property-ids
|
||||
'("azimuth" "background" "background-attachment" "background-color"
|
||||
"background-image" "background-position" "background-repeat" "block"
|
||||
"border" "border-bottom" "border-bottom-color" "border-bottom-style"
|
||||
"border-bottom-width" "border-collapse" "border-color" "border-left"
|
||||
"border-left-color" "border-left-style" "border-left-width" "border-right"
|
||||
"border-right-color" "border-right-style" "border-right-width"
|
||||
"border-spacing" "border-style" "border-top" "border-top-color"
|
||||
"border-top-style" "border-top-width" "border-width" "bottom"
|
||||
"caption-side" "clear" "clip" "color" "compact" "content"
|
||||
"counter-increment" "counter-reset" "cue" "cue-after" "cue-before"
|
||||
"cursor" "dashed" "direction" "display" "dotted" "double" "elevation"
|
||||
"empty-cells" "float" "font" "font-family" "font-size" "font-size-adjust"
|
||||
"font-stretch" "font-style" "font-variant" "font-weight" "groove" "height"
|
||||
"hidden" "inline" "inline-table" "inset" "left" "letter-spacing"
|
||||
"line-height" "list-item" "list-style" "list-style-image"
|
||||
"list-style-position" "list-style-type" "margin" "margin-bottom"
|
||||
"margin-left" "margin-right" "margin-top" "marker-offset" "marks"
|
||||
"max-height" "max-width" "min-height" "min-width" "orphans" "outline"
|
||||
"outline-color" "outline-style" "outline-width" "outset" "overflow"
|
||||
"padding" "padding-bottom" "padding-left" "padding-right" "padding-top"
|
||||
"page" "page-break-after" "page-break-before" "page-break-inside" "pause"
|
||||
"pause-after" "pause-before" "pitch" "pitch-range" "play-during" "position"
|
||||
"quotes" "richness" "ridge" "right" "run-in" "size" "solid" "speak"
|
||||
"speak-header" "speak-numeral" "speak-punctuation" "speech-rate" "stress"
|
||||
"table" "table-caption" "table-cell" "table-column" "table-column-group"
|
||||
"table-footer-group" "table-header-group" "table-layout" "table-row"
|
||||
"table-row-group" "text-align" "text-decoration" "text-indent"
|
||||
"text-shadow" "text-transform" "top" "unicode-bidi" "vertical-align"
|
||||
"visibility" "voice-family" "volume" "white-space" "widows" "width"
|
||||
"word-spacing" "z-index")
|
||||
"Identifiers for properties.")
|
||||
|
||||
(defcustom css-electrick-keys '(?\} ?\;) ;; '()
|
||||
"Self inserting keys which should trigger re-indentation."
|
||||
:type '(repeat character)
|
||||
:options '((?\} ?\;)))
|
||||
|
||||
(defvar css-mode-syntax-table
|
||||
(let ((st (make-syntax-table)))
|
||||
;; C-style comments.
|
||||
(modify-syntax-entry ?/ ". 14" st)
|
||||
(modify-syntax-entry ?* ". 23" st)
|
||||
;; Strings.
|
||||
(modify-syntax-entry ?\" "\"" st)
|
||||
(modify-syntax-entry ?\' "\"" st)
|
||||
;; Blocks.
|
||||
(modify-syntax-entry ?\{ "(}" st)
|
||||
(modify-syntax-entry ?\} "){" st)
|
||||
;; Args in url(...) thingies and other "function calls".
|
||||
(modify-syntax-entry ?\( "()" st)
|
||||
(modify-syntax-entry ?\) ")(" st)
|
||||
;; To match attributes in selectors.
|
||||
(modify-syntax-entry ?\[ "(]" st)
|
||||
(modify-syntax-entry ?\] ")[" st)
|
||||
;; Special chars that sometimes come at the beginning of words.
|
||||
(modify-syntax-entry ?@ "'" st)
|
||||
;; (modify-syntax-entry ?: "'" st)
|
||||
(modify-syntax-entry ?# "'" st)
|
||||
;; Distinction between words and symbols.
|
||||
(modify-syntax-entry ?- "_" st)
|
||||
st))
|
||||
|
||||
(defconst css-escapes-re
|
||||
"\\\\\\(?:[^\000-\037\177]\\|[0-9a-fA-F]+[ \n\t\r\f]?\\)")
|
||||
(defconst css-nmchar-re (concat "\\(?:[-[:alnum:]]\\|" css-escapes-re "\\)"))
|
||||
(defconst css-nmstart-re (concat "\\(?:[[:alpha:]]\\|" css-escapes-re "\\)"))
|
||||
(defconst css-ident-re (concat css-nmstart-re css-nmchar-re "*"))
|
||||
(defconst css-name-re (concat css-nmchar-re "+"))
|
||||
|
||||
(defface css-selector '((t :inherit font-lock-function-name-face))
|
||||
"Face to use for selectors.")
|
||||
(defface css-property '((t :inherit font-lock-variable-name-face))
|
||||
"Face to use for properties.")
|
||||
|
||||
(defvar css-font-lock-keywords
|
||||
`(("!\\s-*important" . font-lock-builtin-face)
|
||||
;; Atrules keywords. IDs not in css-at-ids are valid (ignored).
|
||||
;; In fact the regexp should probably be
|
||||
;; (,(concat "\\(@" css-ident-re "\\)\\([ \t\n][^;{]*\\)[;{]")
|
||||
;; (1 font-lock-builtin-face))
|
||||
;; Since "An at-rule consists of everything up to and including the next
|
||||
;; semicolon (;) or the next block, whichever comes first."
|
||||
(,(concat "@" css-ident-re) . font-lock-builtin-face)
|
||||
;; Selectors.
|
||||
;; FIXME: attribute selectors don't work well because they may contain
|
||||
;; strings which have already been highlighted as f-l-string-face and
|
||||
;; thus prevent this highlighting from being applied (actually now that
|
||||
;; I use `append' this should work better). But really the part of hte
|
||||
;; selector between [...] should simply not be highlighted.
|
||||
(,(concat "^\\([ \t]*[^@:{\n][^:{\n]+\\(?::" (regexp-opt css-pseudo-ids t)
|
||||
"\\(?:([^)]+)\\)?[^:{\n]*\\)*\\)\\(?:\n[ \t]*\\)*{")
|
||||
(1 'css-selector append))
|
||||
;; In the above rule, we allow the open-brace to be on some subsequent
|
||||
;; line. This will only work if we properly mark the intervening text
|
||||
;; as being part of a multiline element (and even then, this only
|
||||
;; ensures proper refontification, but not proper discovery).
|
||||
("^[ \t]*{" (0 (save-excursion
|
||||
(goto-char (match-beginning 0))
|
||||
(skip-chars-backward " \n\t")
|
||||
(put-text-property (point) (match-end 0)
|
||||
'font-lock-multiline t)
|
||||
;; No face.
|
||||
nil)))
|
||||
;; Properties. Again, we don't limit ourselves to css-property-ids.
|
||||
(,(concat "\\(?:[{;]\\|^\\)[ \t]*\\(" css-ident-re "\\)\\s-*:")
|
||||
(1 'css-property))))
|
||||
|
||||
(defvar css-font-lock-defaults
|
||||
'(css-font-lock-keywords nil t))
|
||||
|
||||
(unless (fboundp 'prog-mode) (defalias 'prog-mode 'fundamental-mode))
|
||||
|
||||
;;;###autoload (add-to-list 'auto-mode-alist '("\\.css\\'" . css-mode))
|
||||
;;;###autoload
|
||||
(define-derived-mode css-mode prog-mode "CSS"
|
||||
"Major mode to edit Cascading Style Sheets."
|
||||
(set (make-local-variable 'font-lock-defaults) css-font-lock-defaults)
|
||||
(set (make-local-variable 'comment-start) "/*")
|
||||
(set (make-local-variable 'comment-start-skip) "/\\*+[ \t]*")
|
||||
(set (make-local-variable 'comment-end) "*/")
|
||||
(set (make-local-variable 'comment-end-skip) "[ \t]*\\*+/")
|
||||
(set (make-local-variable 'forward-sexp-function) 'css-forward-sexp)
|
||||
(set (make-local-variable 'parse-sexp-ignore-comments) t)
|
||||
(set (make-local-variable 'indent-line-function) 'css-indent-line)
|
||||
(set (make-local-variable 'fill-paragraph-function)
|
||||
'css-fill-paragraph)
|
||||
(when css-electrick-keys
|
||||
(let ((fc (make-char-table 'auto-fill-chars)))
|
||||
(set-char-table-parent fc auto-fill-chars)
|
||||
(dolist (c css-electrick-keys)
|
||||
(aset fc c 'indent-according-to-mode))
|
||||
(set (make-local-variable 'auto-fill-chars) fc))))
|
||||
|
||||
(defun css-fill-paragraph (&optional justify)
|
||||
(save-excursion
|
||||
(let ((ppss (syntax-ppss))
|
||||
(eol (line-end-position)))
|
||||
(cond
|
||||
((and (nth 4 ppss)
|
||||
(save-excursion
|
||||
(goto-char (nth 8 ppss))
|
||||
(forward-comment 1)
|
||||
(prog1 (not (bolp))
|
||||
(setq eol (point)))))
|
||||
;; Filling inside a comment whose comment-end marker is not \n.
|
||||
;; This code is meant to be generic, so that it works not only for
|
||||
;; css-mode but for all modes.
|
||||
(save-restriction
|
||||
(narrow-to-region (nth 8 ppss) eol)
|
||||
(comment-normalize-vars)
|
||||
(let ((fill-paragraph-function nil)
|
||||
(paragraph-separate
|
||||
(if (and comment-continue
|
||||
(string-match "[^ \t]" comment-continue))
|
||||
(concat "\\(?:[ \t]*" (regexp-quote comment-continue)
|
||||
"\\)?\\(?:" paragraph-separate "\\)")
|
||||
paragraph-separate))
|
||||
(paragraph-start
|
||||
(if (and comment-continue
|
||||
(string-match "[^ \t]" comment-continue))
|
||||
(concat "\\(?:[ \t]*" (regexp-quote comment-continue)
|
||||
"\\)?\\(?:" paragraph-start "\\)")
|
||||
paragraph-start)))
|
||||
(fill-paragraph justify)
|
||||
;; Don't try filling again.
|
||||
t)))
|
||||
|
||||
((and (null (nth 8 ppss))
|
||||
(or (nth 1 ppss)
|
||||
(and (ignore-errors
|
||||
(down-list 1)
|
||||
(when (<= (point) eol)
|
||||
(setq ppss (syntax-ppss)))))))
|
||||
(goto-char (nth 1 ppss))
|
||||
(let ((end (save-excursion
|
||||
(ignore-errors (forward-sexp 1) (copy-marker (point) t)))))
|
||||
(when end
|
||||
(while (re-search-forward "[{;}]" end t)
|
||||
(cond
|
||||
;; This is a false positive inside a string or comment.
|
||||
((nth 8 (syntax-ppss)) nil)
|
||||
((eq (char-before) ?\})
|
||||
(save-excursion
|
||||
(forward-char -1)
|
||||
(skip-chars-backward " \t")
|
||||
(unless (bolp) (newline))))
|
||||
(t
|
||||
(while
|
||||
(progn
|
||||
(setq eol (line-end-position))
|
||||
(and (forward-comment 1)
|
||||
(> (point) eol)
|
||||
;; A multi-line comment should be on its own line.
|
||||
(save-excursion (forward-comment -1)
|
||||
(when (< (point) eol)
|
||||
(newline)
|
||||
t)))))
|
||||
(if (< (point) eol) (newline)))))
|
||||
(goto-char (nth 1 ppss))
|
||||
(indent-region (line-beginning-position 2) end)
|
||||
;; Don't use the default filling code.
|
||||
t)))))))
|
||||
|
||||
;;; Navigation and indentation.
|
||||
|
||||
(defconst css-navigation-syntax-table
|
||||
(let ((st (make-syntax-table css-mode-syntax-table)))
|
||||
(map-char-table (lambda (c v)
|
||||
;; Turn punctuation (code = 1) into symbol (code = 1).
|
||||
(if (eq (car-safe v) 1)
|
||||
(set-char-table-range st c (cons 3 (cdr v)))))
|
||||
st)
|
||||
st))
|
||||
|
||||
(defun css-backward-sexp (n)
|
||||
(let ((forward-sexp-function nil))
|
||||
(if (< n 0) (css-forward-sexp (- n))
|
||||
(while (> n 0)
|
||||
(setq n (1- n))
|
||||
(forward-comment (- (point-max)))
|
||||
(if (not (eq (char-before) ?\;))
|
||||
(backward-sexp 1)
|
||||
(while (progn (backward-sexp 1)
|
||||
(save-excursion
|
||||
(forward-comment (- (point-max)))
|
||||
;; FIXME: We should also skip punctuation.
|
||||
(not (memq (char-before) '(?\; ?\{)))))))))))
|
||||
|
||||
(defun css-forward-sexp (n)
|
||||
(let ((forward-sexp-function nil))
|
||||
(if (< n 0) (css-backward-sexp (- n))
|
||||
(while (> n 0)
|
||||
(setq n (1- n))
|
||||
(forward-comment (point-max))
|
||||
(if (not (eq (char-after) ?\;))
|
||||
(forward-sexp 1)
|
||||
(while (progn (forward-sexp 1)
|
||||
(save-excursion
|
||||
(forward-comment (point-max))
|
||||
;; FIXME: We should also skip punctuation.
|
||||
(not (memq (char-after) '(?\; ?\})))))))))))
|
||||
|
||||
(defun css-indent-calculate-virtual ()
|
||||
(if (or (save-excursion (skip-chars-backward " \t") (bolp))
|
||||
(if (looking-at "\\s(")
|
||||
(save-excursion
|
||||
(forward-char 1) (skip-chars-forward " \t")
|
||||
(not (or (eolp) (looking-at comment-start-skip))))))
|
||||
(current-column)
|
||||
(css-indent-calculate)))
|
||||
|
||||
(defcustom css-indent-offset 4
|
||||
"Basic size of one indentation step."
|
||||
:type 'integer)
|
||||
|
||||
(defun css-indent-calculate ()
|
||||
(let ((ppss (syntax-ppss))
|
||||
pos)
|
||||
(with-syntax-table css-navigation-syntax-table
|
||||
(save-excursion
|
||||
(cond
|
||||
;; Inside a string.
|
||||
((nth 3 ppss) 'noindent)
|
||||
;; Inside a comment.
|
||||
((nth 4 ppss)
|
||||
(setq pos (point))
|
||||
(forward-line -1)
|
||||
(skip-chars-forward " \t")
|
||||
(if (>= (nth 8 ppss) (point))
|
||||
(progn
|
||||
(goto-char (nth 8 ppss))
|
||||
(if (eq (char-after pos) ?*)
|
||||
(forward-char 1)
|
||||
(if (not (looking-at comment-start-skip))
|
||||
(error "Internal css-mode error")
|
||||
(goto-char (match-end 0))))
|
||||
(current-column))
|
||||
(if (and (eq (char-after pos) ?*) (eq (char-after) ?*))
|
||||
(current-column)
|
||||
;; 'noindent
|
||||
(current-column)
|
||||
)))
|
||||
;; In normal code.
|
||||
(t
|
||||
(or
|
||||
(when (looking-at "\\s)")
|
||||
(forward-char 1)
|
||||
(backward-sexp 1)
|
||||
(css-indent-calculate-virtual))
|
||||
(when (looking-at comment-start-skip)
|
||||
(forward-comment (point-max))
|
||||
(css-indent-calculate))
|
||||
(when (save-excursion (forward-comment (- (point-max)))
|
||||
(setq pos (point))
|
||||
(eq (char-syntax (preceding-char)) ?\())
|
||||
(goto-char (1- pos))
|
||||
(if (not (looking-at "\\s([ \t]*"))
|
||||
(error "Internal css-mode error")
|
||||
(if (or (memq (char-after (match-end 0)) '(?\n nil))
|
||||
(save-excursion (goto-char (match-end 0))
|
||||
(looking-at comment-start-skip)))
|
||||
(+ (css-indent-calculate-virtual) css-indent-offset)
|
||||
(progn (goto-char (match-end 0)) (current-column)))))
|
||||
(progn
|
||||
(css-backward-sexp 1)
|
||||
(if (looking-at "\\s(")
|
||||
(css-indent-calculate)
|
||||
(css-indent-calculate-virtual))))))))))
|
||||
|
||||
|
||||
(defun css-indent-line ()
|
||||
"Indent current line according to CSS indentation rules."
|
||||
(interactive)
|
||||
(let* ((savep (point))
|
||||
(forward-sexp-function nil)
|
||||
(indent (condition-case nil
|
||||
(save-excursion
|
||||
(forward-line 0)
|
||||
(skip-chars-forward " \t")
|
||||
(if (>= (point) savep) (setq savep nil))
|
||||
(css-indent-calculate))
|
||||
(error nil))))
|
||||
(if (not (numberp indent)) 'noindent
|
||||
(if savep
|
||||
(save-excursion (indent-line-to indent))
|
||||
(indent-line-to indent)))))
|
||||
|
||||
(provide 'css-mode)
|
||||
;; arch-tag: b4d8b8e2-b130-4e74-b3aa-cd8f1ab659d0
|
||||
;;; css-mode.el ends here
|
603
lisp/textmodes/org-publish.el
Normal file
603
lisp/textmodes/org-publish.el
Normal file
|
@ -0,0 +1,603 @@
|
|||
;;; org-publish.el --- publish related org-mode files as a website
|
||||
|
||||
;; Copyright (C) 2006, 2007 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: David O'Toole <dto@gnu.org>
|
||||
;; Keywords: hypermedia, outlines
|
||||
;; Version: 1.80
|
||||
|
||||
;; $Id: org-publish.el,v 1.2 2007/06/07 02:04:17 miles Exp $
|
||||
|
||||
;; This file is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation; either version 2, or (at your option)
|
||||
;; any later version.
|
||||
|
||||
;; This file is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs; see the file COPYING. If not, write to
|
||||
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
;; Boston, MA 02110-1301, USA.
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Requires at least version 4.27 of org.el
|
||||
;;
|
||||
;; The official org-mode website:
|
||||
;; http://staff.science.uva.nl/~dominik/Tools/org/
|
||||
;;
|
||||
;; Home page for org-publish.el:
|
||||
;; http://dto.freeshell.org/notebook/OrgMode.html
|
||||
|
||||
;; This program extends the HTML publishing support of Emacs Org-mode
|
||||
;; to allow configurable publishing of related sets of files as a
|
||||
;; complete website.
|
||||
;;
|
||||
;; org-publish.el can do the following:
|
||||
;;
|
||||
;; + Publish all one's org-files to html
|
||||
;; + Upload html, images, attachments and other files to a web server
|
||||
;; + Exclude selected private pages from publishing
|
||||
;; + Publish a clickable index of pages
|
||||
;; + Manage local timestamps, for publishing only changed files
|
||||
;; + Accept plugin functions to extend range of publishable content
|
||||
;;
|
||||
;; Special thanks to the org-mode maintainer Carsten Dominik for his
|
||||
;; ideas, enthusiasm, and cooperation.
|
||||
|
||||
;;; Installation:
|
||||
|
||||
;; Put org-publish.el in your load path, byte-compile it, and then add
|
||||
;; the following lines to your emacs initialization file:
|
||||
|
||||
;; (autoload 'org-publish "org-publish" nil t)
|
||||
;; (autoload 'org-publish "org-publish-all" nil t)
|
||||
;; (autoload 'org-publish "org-publish-current-file" nil t)
|
||||
;; (autoload 'org-publish "org-publish-current-project" nil t)
|
||||
|
||||
;; NOTE: When org-publish.el is included with org.el, those forms are
|
||||
;; already in the file org-install.el, and hence don't need to be put
|
||||
;; in your emacs initialization file in this case.
|
||||
|
||||
;;; Usage:
|
||||
;;
|
||||
;; The program's main configuration variable is
|
||||
;; `org-publish-project-alist'. See below for example configurations
|
||||
;; with commentary.
|
||||
|
||||
;; The main interactive functions are:
|
||||
;;
|
||||
;; M-x org-publish
|
||||
;; M-x org-publish-all
|
||||
;; M-x org-publish-current-file
|
||||
;; M-x org-publish-current-project
|
||||
|
||||
;;;; Simple example configuration:
|
||||
|
||||
;; (setq org-publish-project-alist
|
||||
;; (list
|
||||
;; '("org" . (:base-directory "~/org/"
|
||||
;; :base-extension "org"
|
||||
;; :publishing-directory "~/public_html"
|
||||
;; :with-section-numbers nil
|
||||
;; :table-of-contents nil
|
||||
;; :style "<link rel=stylesheet href=\"../other/mystyle.css\" type=\"text/css\">")))
|
||||
|
||||
;;;; More complex example configuration:
|
||||
|
||||
;; Imagine your *.org files are kept in ~/org, your images in
|
||||
;; ~/images, and stylesheets in ~/other. Now imagine you want to
|
||||
;; publish the files through an ssh connection to a remote host, via
|
||||
;; Tramp-mode. To maintain relative links from *.org files to /images
|
||||
;; and /other, we should replicate the same directory structure in
|
||||
;; your web server account's designated html root (in this case,
|
||||
;; assumed to be ~/html)
|
||||
|
||||
;; Once you've done created the proper directories, you can adapt the
|
||||
;; following example configuration to your specific paths, run M-x
|
||||
;; org-publish-all, and it should publish the files to the correct
|
||||
;; directories on the web server, transforming the *.org files into
|
||||
;; HTML, and leaving other files alone.
|
||||
|
||||
;; (setq org-publish-project-alist
|
||||
;; (list
|
||||
;; '("orgfiles" :base-directory "~/org/"
|
||||
;; :base-extension "org"
|
||||
;; :publishing-directory "/ssh:user@host:~/html/notebook/"
|
||||
;; :publishing-function org-publish-org-to-html
|
||||
;; :exclude "PrivatePage.org" ;; regexp
|
||||
;; :headline-levels 3
|
||||
;; :with-section-numbers nil
|
||||
;; :table-of-contents nil
|
||||
;; :style "<link rel=stylesheet href=\"../other/mystyle.css\" type=\"text/css\">"
|
||||
;; :auto-preamble t
|
||||
;; :auto-postamble nil)
|
||||
;;
|
||||
;; ("images" :base-directory "~/images/"
|
||||
;; :base-extension "jpg\\|gif\\|png"
|
||||
;; :publishing-directory "/ssh:user@host:~/html/images/"
|
||||
;; :publishing-function org-publish-attachment)
|
||||
;;
|
||||
;; ("other" :base-directory "~/other/"
|
||||
;; :base-extension "css"
|
||||
;; :publishing-directory "/ssh:user@host:~/html/other/"
|
||||
;; :publishing-function org-publish-attachment)
|
||||
;; ("website" :components ("orgfiles" "images" "other"))))
|
||||
|
||||
;; For more information, see the documentation for the variable
|
||||
;; `org-publish-project-alist'.
|
||||
|
||||
;; Of course, you don't have to publish to remote directories from
|
||||
;; within emacs. You can always just publish to local folders, and
|
||||
;; then use the synchronization/upload tool of your choice.
|
||||
|
||||
|
||||
;;; List of user-visible changes since version 1.27
|
||||
|
||||
;; 1.78: Allow list-valued :publishing-function
|
||||
;; 1.77: Added :preparation-function, this allows you to use GNU Make etc.
|
||||
;; 1.65: Remove old "composite projects". They're redundant.
|
||||
;; 1.64: Allow meta-projects with :components
|
||||
;; 1.57: Timestamps flag is now called "org-publish-use-timestamps-flag"
|
||||
;; 1.52: Properly set default for :index-filename
|
||||
;; 1.48: Composite projects allowed.
|
||||
;; :include keyword allowed.
|
||||
;; 1.43: Index no longer includes itself in the index.
|
||||
;; 1.42: Fix "function definition is void" error
|
||||
;; when :publishing-function not set in org-publish-current-file.
|
||||
;; 1.41: Fixed bug where index isn't published on first try.
|
||||
;; 1.37: Added interactive function "org-publish". Prompts for particular
|
||||
;; project name to publish.
|
||||
;; 1.34: Added force-publish option to all interactive functions.
|
||||
;; 1.32: Fixed "index.org has changed on disk" error during index publishing.
|
||||
;; 1.30: Fixed startup error caused by (require 'em-unix)
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
(eval-when-compile
|
||||
(require 'cl))
|
||||
|
||||
|
||||
(defgroup org-publish nil
|
||||
"Options for publishing a set of Org-mode and related files."
|
||||
:tag "Org Publishing"
|
||||
:group 'org)
|
||||
|
||||
|
||||
(defcustom org-publish-project-alist nil
|
||||
"Association list to control publishing behavior.
|
||||
Each element of the alist is a publishing 'project.' The CAR of
|
||||
each element is a string, uniquely identifying the project. The
|
||||
CDR of each element is in one of the following forms:
|
||||
|
||||
(:property value :property value ... )
|
||||
|
||||
OR,
|
||||
|
||||
(:components (\"project-1\" \"project-2\" ...))
|
||||
|
||||
When the CDR of an element of org-publish-project-alist is in
|
||||
this second form, the elements of the list after :components are
|
||||
taken to be components of the project, which group together files
|
||||
requiring different publishing options. When you publish such a
|
||||
project with M-x org-publish, the components all publish.
|
||||
|
||||
When a property is given a value in org-publish-project-alist, its
|
||||
setting overrides the value of the corresponding user variable
|
||||
(if any) during publishing. However, options set within a file
|
||||
override everything.
|
||||
|
||||
Most properties are optional, but some should always be set:
|
||||
|
||||
:base-directory Directory containing publishing source files
|
||||
:base-extension Extension (without the dot!) of source files.
|
||||
This can be a regular expression.
|
||||
:publishing-directory Directory (possibly remote) where output
|
||||
files will be published
|
||||
|
||||
The :exclude property may be used to prevent certain files from
|
||||
being published. Its value may be a string or regexp matching
|
||||
file names you don't want to be published.
|
||||
|
||||
The :include property may be used to include extra files. Its
|
||||
value may be a list of filenames to include. The filenames are
|
||||
considered relative to the publishing directory.
|
||||
|
||||
When both :include and :exclude properties are given values, the
|
||||
exclusion step happens first.
|
||||
|
||||
One special property controls which back-end function to use for
|
||||
publishing files in the project. This can be used to extend the
|
||||
set of file types publishable by org-publish, as well as the set
|
||||
of output formats.
|
||||
|
||||
:publishing-function Function to publish file. The default is
|
||||
org-publish-org-to-html, but other
|
||||
values are possible. May also be a
|
||||
list of functions, in which case
|
||||
each function in the list is invoked
|
||||
in turn.
|
||||
|
||||
Another property allows you to insert code that prepares a
|
||||
project for publishing. For example, you could call GNU Make on a
|
||||
certain makefile, to ensure published files are built up to date.
|
||||
|
||||
:preparation-function Function to be called before publishing
|
||||
this project.
|
||||
|
||||
Some properties control details of the Org publishing process,
|
||||
and are equivalent to the corresponding user variables listed in
|
||||
the right column. See the documentation for those variables to
|
||||
learn more about their use and default values.
|
||||
|
||||
:language org-export-default-language
|
||||
:headline-levels org-export-headline-levels
|
||||
:section-numbers org-export-with-section-numbers
|
||||
:table-of-contents org-export-with-toc
|
||||
:emphasize org-export-with-emphasize
|
||||
:sub-superscript org-export-with-sub-superscripts
|
||||
:TeX-macros org-export-with-TeX-macros
|
||||
:fixed-width org-export-with-fixed-width
|
||||
:tables org-export-with-tables
|
||||
:table-auto-headline org-export-highlight-first-table-line
|
||||
:style org-export-html-style
|
||||
:convert-org-links org-export-html-link-org-files-as-html
|
||||
:inline-images org-export-html-inline-images
|
||||
:expand-quoted-html org-export-html-expand
|
||||
:timestamp org-export-html-with-timestamp
|
||||
:publishing-directory org-export-publishing-directory
|
||||
:preamble org-export-html-preamble
|
||||
:postamble org-export-html-postamble
|
||||
:auto-preamble org-export-html-auto-preamble
|
||||
:auto-postamble org-export-html-auto-postamble
|
||||
:author user-full-name
|
||||
:email user-mail-address
|
||||
|
||||
The following properties may be used to control publishing of an
|
||||
index of files or summary page for a given project.
|
||||
|
||||
:auto-index Whether to publish an index during
|
||||
org-publish-current-project or org-publish-all.
|
||||
:index-filename Filename for output of index. Defaults
|
||||
to 'index.org' (which becomes 'index.html')
|
||||
:index-title Title of index page. Defaults to name of file.
|
||||
:index-function Plugin function to use for generation of index.
|
||||
Defaults to 'org-publish-org-index', which
|
||||
generates a plain list of links to all files
|
||||
in the project.
|
||||
"
|
||||
:group 'org-publish
|
||||
:type 'alist)
|
||||
|
||||
|
||||
(defcustom org-publish-use-timestamps-flag t
|
||||
"When non-nil, use timestamp checking to publish only changed files.
|
||||
When nil, do no timestamp checking and always publish all
|
||||
files."
|
||||
:group 'org-publish
|
||||
:type 'boolean)
|
||||
|
||||
|
||||
(defcustom org-publish-timestamp-directory "~/.org-timestamps/"
|
||||
"Name of directory in which to store publishing timestamps."
|
||||
:group 'org-publish
|
||||
:type 'string)
|
||||
|
||||
|
||||
;;;; Timestamp-related functions
|
||||
|
||||
|
||||
(defun org-publish-timestamp-filename (filename)
|
||||
"Return path to timestamp file for filename FILENAME."
|
||||
(while (string-match "~\\|/" filename)
|
||||
(setq filename (replace-match "_" nil t filename)))
|
||||
(concat org-publish-timestamp-directory filename ".timestamp"))
|
||||
|
||||
|
||||
(defun org-publish-needed-p (filename)
|
||||
"Check whether file should be published.
|
||||
If org-publish-use-timestamps-flag is set to nil, this function always
|
||||
returns t. Otherwise, check the timestamps folder to determine
|
||||
whether file should be published."
|
||||
(if org-publish-use-timestamps-flag
|
||||
(progn
|
||||
;;
|
||||
;; create folder if needed
|
||||
(if (not (file-exists-p org-publish-timestamp-directory))
|
||||
(make-directory org-publish-timestamp-directory)
|
||||
(if (not (file-directory-p org-publish-timestamp-directory))
|
||||
(error "org-publish-timestamp-directory must be a directory.")))
|
||||
;;
|
||||
;; check timestamp. ok if timestamp file doesn't exist
|
||||
(let* ((timestamp (org-publish-timestamp-filename filename))
|
||||
(rtn (file-newer-than-file-p filename timestamp)))
|
||||
(if rtn
|
||||
;; handle new timestamps
|
||||
(if (not (file-exists-p timestamp))
|
||||
;; create file
|
||||
(with-temp-buffer
|
||||
(make-directory (file-name-directory timestamp) :parents)
|
||||
(write-file timestamp)
|
||||
(kill-buffer (current-buffer)))))
|
||||
rtn))
|
||||
t))
|
||||
|
||||
|
||||
(defun org-publish-update-timestamp (filename)
|
||||
"Update publishing timestamp for file FILENAME."
|
||||
(let ((timestamp (org-publish-timestamp-filename filename)))
|
||||
;; Emacs 21 doesn't have set-file-times
|
||||
(if (fboundp 'set-file-times)
|
||||
(set-file-times timestamp)
|
||||
(call-process "touch" nil 0 nil timestamp))))
|
||||
|
||||
|
||||
;;;; A hash mapping files to project names
|
||||
|
||||
|
||||
(defvar org-publish-files (make-hash-table :test 'equal) "Hash
|
||||
table mapping file names to project names.")
|
||||
|
||||
|
||||
;;;; Checking filenames against this hash
|
||||
|
||||
|
||||
(defun org-publish-validate-link (link &optional directory)
|
||||
(gethash (file-truename (expand-file-name link directory))
|
||||
org-publish-files))
|
||||
|
||||
|
||||
;;;; Getting project information out of org-publish-project-alist
|
||||
|
||||
|
||||
(defun org-publish-get-plists (&optional project-name)
|
||||
"Return a list of property lists for project PROJECT-NAME.
|
||||
When argument is not given, return all property lists for all projects."
|
||||
(let ((alist (if project-name
|
||||
(list (assoc project-name org-publish-project-alist))
|
||||
org-publish-project-alist))
|
||||
(project nil)
|
||||
(plists nil)
|
||||
(single nil)
|
||||
(components nil))
|
||||
|
||||
;;
|
||||
;;
|
||||
(while (setq project (pop alist))
|
||||
;; what kind of project is it?
|
||||
(if (setq components (plist-get (cdr project) :components))
|
||||
;; meta project. annotate each plist with name of enclosing project
|
||||
(setq single
|
||||
(apply 'append
|
||||
(mapcar 'org-publish-get-plists components)))
|
||||
;; normal project
|
||||
(setq single (list (cdr project))))
|
||||
;;
|
||||
(setq plists (append plists single))
|
||||
(dolist (p single)
|
||||
(let* ((exclude (plist-get p :exclude))
|
||||
(files (org-publish-get-base-files p exclude)))
|
||||
(dolist (f files)
|
||||
(puthash (file-truename f) (car project) org-publish-files)))))
|
||||
plists))
|
||||
|
||||
|
||||
|
||||
(defun org-publish-get-base-files (plist &optional exclude-regexp)
|
||||
"Return a list of all files in project defined by PLIST.
|
||||
If EXCLUDE-REGEXP is set, this will be used to filter out
|
||||
matching filenames."
|
||||
(let* ((dir (file-name-as-directory (plist-get plist :base-directory)))
|
||||
(include-list (plist-get plist :include))
|
||||
(extension (or (plist-get plist :base-extension) "org"))
|
||||
(regexp (concat "^[^\\.].*\\.\\(" extension "\\)$"))
|
||||
(allfiles (directory-files dir t regexp)))
|
||||
;;
|
||||
;; exclude files
|
||||
(setq allfiles
|
||||
(if (not exclude-regexp)
|
||||
allfiles
|
||||
(delq nil
|
||||
(mapcar (lambda (x)
|
||||
(if (string-match exclude-regexp x) nil x))
|
||||
allfiles))))
|
||||
;;
|
||||
;; include extra files
|
||||
(let ((inc nil))
|
||||
(while (setq inc (pop include-list))
|
||||
(setq allfiles (cons (expand-file-name inc dir) allfiles))))
|
||||
|
||||
allfiles))
|
||||
|
||||
|
||||
(defun org-publish-get-project-from-filename (filename)
|
||||
"Figure out which project a given FILENAME belongs to, if any.
|
||||
Filename should contain full path. Returns name of project, or
|
||||
nil if not found."
|
||||
(org-publish-get-plists)
|
||||
(gethash (file-truename filename) org-publish-files))
|
||||
|
||||
|
||||
(defun org-publish-get-plist-from-filename (filename)
|
||||
"Return publishing configuration plist for file FILENAME."
|
||||
(let ((found nil))
|
||||
(mapcar
|
||||
(lambda (plist)
|
||||
(let ((files (org-publish-get-base-files plist)))
|
||||
(if (member (expand-file-name filename) files)
|
||||
(setq found plist))))
|
||||
(org-publish-get-plists))
|
||||
found))
|
||||
|
||||
|
||||
|
||||
;;;; Pluggable publishing back-end functions
|
||||
|
||||
|
||||
(defun org-publish-org-to-html (plist filename)
|
||||
"Publish an org file to HTML.
|
||||
PLIST is the property list for the given project.
|
||||
FILENAME is the filename of the org file to be published."
|
||||
(require 'org)
|
||||
(let* ((arg (plist-get plist :headline-levels)))
|
||||
(progn
|
||||
(find-file filename)
|
||||
(org-export-as-html arg nil plist)
|
||||
;; get rid of HTML buffer
|
||||
(kill-buffer (current-buffer)))))
|
||||
|
||||
|
||||
(defun org-publish-attachment (plist filename)
|
||||
"Publish a file with no transformation of any kind.
|
||||
PLIST is the property list for the given project.
|
||||
FILENAME is the filename of the file to be published."
|
||||
;; make sure eshell/cp code is loaded
|
||||
(require 'eshell)
|
||||
(require 'esh-maint)
|
||||
(require 'em-unix)
|
||||
(let ((destination (file-name-as-directory (plist-get plist :publishing-directory))))
|
||||
(eshell/cp filename destination)))
|
||||
|
||||
|
||||
;;;; Publishing files, sets of files, and indices
|
||||
|
||||
|
||||
(defun org-publish-file (filename)
|
||||
"Publish file FILENAME."
|
||||
(let* ((project-name (org-publish-get-project-from-filename filename))
|
||||
(plist (org-publish-get-plist-from-filename filename))
|
||||
(publishing-function (or (plist-get plist :publishing-function) 'org-publish-org-to-html)))
|
||||
(if (not project-name)
|
||||
(error (format "File %s is not part of any known project." filename)))
|
||||
(when (org-publish-needed-p filename)
|
||||
(if (listp publishing-function)
|
||||
;; allow chain of publishing functions
|
||||
(mapc (lambda (f)
|
||||
(funcall f plist filename))
|
||||
publishing-function)
|
||||
(funcall publishing-function plist filename))
|
||||
(org-publish-update-timestamp filename))))
|
||||
|
||||
|
||||
(defun org-publish-plist (plist)
|
||||
"Publish all files in set defined by PLIST.
|
||||
If :auto-index is set, publish the index too."
|
||||
(let* ((exclude-regexp (plist-get plist :exclude))
|
||||
(publishing-function (or (plist-get plist :publishing-function) 'org-publish-org-to-html))
|
||||
(index-p (plist-get plist :auto-index))
|
||||
(index-filename (or (plist-get plist :index-filename) "index.org"))
|
||||
(index-function (or (plist-get plist :index-function) 'org-publish-org-index))
|
||||
(preparation-function (plist-get plist :preparation-function))
|
||||
(f nil))
|
||||
;;
|
||||
(when preparation-function
|
||||
(funcall preparation-function))
|
||||
(if index-p
|
||||
(funcall index-function plist index-filename))
|
||||
(let ((files (org-publish-get-base-files plist exclude-regexp)))
|
||||
(while (setq f (pop files))
|
||||
;; check timestamps
|
||||
(when (org-publish-needed-p f)
|
||||
(if (listp publishing-function)
|
||||
;; allow chain of publishing functions
|
||||
(mapc (lambda (func)
|
||||
(funcall func plist f))
|
||||
publishing-function)
|
||||
(funcall publishing-function plist f))
|
||||
(org-publish-update-timestamp f))))))
|
||||
|
||||
|
||||
(defun org-publish-org-index (plist &optional index-filename)
|
||||
"Create an index of pages in set defined by PLIST.
|
||||
Optionally set the filename of the index with INDEX-FILENAME;
|
||||
default is 'index.org'."
|
||||
(let* ((dir (file-name-as-directory (plist-get plist :base-directory)))
|
||||
(exclude-regexp (plist-get plist :exclude))
|
||||
(files (org-publish-get-base-files plist exclude-regexp))
|
||||
(index-filename (concat dir (or index-filename "index.org")))
|
||||
(index-buffer (find-buffer-visiting index-filename))
|
||||
(ifn (file-name-nondirectory index-filename))
|
||||
(f nil))
|
||||
;;
|
||||
;; if buffer is already open, kill it to prevent error message
|
||||
(if index-buffer
|
||||
(kill-buffer index-buffer))
|
||||
(with-temp-buffer
|
||||
(while (setq f (pop files))
|
||||
(let ((fn (file-name-nondirectory f)))
|
||||
(unless (string= fn ifn) ;; index shouldn't index itself
|
||||
(insert (concat " + [[file:" fn "]["
|
||||
(file-name-sans-extension fn)
|
||||
"]]\n")))))
|
||||
(write-file index-filename)
|
||||
(kill-buffer (current-buffer)))))
|
||||
|
||||
|
||||
;(defun org-publish-meta-index (meta-plist &optional index-filename)
|
||||
; "Create an index for a metaproject."
|
||||
; (let* ((plists (
|
||||
|
||||
|
||||
;;;; Interactive publishing functions
|
||||
|
||||
|
||||
;;;###autoload
|
||||
(defun org-publish (project-name &optional force)
|
||||
"Publish the project PROJECT-NAME."
|
||||
(interactive (list (completing-read "Project name: " org-publish-project-alist
|
||||
nil t)
|
||||
current-prefix-arg))
|
||||
(save-window-excursion
|
||||
(let ((org-publish-use-timestamps-flag (if force nil t))
|
||||
(plists (org-publish-get-plists project-name)))
|
||||
(mapcar 'org-publish-plist plists))))
|
||||
|
||||
|
||||
;;;###autoload
|
||||
(defun org-publish-current-project (&optional force)
|
||||
"Publish the project associated with the current file.
|
||||
With prefix argument, force publishing all files in project."
|
||||
(interactive "P")
|
||||
(save-window-excursion
|
||||
(let* ((project-name (org-publish-get-project-from-filename (buffer-file-name)))
|
||||
(org-publish-use-timestamps-flag (if force nil t)))
|
||||
(if (not project-name)
|
||||
(error (format "File %s is not part of any known project." (buffer-file-name))))
|
||||
(org-publish project-name))))
|
||||
|
||||
|
||||
;;;###autoload
|
||||
(defun org-publish-current-file (&optional force)
|
||||
"Publish the current file.
|
||||
With prefix argument, force publish the file."
|
||||
(interactive "P")
|
||||
(save-window-excursion
|
||||
(let ((org-publish-use-timestamps-flag
|
||||
(if force nil t)))
|
||||
(org-publish-file (buffer-file-name)))))
|
||||
|
||||
|
||||
;;;###autoload
|
||||
(defun org-publish-all (&optional force)
|
||||
"Publish all projects.
|
||||
With prefix argument, force publish all files."
|
||||
(interactive "P")
|
||||
(save-window-excursion
|
||||
(let ((org-publish-use-timestamps-flag
|
||||
(if force nil t))
|
||||
(plists (org-publish-get-plists)))
|
||||
(mapcar 'org-publish-plist plists))))
|
||||
|
||||
|
||||
|
||||
(provide 'org-publish)
|
||||
|
||||
;; arch-tag: 72807f3c-8af0-4a6b-8dca-c3376eb25adb
|
||||
;;; org-publish.el ends here
|
File diff suppressed because it is too large
Load diff
|
@ -155,9 +155,9 @@ options:
|
|||
" RET instead."))
|
||||
(insert "\n\nWith your current key bindings"
|
||||
" you can use "
|
||||
(if (string-equal "the menus" where)
|
||||
(if (string-match "^the .*menus?$" where)
|
||||
""
|
||||
"the key ")
|
||||
"the key")
|
||||
where
|
||||
" to get the function `"
|
||||
(format "%s" db)
|
||||
|
@ -406,7 +406,7 @@ where
|
|||
WHERE is a text describing the key sequences to which DEF-FUN is
|
||||
bound now (or, if it is remapped, a key sequence
|
||||
for the function it is remapped to)
|
||||
REMARK is a list with info about rebinding. It has either of
|
||||
REMARK is a list with info about rebinding. It has either of
|
||||
these formats:
|
||||
|
||||
\(TEXT cua-mode)
|
||||
|
@ -434,14 +434,26 @@ where
|
|||
(key-fun (if (eq def-fun 'ESC-prefix)
|
||||
(lookup-key global-map [27])
|
||||
(key-binding key)))
|
||||
(where (where-is-internal (if rem-fun rem-fun def-fun))))
|
||||
(where (where-is-internal (if rem-fun rem-fun def-fun)))
|
||||
cwhere)
|
||||
(if where
|
||||
(progn
|
||||
(setq where (key-description (car where)))
|
||||
(setq cwhere (car where)
|
||||
where (key-description cwhere))
|
||||
(when (and (< 10 (length where))
|
||||
(string= (substring where 0 (length "<menu-bar>"))
|
||||
"<menu-bar>"))
|
||||
(setq where "the menus")))
|
||||
(setq where
|
||||
(if (and (vectorp cwhere)
|
||||
(setq cwhere (elt cwhere 1))
|
||||
(setq cwhere
|
||||
(cadr
|
||||
(assoc cwhere
|
||||
(lookup-key global-map
|
||||
[menu-bar]))))
|
||||
(stringp cwhere))
|
||||
(format "the `%s' menu" cwhere)
|
||||
"the menus"))))
|
||||
(setq where ""))
|
||||
(setq remark nil)
|
||||
(unless
|
||||
|
@ -915,7 +927,7 @@ See `get-lang-string' for more information.")
|
|||
In certain places Emacs can replace a string shown to the user with
|
||||
a language specific string. This function retrieves such strings.
|
||||
|
||||
LANG is the language specification. It should be one of those
|
||||
LANG is the language specification. It should be one of those
|
||||
strings that can be returned by `read-language-name'. STRINGID
|
||||
is a symbol that specifies the string to retrieve.
|
||||
|
||||
|
|
|
@ -27,6 +27,9 @@
|
|||
|
||||
;;; Code:
|
||||
|
||||
(defconst emacs-copyright "Copyright (C) 2007 Free Software Foundation, Inc."
|
||||
"Short copyright string for this version of Emacs.")
|
||||
|
||||
(defconst emacs-version "23.0.0" "\
|
||||
Version numbers of this version of Emacs.")
|
||||
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2007-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 22.1 released.
|
||||
|
||||
2007-01-30 Robert J. Chassell <bob@rattlesnake.com>
|
||||
|
||||
* emacs-lisp-intro.texi (else): Rephrase message of first
|
||||
|
|
|
@ -1,9 +1,31 @@
|
|||
2007-06-03 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* commands.texi (Click Events): Describe width and height when
|
||||
object is nil.
|
||||
|
||||
2007-05-30 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* commands.texi (Click Events): Layout more logically. Describe
|
||||
width and height.
|
||||
(Drag Events, Motion Events): Update to new format for position.
|
||||
|
||||
2007-06-02 Richard Stallman <rms@gnu.org>
|
||||
|
||||
* frames.texi (Color Parameters): Add xref to (emacs)Standard Faces.
|
||||
|
||||
2007-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 22.1 released.
|
||||
|
||||
2007-06-01 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* text.texi (Special Properties): Correct meaning of fontified
|
||||
face.
|
||||
|
||||
2007-05-30 Richard Stallman <rms@gnu.org>
|
||||
|
||||
* text.texi (Special Properties): Add link to Adjusting Point.
|
||||
|
||||
2007-05-12 Richard Stallman <rms@gnu.org>
|
||||
|
||||
* text.texi (Margins): indent-to-left-margin is not the default.
|
||||
|
|
|
@ -1225,7 +1225,7 @@ input stream. @xref{Key Sequence Input}.
|
|||
|
||||
|
||||
@item @var{x}, @var{y}
|
||||
These are the pixel-denominated coordinates of the click, relative to
|
||||
These are the pixel coordinates of the click, relative to
|
||||
the top left corner of @var{window}, which is @code{(0 . 0)}.
|
||||
For the mode or header line, @var{y} does not have meaningful data.
|
||||
For the vertical line, @var{x} does not have meaningful data.
|
||||
|
@ -1266,13 +1266,14 @@ This is the image object on which the click occurred. It is either
|
|||
an image object as returned by @code{find-image} if click was in an image.
|
||||
|
||||
@item @var{dx}, @var{dy}
|
||||
These are the pixel-denominated coordinates of the click, relative to
|
||||
These are the pixel coordinates of the click, relative to
|
||||
the top left corner of @var{object}, which is @code{(0 . 0)}. If
|
||||
@var{object} is @code{nil}, the coordinates are relative to the top
|
||||
left corner of the character glyph clicked on.
|
||||
|
||||
@item @var{width}, @var{height}
|
||||
These are the pixel-denominated width and height of @var{object}.
|
||||
These are the pixel width and height of @var{object} or, if this is
|
||||
@code{nil}, those of the character glyph clicked on.
|
||||
@end table
|
||||
|
||||
@sp 1
|
||||
|
|
|
@ -2505,8 +2505,9 @@ makes @code{modeline} an alias for the @code{mode-line} face.
|
|||
@cindex automatic face assignment
|
||||
@cindex faces, automatic choice
|
||||
|
||||
This hook is used for automatically assigning faces to text in the
|
||||
buffer. It is part of the implementation of Font-Lock mode.
|
||||
This hook is used for automatically assigning facesto text in the
|
||||
buffer. It is part of the implementation of Jit-Lock mode, used by
|
||||
Font-Lock.
|
||||
|
||||
@defvar fontification-functions
|
||||
This variable holds a list of functions that are called by Emacs
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
@c Version of the manual and of Emacs.
|
||||
@c Please remember to update the edition number in README as well.
|
||||
@set VERSION 2.9
|
||||
@set EMACSVER 22.0.990
|
||||
@set EMACSVER 22.1.50
|
||||
|
||||
@dircategory Emacs
|
||||
@direntry
|
||||
|
|
|
@ -706,6 +706,7 @@ results for LCD color displays.
|
|||
|
||||
These frame parameters are semi-obsolete in that they are automatically
|
||||
equivalent to particular face attributes of particular faces.
|
||||
@xref{Standard Faces,,, emacs, The Emacs Manual}.
|
||||
|
||||
@table @code
|
||||
@item font
|
||||
|
|
|
@ -2951,6 +2951,11 @@ meanings. The following sections list a few additional special property
|
|||
names that control filling and property inheritance. All other names
|
||||
have no standard meaning, and you can use them as you like.
|
||||
|
||||
Note: the properties @code{composition}, @code{display},
|
||||
@code{invisible} and @code{intangible} can also cause point to move to
|
||||
an acceptable place, after each Emacs command. @xref{Adjusting
|
||||
Point}.
|
||||
|
||||
@table @code
|
||||
@cindex property category of text character
|
||||
@kindex category @r{(text property)}
|
||||
|
@ -3019,24 +3024,11 @@ that all text between the character and where the mouse is have the same
|
|||
|
||||
@item fontified
|
||||
@kindex fontified @r{(text property)}
|
||||
This property says whether the character has a face assigned to it by font
|
||||
locking. The display engine tests it to decide whether a buffer
|
||||
portion needs refontifying before display. @xref{Auto Faces}. It
|
||||
takes one of three values:
|
||||
|
||||
@table @asis
|
||||
@item @code{nil}
|
||||
Font locking is disabled, or the character's @code{face} property, if
|
||||
any, is invalid.
|
||||
|
||||
@item @code{defer}
|
||||
This value is only used when ``just in time'' font locking is enabled
|
||||
and it means that the character's @code{face} property is invalid and
|
||||
needs deferred fontification.
|
||||
|
||||
@item @code{t}
|
||||
The character's @code{face} property, or absence of one, is valid.
|
||||
@end table
|
||||
This property says whether the text is ready for display. If
|
||||
@code{nil}, Emacs's redisplay routine calls the functions in
|
||||
@code{fontification-functions} (@pxref{Auto Faces}) to prepare this
|
||||
part of the buffer before it is displayed. It is used internally by
|
||||
the ``just in time'' font locking code.
|
||||
|
||||
@item display
|
||||
This property activates various features that change the
|
||||
|
@ -3138,6 +3130,10 @@ If you try to move point forward into the group, point actually moves to
|
|||
the end of the group. If you try to move point backward into the group,
|
||||
point actually moves to the start of the group.
|
||||
|
||||
If consecutive characters have unequal non-@code{nil}
|
||||
@code{intangible} properties, they belong to separate groups; each
|
||||
group is separately treated as described above.
|
||||
|
||||
When the variable @code{inhibit-point-motion-hooks} is non-@code{nil},
|
||||
the @code{intangible} property is ignored.
|
||||
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2007-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 22.1 released.
|
||||
|
||||
2007-02-28 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* Makefile.in (distclean): Delete Makefile.
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2007-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 22.1 released.
|
||||
|
||||
2007-05-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
* INSTALL: Add note about moving self-contained application bundle
|
||||
|
|
|
@ -1,10 +1,33 @@
|
|||
2007-05-28 Michael Albinus <michael.albinus@gmx.de>
|
||||
2007-06-06 Andreas Seltenreich <andreas@gate450.dyndns.org>
|
||||
|
||||
* gnus.texi (Misc Group Stuff, Summary Buffer)
|
||||
(Server Commands, Article Keymap): Fix typo. s/function/command/.
|
||||
|
||||
2007-06-07 Alan Mackenzie <acm@muc.de>
|
||||
|
||||
* display.texi (Optional Mode Line): Document the new form of
|
||||
line+column numbers, "(561,2)".
|
||||
|
||||
2007-06-06 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* cc-mode.texi (Comment Commands, Getting Started, Style Variables):
|
||||
* gnus.texi (Article Buttons, Mail Source Customization)
|
||||
(Sending or Not Sending, Customizing NNDiary):
|
||||
* maintaining.texi (Create Tags Table):
|
||||
* message.texi (Message Headers):
|
||||
* mh-e.texi (HTML): Fix typos.
|
||||
|
||||
2007-06-07 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
Sync with Tramp 2.0.56.
|
||||
|
||||
* tramp.texi (Frequently Asked Questions): Improve ~/.zshrc
|
||||
settings. Reported by Ted Zlatanov <tzz@lifelogs.com>.
|
||||
|
||||
2007-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 22.1 released.
|
||||
|
||||
2007-05-26 Michael Olson <mwolson@gnu.org>
|
||||
|
||||
* erc.texi (Modules): Fix references to completion modules.
|
||||
|
@ -15,12 +38,12 @@
|
|||
|
||||
2007-05-09 Didier Verna <didier@xemacs.org>
|
||||
|
||||
* gnus.texi (Email Based Diary): New. Proper documentation for the
|
||||
* gnus.texi (Email Based Diary): New. Proper documentation for the
|
||||
nndiary back end and the gnus-diary library.
|
||||
|
||||
2007-05-07 Karl Berry <karl@gnu.org>
|
||||
|
||||
* emacs.texi (EMACSVER): back to 22.
|
||||
* emacs.texi (EMACSVER): Back to 22.
|
||||
|
||||
2007-05-06 Richard Stallman <rms@gnu.org>
|
||||
|
||||
|
@ -39,9 +62,9 @@
|
|||
|
||||
* emacs.texi (EMACSVER) [smallbook]: 22 for printed version.
|
||||
|
||||
* .cvsignore (*.pdf): new entry.
|
||||
* .cvsignore (*.pdf): New entry.
|
||||
|
||||
* texinfo.tex: update from current version for better pdf generation.
|
||||
* texinfo.tex: Update from current version for better pdf generation.
|
||||
|
||||
* emacs.texi (\urlcolor, \linkcolor) [smallbook]: \let to \Black
|
||||
for printing.
|
||||
|
@ -1375,9 +1398,9 @@
|
|||
* emacs.texi (\hbadness): Set to 6000 so we aren't bothered by
|
||||
not-too-underfull hboxes in the TeX output.
|
||||
* abbrevs.texi, buffers.texi, building.texi, calendar.texi,
|
||||
cmdargs.texi, custom.texi, dired.texi, macos.texi,
|
||||
maintaining.texi, misc.texi, mule.texi, programs.texi, rmail.texi,
|
||||
sending.texi, text.texi: fix overfull/underfull boxes.
|
||||
* cmdargs.texi, custom.texi, dired.texi, macos.texi,
|
||||
* maintaining.texi, misc.texi, mule.texi, programs.texi, rmail.texi,
|
||||
* sending.texi, text.texi: Fix overfull/underfull boxes.
|
||||
|
||||
2006-07-03 Romain Francoise <romain@orebokech.com>
|
||||
|
||||
|
@ -1460,7 +1483,7 @@
|
|||
|
||||
2006-06-25 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* frames.texi (XTerm Mouse) Rename to...
|
||||
* frames.texi (XTerm Mouse): Rename to...
|
||||
(Text-Only Mouse): ...this. Mention t-mouse-mode.
|
||||
|
||||
* emacs.texi (Top): Use new node name.
|
||||
|
@ -1803,7 +1826,7 @@
|
|||
2006-05-06 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* makefile.w32-in (emacs.dvi):
|
||||
* Makefile.in (emacs.dvi): Add xresmini.texi
|
||||
* Makefile.in (emacs.dvi): Add xresmini.texi.
|
||||
|
||||
* xresmini.texi (Table of Resources): Remove xref to non-existent
|
||||
node "LessTif Resources".
|
||||
|
@ -1889,7 +1912,7 @@
|
|||
Next, and Up links.
|
||||
|
||||
* emacs.texi (Top) [ifnottex]: Add menu entries for "Picture Mode"
|
||||
and its sections. @include picture-xtra.texi
|
||||
and its sections. @include picture-xtra.texi.
|
||||
|
||||
* maintaining.texi (Maintaining) [ifnottex]: Add menu entry for
|
||||
"Emerge".
|
||||
|
@ -1944,11 +1967,11 @@
|
|||
|
||||
2006-05-05 Karl Berry <karl@gnu.org>
|
||||
|
||||
* texinfo.tex (\definetextfonsizexi, \definetextfonsizex): new cmds.
|
||||
(\fonttextsize): new user-level command to change text font size.
|
||||
* emacs.texi: call @fonttextsize 10, inside @tex to avoid
|
||||
* texinfo.tex (\definetextfonsizexi, \definetextfonsizex): New cmds.
|
||||
(\fonttextsize): New user-level command to change text font size.
|
||||
* emacs.texi: Call @fonttextsize 10, inside @tex to avoid
|
||||
errors from the current release of makeinfo (4.8).
|
||||
* help.texi (Library Keywords): change widest word in multitable
|
||||
* help.texi (Library Keywords): Change widest word in multitable
|
||||
template from `emulations' to `convenience'. (Not sure if this is
|
||||
related to the font change.)
|
||||
|
||||
|
@ -2148,7 +2171,7 @@
|
|||
(Inserting Version Control Headers, Customizing VC, General Options)
|
||||
(Options for RCS and SCCS, Options specific for CVS): Move all
|
||||
these nodes to emacs-xtra.texi, for brevity.
|
||||
* cmdargs.texi, files.texi: change cross-references.
|
||||
* cmdargs.texi, files.texi: Change cross-references.
|
||||
|
||||
2006-04-11 Reiner Steib <Reiner.Steib@gmx.de>
|
||||
|
||||
|
@ -2179,13 +2202,13 @@
|
|||
|
||||
2006-04-09 Karl Berry <karl@gnu.org>
|
||||
|
||||
* msdog.texi, emacs-xtra.texi: move all the MS-DOS material to
|
||||
* msdog.texi, emacs-xtra.texi: Move all the MS-DOS material to
|
||||
emacs-xtra.texi, leaving only MS Windows information.
|
||||
* building.texi, emacs.texi, frames.texi, gnu.texi, macos.texi,
|
||||
msdog.texi, mule.texi, trouble.texi: change cross-references and
|
||||
* msdog.texi, mule.texi, trouble.texi: Change cross-references and
|
||||
node names.
|
||||
|
||||
* emacs.texi: move @summarycontents and @contents to the beginning
|
||||
* emacs.texi: Move @summarycontents and @contents to the beginning
|
||||
of the file.
|
||||
|
||||
2006-04-07 Reiner Steib <Reiner.Steib@gmx.de>
|
||||
|
@ -2264,7 +2287,7 @@
|
|||
|
||||
* sending.texi (Mail Sending): pxref to Top needs five args.
|
||||
|
||||
* texinfo.tex: update to current version (2006-03-21.13).
|
||||
* texinfo.tex: Update to current version (2006-03-21.13).
|
||||
|
||||
2006-04-02 Bill Wohler <wohler@newt.com>
|
||||
|
||||
|
@ -2913,7 +2936,7 @@
|
|||
* mark.texi: Minor clarifications.
|
||||
(Selective Undo): Node deleted.
|
||||
|
||||
* m-x.texi: Minor clarifications
|
||||
* m-x.texi: Minor clarifications.
|
||||
|
||||
* killing.texi: Minor clarifications.
|
||||
Refer to "graphical" terminals, rather than window systems.
|
||||
|
@ -3603,7 +3626,7 @@
|
|||
|
||||
2005-11-04 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* org.texi: Version number changed to 3.19
|
||||
* org.texi: Version number changed to 3.19.
|
||||
|
||||
2005-11-04 Romain Francoise <romain@orebokech.com>
|
||||
|
||||
|
@ -3802,7 +3825,7 @@
|
|||
|
||||
2005-10-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
|
||||
|
||||
* cmdargs.texi (Icons X): -nb => -nbi
|
||||
* cmdargs.texi (Icons X): -nb => -nbi.
|
||||
|
||||
2005-10-10 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
|
@ -3893,7 +3916,7 @@
|
|||
|
||||
2005-09-23 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* org.texi Version 3.16
|
||||
* org.texi Version 3.16.
|
||||
|
||||
2005-09-21 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
|
@ -4153,11 +4176,11 @@
|
|||
|
||||
2005-07-19 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* org.texi: Version 3.14
|
||||
* org.texi: Version 3.14.
|
||||
|
||||
2005-07-04 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* org.texi: Version 3.13
|
||||
* org.texi: Version 3.13.
|
||||
|
||||
2005-07-19 Juri Linkov <juri@jurta.org>
|
||||
|
||||
|
@ -4261,7 +4284,7 @@
|
|||
|
||||
2005-06-29 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* org.texi: Version 3.12
|
||||
* org.texi: Version 3.12.
|
||||
|
||||
2005-06-24 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
|
@ -4341,7 +4364,7 @@
|
|||
|
||||
2005-06-13 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* org.texi: Version 3.11
|
||||
* org.texi: Version 3.11.
|
||||
|
||||
2005-06-12 Jay Belanger <belanger@truman.edu>
|
||||
|
||||
|
@ -4487,11 +4510,11 @@
|
|||
|
||||
2005-05-20 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* org.texi: Version 3.09
|
||||
* org.texi: Version 3.09.
|
||||
|
||||
2005-05-18 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* reftex.texi: Version 4.28
|
||||
* reftex.texi: Version 4.28.
|
||||
|
||||
2005-05-18 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
|
@ -4639,7 +4662,7 @@
|
|||
|
||||
2005-04-25 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* ack.texi (Acknowledgments): Delete info about iso-acc.el
|
||||
* ack.texi (Acknowledgments): Delete info about iso-acc.el.
|
||||
|
||||
* dired.texi (Misc Dired Features): Document
|
||||
dired-compare-directories.
|
||||
|
@ -6199,7 +6222,7 @@
|
|||
|
||||
2004-09-10 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* Makefile.in (../info/gnus, gnus.dvi): Depend on gnus-faq.texi
|
||||
* Makefile.in (../info/gnus, gnus.dvi): Depend on gnus-faq.texi.
|
||||
|
||||
2004-09-09 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
|
@ -7305,7 +7328,7 @@
|
|||
|
||||
2003-02-17 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
|
||||
|
||||
* xresources.texi (GTK names in Emacs): Add emacs-toolbar - GtkToolbar
|
||||
* xresources.texi (GTK names in Emacs): Add emacs-toolbar - GtkToolbar.
|
||||
|
||||
2003-02-05 Kai Gro,A_(Bjohann <kai.grossjohann@uni-duisburg.de>
|
||||
|
||||
|
@ -7375,8 +7398,8 @@
|
|||
Also use @ifnottex instead of @ifinfo around the top node, where
|
||||
needed for the sake of the HTML output.
|
||||
(The Gnus manual is not fixed since it's not clear to me how it
|
||||
works; and the Tramp manual already uses @copying, although in an
|
||||
unusual way. All others were changed.)
|
||||
works; and the Tramp manual already uses @copying, although in an
|
||||
unusual way. All others were changed.)
|
||||
|
||||
2002-09-10 Jonathan Yavner <jyavner@engineer.com>
|
||||
|
||||
|
@ -7501,7 +7524,7 @@
|
|||
1999-10-12 Stefan Monnier <monnier@cs.yale.edu>
|
||||
|
||||
* Makefile.in (faq): Use ../info/emacs-faq.info (as specified in the
|
||||
faq.texi file) rather than ../info/faq.
|
||||
faq.texi file) rather than ../info/faq.
|
||||
|
||||
1999-10-07 Gerd Moellmann <gerd@gnu.org>
|
||||
|
||||
|
|
254
man/cc-mode.texi
254
man/cc-mode.texi
|
@ -236,113 +236,113 @@ functions, classes etc - there are other packages for that.
|
|||
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
@menu
|
||||
* Introduction::
|
||||
* Overview::
|
||||
* Getting Started::
|
||||
* Commands::
|
||||
* Font Locking::
|
||||
* Config Basics::
|
||||
* Custom Filling and Breaking::
|
||||
* Custom Auto-newlines::
|
||||
* Clean-ups::
|
||||
* Indentation Engine Basics::
|
||||
* Customizing Indentation::
|
||||
* Custom Macros::
|
||||
* Odds and Ends::
|
||||
* Sample .emacs File::
|
||||
* Performance Issues::
|
||||
* Limitations and Known Bugs::
|
||||
* FAQ::
|
||||
* Updating CC Mode::
|
||||
* Mailing Lists and Bug Reports::
|
||||
* Introduction::
|
||||
* Overview::
|
||||
* Getting Started::
|
||||
* Commands::
|
||||
* Font Locking::
|
||||
* Config Basics::
|
||||
* Custom Filling and Breaking::
|
||||
* Custom Auto-newlines::
|
||||
* Clean-ups::
|
||||
* Indentation Engine Basics::
|
||||
* Customizing Indentation::
|
||||
* Custom Macros::
|
||||
* Odds and Ends::
|
||||
* Sample .emacs File::
|
||||
* Performance Issues::
|
||||
* Limitations and Known Bugs::
|
||||
* FAQ::
|
||||
* Updating CC Mode::
|
||||
* Mailing Lists and Bug Reports::
|
||||
* GNU Free Documentation License::
|
||||
* Command and Function Index::
|
||||
* Variable Index::
|
||||
* Concept and Key Index::
|
||||
* Command and Function Index::
|
||||
* Variable Index::
|
||||
* Concept and Key Index::
|
||||
|
||||
@detailmenu
|
||||
--- The Detailed Node Listing ---
|
||||
|
||||
Commands
|
||||
|
||||
* Indentation Commands::
|
||||
* Comment Commands::
|
||||
* Movement Commands::
|
||||
* Filling and Breaking::
|
||||
* Minor Modes::
|
||||
* Electric Keys::
|
||||
* Auto-newlines::
|
||||
* Hungry WS Deletion::
|
||||
* Subword Movement::
|
||||
* Other Commands::
|
||||
* Indentation Commands::
|
||||
* Comment Commands::
|
||||
* Movement Commands::
|
||||
* Filling and Breaking::
|
||||
* Minor Modes::
|
||||
* Electric Keys::
|
||||
* Auto-newlines::
|
||||
* Hungry WS Deletion::
|
||||
* Subword Movement::
|
||||
* Other Commands::
|
||||
|
||||
Font Locking
|
||||
|
||||
* Font Locking Preliminaries::
|
||||
* Faces::
|
||||
* Doc Comments::
|
||||
* AWK Mode Font Locking::
|
||||
* Font Locking Preliminaries::
|
||||
* Faces::
|
||||
* Doc Comments::
|
||||
* AWK Mode Font Locking::
|
||||
|
||||
Configuration Basics
|
||||
|
||||
* CC Hooks::
|
||||
* Style Variables::
|
||||
* Styles::
|
||||
* CC Hooks::
|
||||
* Style Variables::
|
||||
* Styles::
|
||||
|
||||
Styles
|
||||
|
||||
* Built-in Styles::
|
||||
* Choosing a Style::
|
||||
* Adding Styles::
|
||||
* File Styles::
|
||||
* Built-in Styles::
|
||||
* Choosing a Style::
|
||||
* Adding Styles::
|
||||
* File Styles::
|
||||
|
||||
Customizing Auto-newlines
|
||||
|
||||
* Hanging Braces::
|
||||
* Hanging Colons::
|
||||
* Hanging Semicolons and Commas::
|
||||
* Hanging Braces::
|
||||
* Hanging Colons::
|
||||
* Hanging Semicolons and Commas::
|
||||
|
||||
Hanging Braces
|
||||
|
||||
* Custom Braces::
|
||||
* Custom Braces::
|
||||
|
||||
Indentation Engine Basics
|
||||
|
||||
* Syntactic Analysis::
|
||||
* Syntactic Symbols::
|
||||
* Indentation Calculation::
|
||||
* Syntactic Analysis::
|
||||
* Syntactic Symbols::
|
||||
* Indentation Calculation::
|
||||
|
||||
Syntactic Symbols
|
||||
|
||||
* Function Symbols::
|
||||
* Class Symbols::
|
||||
* Conditional Construct Symbols::
|
||||
* Switch Statement Symbols::
|
||||
* Brace List Symbols::
|
||||
* External Scope Symbols::
|
||||
* Paren List Symbols::
|
||||
* Literal Symbols::
|
||||
* Multiline Macro Symbols::
|
||||
* Objective-C Method Symbols::
|
||||
* Anonymous Class Symbol::
|
||||
* Statement Block Symbols::
|
||||
* K&R Symbols::
|
||||
* Function Symbols::
|
||||
* Class Symbols::
|
||||
* Conditional Construct Symbols::
|
||||
* Switch Statement Symbols::
|
||||
* Brace List Symbols::
|
||||
* External Scope Symbols::
|
||||
* Paren List Symbols::
|
||||
* Literal Symbols::
|
||||
* Multiline Macro Symbols::
|
||||
* Objective-C Method Symbols::
|
||||
* Anonymous Class Symbol::
|
||||
* Statement Block Symbols::
|
||||
* K&R Symbols::
|
||||
|
||||
Customizing Indentation
|
||||
|
||||
* c-offsets-alist::
|
||||
* Interactive Customization::
|
||||
* Line-Up Functions::
|
||||
* Custom Line-Up::
|
||||
* Other Indentation::
|
||||
* c-offsets-alist::
|
||||
* Interactive Customization::
|
||||
* Line-Up Functions::
|
||||
* Custom Line-Up::
|
||||
* Other Indentation::
|
||||
|
||||
Line-Up Functions
|
||||
|
||||
* Brace/Paren Line-Up::
|
||||
* List Line-Up::
|
||||
* Operator Line-Up::
|
||||
* Comment Line-Up::
|
||||
* Misc Line-Up::
|
||||
* Brace/Paren Line-Up::
|
||||
* List Line-Up::
|
||||
* Operator Line-Up::
|
||||
* Comment Line-Up::
|
||||
* Misc Line-Up::
|
||||
|
||||
@end detailmenu
|
||||
@end menu
|
||||
|
@ -534,7 +534,7 @@ is no ``easy customization'' facility for making this change.}:
|
|||
@end example
|
||||
|
||||
@noindent
|
||||
Details of of this and other similar ``Minor Modes'' appear in the
|
||||
Details of this and other similar ``Minor Modes'' appear in the
|
||||
section @ref{Minor Modes}.
|
||||
|
||||
@item Making the @key{RET} key indent the new line
|
||||
|
@ -613,16 +613,16 @@ structures.
|
|||
|
||||
|
||||
@menu
|
||||
* Indentation Commands::
|
||||
* Comment Commands::
|
||||
* Movement Commands::
|
||||
* Filling and Breaking::
|
||||
* Minor Modes::
|
||||
* Electric Keys::
|
||||
* Auto-newlines::
|
||||
* Hungry WS Deletion::
|
||||
* Subword Movement::
|
||||
* Other Commands::
|
||||
* Indentation Commands::
|
||||
* Comment Commands::
|
||||
* Movement Commands::
|
||||
* Filling and Breaking::
|
||||
* Minor Modes::
|
||||
* Electric Keys::
|
||||
* Auto-newlines::
|
||||
* Hungry WS Deletion::
|
||||
* Subword Movement::
|
||||
* Other Commands::
|
||||
@end menu
|
||||
|
||||
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
@ -852,7 +852,7 @@ actions describing how they should be handled. If a certain line type
|
|||
isn't present on the list then the line is indented to the column
|
||||
specified by @code{comment-column}.
|
||||
|
||||
See the documentation string for for a full description of this
|
||||
See the documentation string for a full description of this
|
||||
variable (use @kbd{C-h v c-indent-comment-alist}).
|
||||
@end defopt
|
||||
|
||||
|
@ -1810,10 +1810,10 @@ chapter, @ref{AWK Mode Font Locking}, applies to AWK. The other
|
|||
sections apply to the other languages.
|
||||
|
||||
@menu
|
||||
* Font Locking Preliminaries::
|
||||
* Faces::
|
||||
* Doc Comments::
|
||||
* AWK Mode Font Locking::
|
||||
* Font Locking Preliminaries::
|
||||
* Faces::
|
||||
* Doc Comments::
|
||||
* AWK Mode Font Locking::
|
||||
@end menu
|
||||
|
||||
|
||||
|
@ -2318,9 +2318,9 @@ have it enabled by default by placing the following in your
|
|||
@end table
|
||||
|
||||
@menu
|
||||
* CC Hooks::
|
||||
* Style Variables::
|
||||
* Styles::
|
||||
* CC Hooks::
|
||||
* Style Variables::
|
||||
* Styles::
|
||||
@end menu
|
||||
|
||||
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
@ -2409,7 +2409,7 @@ The variables that @ccmode{}'s style system control are called
|
|||
@dfn{style variables}. Note that style variables are ordinary Lisp
|
||||
variables, which the style system initializes; you can change their
|
||||
values at any time (e.g. in a hook function). The style system can
|
||||
also also set other variables, to some extent. @xref{Styles}.
|
||||
also set other variables, to some extent. @xref{Styles}.
|
||||
|
||||
@dfn{Style variables} are handled specially in several ways:
|
||||
|
||||
|
@ -2509,10 +2509,10 @@ for any particular style, and pretty easily start editing new or
|
|||
existing code using these styles.
|
||||
|
||||
@menu
|
||||
* Built-in Styles::
|
||||
* Choosing a Style::
|
||||
* Adding Styles::
|
||||
* File Styles::
|
||||
* Built-in Styles::
|
||||
* Choosing a Style::
|
||||
* Adding Styles::
|
||||
* File Styles::
|
||||
@end menu
|
||||
|
||||
|
||||
|
@ -3059,9 +3059,9 @@ to remove these automatically added newlines in certain specific
|
|||
circumstances. @xref{Clean-ups}.
|
||||
|
||||
@menu
|
||||
* Hanging Braces::
|
||||
* Hanging Colons::
|
||||
* Hanging Semicolons and Commas::
|
||||
* Hanging Braces::
|
||||
* Hanging Colons::
|
||||
* Hanging Semicolons and Commas::
|
||||
@end menu
|
||||
|
||||
|
||||
|
@ -3212,7 +3212,7 @@ themselves.
|
|||
@end defopt
|
||||
|
||||
@menu
|
||||
* Custom Braces::
|
||||
* Custom Braces::
|
||||
@end menu
|
||||
|
||||
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
@ -3732,9 +3732,9 @@ of the variables associated with indentation, not even
|
|||
@end defopt
|
||||
|
||||
@menu
|
||||
* Syntactic Analysis::
|
||||
* Syntactic Symbols::
|
||||
* Indentation Calculation::
|
||||
* Syntactic Analysis::
|
||||
* Syntactic Symbols::
|
||||
* Indentation Calculation::
|
||||
@end menu
|
||||
|
||||
|
||||
|
@ -4113,19 +4113,19 @@ Java. @ref{Anonymous Class Symbol}.
|
|||
@end table
|
||||
|
||||
@menu
|
||||
* Function Symbols::
|
||||
* Class Symbols::
|
||||
* Conditional Construct Symbols::
|
||||
* Switch Statement Symbols::
|
||||
* Brace List Symbols::
|
||||
* External Scope Symbols::
|
||||
* Paren List Symbols::
|
||||
* Literal Symbols::
|
||||
* Multiline Macro Symbols::
|
||||
* Objective-C Method Symbols::
|
||||
* Anonymous Class Symbol::
|
||||
* Statement Block Symbols::
|
||||
* K&R Symbols::
|
||||
* Function Symbols::
|
||||
* Class Symbols::
|
||||
* Conditional Construct Symbols::
|
||||
* Switch Statement Symbols::
|
||||
* Brace List Symbols::
|
||||
* External Scope Symbols::
|
||||
* Paren List Symbols::
|
||||
* Literal Symbols::
|
||||
* Multiline Macro Symbols::
|
||||
* Objective-C Method Symbols::
|
||||
* Anonymous Class Symbol::
|
||||
* Statement Block Symbols::
|
||||
* K&R Symbols::
|
||||
@end menu
|
||||
|
||||
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
@ -5019,11 +5019,11 @@ can install functions here to make ad-hoc adjustments to any line's
|
|||
indentation.
|
||||
|
||||
@menu
|
||||
* c-offsets-alist::
|
||||
* Interactive Customization::
|
||||
* Line-Up Functions::
|
||||
* Custom Line-Up::
|
||||
* Other Indentation::
|
||||
* c-offsets-alist::
|
||||
* Interactive Customization::
|
||||
* Line-Up Functions::
|
||||
* Custom Line-Up::
|
||||
* Other Indentation::
|
||||
@end menu
|
||||
|
||||
|
||||
|
@ -5371,11 +5371,11 @@ Works with:
|
|||
@end iftex
|
||||
|
||||
@menu
|
||||
* Brace/Paren Line-Up::
|
||||
* List Line-Up::
|
||||
* Operator Line-Up::
|
||||
* Comment Line-Up::
|
||||
* Misc Line-Up::
|
||||
* Brace/Paren Line-Up::
|
||||
* List Line-Up::
|
||||
* Operator Line-Up::
|
||||
* Comment Line-Up::
|
||||
* Misc Line-Up::
|
||||
@end menu
|
||||
|
||||
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
|
|
@ -922,8 +922,18 @@ accessible part of the buffer is shown.
|
|||
Number mode is enabled. Use the command @kbd{M-x line-number-mode} to
|
||||
turn this mode on and off; normally it is on. The line number appears
|
||||
after the buffer percentage @var{pos}, with the letter @samp{L} to
|
||||
indicate what it is. @xref{Minor Modes}, for more information about
|
||||
minor modes and about how to use this command.
|
||||
indicate what it is.
|
||||
|
||||
@cindex Column Number mode
|
||||
@cindex mode, Column Number
|
||||
@findex column-number-mode
|
||||
Similarly, you can display the current column number by turning on
|
||||
Column number mode with @kbd{M-x column-number-mode}. The column
|
||||
number is indicated by the letter @samp{C}. However, when both of
|
||||
these modes are enabled, the line and column numbers are displayed in
|
||||
parentheses, the line number first, rather than with @samp{L} and
|
||||
@samp{C}. For example: @samp{(561,2)}. @xref{Minor Modes}, for more
|
||||
information about minor modes and about how to use these commands.
|
||||
|
||||
@cindex narrowing, and line number display
|
||||
If you have narrowed the buffer (@pxref{Narrowing}), the displayed
|
||||
|
@ -946,13 +956,6 @@ larger than the value of the variable
|
|||
@code{line-number-display-limit-width}. The default value is 200
|
||||
characters.
|
||||
|
||||
@cindex Column Number mode
|
||||
@cindex mode, Column Number
|
||||
@findex column-number-mode
|
||||
You can also display the current column number by turning on Column
|
||||
Number mode. It displays the current column number preceded by the
|
||||
letter @samp{C}. Type @kbd{M-x column-number-mode} to toggle this mode.
|
||||
|
||||
@findex display-time
|
||||
@cindex time (on mode line)
|
||||
Emacs can optionally display the time and system load in all mode
|
||||
|
|
|
@ -4084,8 +4084,8 @@ happens. You just have to be careful if you do stuff like that.
|
|||
@item v
|
||||
@kindex v (Group)
|
||||
@cindex keys, reserved for users (Group)
|
||||
The key @kbd{v} is reserved for users. You can bind it key to some
|
||||
function or better use it as a prefix key. For example:
|
||||
The key @kbd{v} is reserved for users. You can bind it to some
|
||||
command or better use it as a prefix key. For example:
|
||||
|
||||
@lisp
|
||||
(define-key gnus-group-mode-map (kbd "v j d")
|
||||
|
@ -4498,8 +4498,8 @@ available in Emacs.
|
|||
|
||||
@kindex v (Summary)
|
||||
@cindex keys, reserved for users (Summary)
|
||||
The key @kbd{v} is reserved for users. You can bind it key to some
|
||||
function or better use it as a prefix key. For example:
|
||||
The key @kbd{v} is reserved for users. You can bind it to some
|
||||
command or better use it as a prefix key. For example:
|
||||
@lisp
|
||||
(define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread
|
||||
@end lisp
|
||||
|
@ -8936,7 +8936,7 @@ This variable determines what to do when the button on a string as
|
|||
message ID or a mail address. If it is one of the symbols @code{mid} or
|
||||
@code{mail}, Gnus will always assume that the string is a message ID or
|
||||
a mail address, respectively. If this variable is set to the symbol
|
||||
@code{ask}, always query the user what do do. If it is a function, this
|
||||
@code{ask}, always query the user what to do. If it is a function, this
|
||||
function will be called with the string as its only argument. The
|
||||
function must return @code{mid}, @code{mail}, @code{invalid} or
|
||||
@code{ask}. The default value is the function
|
||||
|
@ -11422,8 +11422,8 @@ buffer.
|
|||
|
||||
@kindex v (Article)
|
||||
@cindex keys, reserved for users (Article)
|
||||
The key @kbd{v} is reserved for users. You can bind it key to some
|
||||
function or better use it as a prefix key.
|
||||
The key @kbd{v} is reserved for users. You can bind it to some
|
||||
command or better use it as a prefix key.
|
||||
|
||||
A few additional keystrokes are available:
|
||||
|
||||
|
@ -12460,8 +12460,8 @@ Also @pxref{Formatting Variables}.
|
|||
@item v
|
||||
@kindex v (Server)
|
||||
@cindex keys, reserved for users (Server)
|
||||
The key @kbd{v} is reserved for users. You can bind it key to some
|
||||
function or better use it as a prefix key.
|
||||
The key @kbd{v} is reserved for users. You can bind it to some
|
||||
command or better use it as a prefix key.
|
||||
|
||||
@item a
|
||||
@kindex a (Server)
|
||||
|
@ -14034,7 +14034,7 @@ files. If a positive number, delete files older than number of days
|
|||
|
||||
@item mail-source-delete-old-incoming-confirm
|
||||
@vindex mail-source-delete-old-incoming-confirm
|
||||
If non-@code{nil}, ask for for confirmation before deleting old incoming
|
||||
If non-@code{nil}, ask for confirmation before deleting old incoming
|
||||
files. This variable only applies when
|
||||
@code{mail-source-delete-incoming} is a positive number.
|
||||
|
||||
|
@ -16589,7 +16589,7 @@ Probably the only useful value to change this to is
|
|||
messages instead of the internal article date. See section 6.4.4 of
|
||||
RFC 2060 for more information on valid strings.
|
||||
|
||||
However, if @code{nnimap-search-uids-not-since-is-evil}
|
||||
However, if @code{nnimap-search-uids-not-since-is-evil}
|
||||
is true, this variable has no effect since the search logic
|
||||
is reversed, as described below.
|
||||
|
||||
|
@ -18107,7 +18107,7 @@ two variables are probably the only ones you will want to change:
|
|||
|
||||
@defvar nndiary-reminders
|
||||
This is the list of times when you want to be reminded of your
|
||||
appointements (e.g. 3 weeks before, then 2 days before, then 1 hour
|
||||
appointments (e.g. 3 weeks before, then 2 days before, then 1 hour
|
||||
before and that's it). Remember that ``being reminded'' means that the
|
||||
diary message will pop up as brand new and unread again when you get new
|
||||
mail.
|
||||
|
@ -18258,14 +18258,14 @@ automatically (although not filled with proper values yet).
|
|||
@node Sending or Not Sending
|
||||
@subsection Sending or Not Sending
|
||||
|
||||
Well, assuming you've read of of the above, here are two final notes on
|
||||
Well, assuming you've read all of the above, here are two final notes on
|
||||
mail sending with @code{nndiary}:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
@code{nndiary} is a @emph{real} mail back end. You really send real diary
|
||||
messsages for real. This means for instance that you can give
|
||||
appointements to anybody (provided they use Gnus and @code{nndiary}) by
|
||||
appointments to anybody (provided they use Gnus and @code{nndiary}) by
|
||||
sending the diary message to them as well.
|
||||
@item
|
||||
However, since @code{nndiary} also has a @code{request-post} method, you
|
||||
|
|
|
@ -409,8 +409,8 @@ source files, and the tags file will still refer correctly to the source
|
|||
files. If the tags file is in @file{/dev}, however, the file names are
|
||||
made relative to the current working directory. This is useful, for
|
||||
example, when writing the tags to @file{/dev/stdout}.
|
||||
|
||||
When using a a relative file name, it should not be a symbolic link
|
||||
|
||||
When using a relative file name, it should not be a symbolic link
|
||||
pointing to a tags file in a different directory, because this would
|
||||
generally render the file names invalid.
|
||||
|
||||
|
|
|
@ -1450,7 +1450,7 @@ responding to a message:
|
|||
@vindex message-subject-trailing-was-regexp
|
||||
Controls what to do with trailing @samp{(was: <old subject>)} in subject
|
||||
lines. If @code{nil}, leave the subject unchanged. If it is the symbol
|
||||
@code{ask}, query the user what do do. In this case, the subject is
|
||||
@code{ask}, query the user what to do. In this case, the subject is
|
||||
matched against @code{message-subject-trailing-was-ask-regexp}. If
|
||||
@code{message-subject-trailing-was-query} is @code{t}, always strip the
|
||||
trailing old subject. In this case,
|
||||
|
|
200
man/mh-e.texi
200
man/mh-e.texi
|
@ -132,64 +132,64 @@ Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
|
||||
Tour Through MH-E
|
||||
|
||||
* Sending Mail Tour::
|
||||
* Reading Mail Tour::
|
||||
* Processing Mail Tour::
|
||||
* Leaving MH-E::
|
||||
* More About MH-E::
|
||||
* Sending Mail Tour::
|
||||
* Reading Mail Tour::
|
||||
* Processing Mail Tour::
|
||||
* Leaving MH-E::
|
||||
* More About MH-E::
|
||||
|
||||
Using This Manual
|
||||
|
||||
* Options::
|
||||
* Ranges::
|
||||
* Folder Selection::
|
||||
* Options::
|
||||
* Ranges::
|
||||
* Folder Selection::
|
||||
|
||||
Reading Your Mail
|
||||
|
||||
* Viewing::
|
||||
* Viewing Attachments::
|
||||
* HTML::
|
||||
* Digests::
|
||||
* Reading PGP::
|
||||
* Printing::
|
||||
* Files and Pipes::
|
||||
* Navigating::
|
||||
* Miscellaneous Commands and Options::
|
||||
* Viewing::
|
||||
* Viewing Attachments::
|
||||
* HTML::
|
||||
* Digests::
|
||||
* Reading PGP::
|
||||
* Printing::
|
||||
* Files and Pipes::
|
||||
* Navigating::
|
||||
* Miscellaneous Commands and Options::
|
||||
|
||||
Sending Mail
|
||||
|
||||
* Composing::
|
||||
* Replying::
|
||||
* Forwarding::
|
||||
* Redistributing::
|
||||
* Editing Again::
|
||||
* Composing::
|
||||
* Replying::
|
||||
* Forwarding::
|
||||
* Redistributing::
|
||||
* Editing Again::
|
||||
|
||||
Editing a Draft
|
||||
|
||||
* Editing Message::
|
||||
* Inserting Letter::
|
||||
* Inserting Messages::
|
||||
* Signature::
|
||||
* Picture::
|
||||
* Adding Attachments::
|
||||
* Sending PGP::
|
||||
* Checking Recipients::
|
||||
* Sending Message::
|
||||
* Killing Draft::
|
||||
* Editing Message::
|
||||
* Inserting Letter::
|
||||
* Inserting Messages::
|
||||
* Signature::
|
||||
* Picture::
|
||||
* Adding Attachments::
|
||||
* Sending PGP::
|
||||
* Checking Recipients::
|
||||
* Sending Message::
|
||||
* Killing Draft::
|
||||
|
||||
Odds and Ends
|
||||
|
||||
* Bug Reports::
|
||||
* Mailing Lists::
|
||||
* MH FAQ and Support::
|
||||
* Getting MH-E::
|
||||
* Bug Reports::
|
||||
* Mailing Lists::
|
||||
* MH FAQ and Support::
|
||||
* Getting MH-E::
|
||||
|
||||
History of MH-E
|
||||
|
||||
* From Brian Reid::
|
||||
* From Jim Larus::
|
||||
* From Stephen Gildea::
|
||||
* From Bill Wohler::
|
||||
* From Brian Reid::
|
||||
* From Jim Larus::
|
||||
* From Stephen Gildea::
|
||||
* From Bill Wohler::
|
||||
|
||||
@end detailmenu
|
||||
@end menu
|
||||
|
@ -360,7 +360,7 @@ mode (@pxref{Reading Mail Tour}). In this mode, simply enter the
|
|||
numerical argument before entering the command.
|
||||
@end quotation
|
||||
@sp 1
|
||||
|
||||
|
||||
@cindex @file{.emacs}
|
||||
@cindex Emacs, variables
|
||||
@cindex files, @file{.emacs}
|
||||
|
@ -415,7 +415,7 @@ Face Customization} in @cite{The GNU Emacs Manual}.
|
|||
@findex customize-option
|
||||
|
||||
Commands often offer @dfn{hooks} which enable you to extend or modify
|
||||
the way a command works.
|
||||
the way a command works.
|
||||
@ifnothtml
|
||||
@ref{Hooks, , Hooks, emacs, The GNU Emacs Manual}, in @cite{The GNU
|
||||
Emacs Manual}
|
||||
|
@ -673,11 +673,11 @@ use all the features of MH-E. I suggest you read this chapter first to
|
|||
get the big picture, and then you can read the manual as you wish.
|
||||
|
||||
@menu
|
||||
* Sending Mail Tour::
|
||||
* Reading Mail Tour::
|
||||
* Processing Mail Tour::
|
||||
* Leaving MH-E::
|
||||
* More About MH-E::
|
||||
* Sending Mail Tour::
|
||||
* Reading Mail Tour::
|
||||
* Processing Mail Tour::
|
||||
* Leaving MH-E::
|
||||
* More About MH-E::
|
||||
@end menu
|
||||
|
||||
@node Sending Mail Tour, Reading Mail Tour, Tour Through MH-E, Tour Through MH-E
|
||||
|
@ -843,10 +843,10 @@ sending the original message, like this:
|
|||
|
||||
@cartouche
|
||||
@smallexample
|
||||
To:
|
||||
cc:
|
||||
Subject: Re: Test
|
||||
In-reply-to: <31054.1142621351@@stop.mail-abuse.org>
|
||||
To:
|
||||
cc:
|
||||
Subject: Re: Test
|
||||
In-reply-to: <31054.1142621351@@stop.mail-abuse.org>
|
||||
References: <31054.1142621351@@stop.mail-abuse.org>
|
||||
Comments: In-reply-to Bill Wohler <wohler@@stop.mail-abuse.org>
|
||||
message dated "Fri, 17 Mar 2006 10:49:11 -0800."
|
||||
|
@ -1161,9 +1161,9 @@ conflicts with existing MH-E symbols, use a prefix like @samp{my-} or
|
|||
your initials. (Unless, of course, your initials happen to be @emph{mh}!)
|
||||
|
||||
@menu
|
||||
* Options::
|
||||
* Ranges::
|
||||
* Folder Selection::
|
||||
* Options::
|
||||
* Ranges::
|
||||
* Folder Selection::
|
||||
@end menu
|
||||
|
||||
@node Options, Ranges, Using This Manual, Using This Manual
|
||||
|
@ -2001,15 +2001,15 @@ The functions and variables introduced here are explained in more
|
|||
detail in the following sections.
|
||||
|
||||
@menu
|
||||
* Viewing::
|
||||
* Viewing Attachments::
|
||||
* HTML::
|
||||
* Digests::
|
||||
* Reading PGP::
|
||||
* Printing::
|
||||
* Files and Pipes::
|
||||
* Navigating::
|
||||
* Miscellaneous Commands and Options::
|
||||
* Viewing::
|
||||
* Viewing Attachments::
|
||||
* HTML::
|
||||
* Digests::
|
||||
* Reading PGP::
|
||||
* Printing::
|
||||
* Files and Pipes::
|
||||
* Navigating::
|
||||
* Miscellaneous Commands and Options::
|
||||
@end menu
|
||||
|
||||
@node Viewing, Viewing Attachments, Reading Mail, Reading Mail
|
||||
|
@ -2047,7 +2047,7 @@ The option @code{mh-show-maximum-size} provides an opportunity to skip
|
|||
over large messages which may be slow to load. The default value of 0
|
||||
means that all message are shown regardless of size.
|
||||
|
||||
A litany of options control what displayed messages look like.
|
||||
A litany of options control what displayed messages look like.
|
||||
|
||||
@vindex mh-show-cc
|
||||
@vindex mh-show-date
|
||||
|
@ -2637,7 +2637,7 @@ the Gnus command @kbd{W h} (@pxref{Article Washing,,,gnus},).
|
|||
@end ifinfo
|
||||
@ifnotinfo
|
||||
see section @uref{http://www.gnus.org/manual/emacs-mime_6.html,
|
||||
Display Customization} in the @cite{The Emacs MIME Manual} and the the
|
||||
Display Customization} in the @cite{The Emacs MIME Manual} and the
|
||||
documentation for the Gnus command @kbd{W h} (see section
|
||||
@uref{http://www.gnus.org/manual/gnus_99.html, Article Washing} in the
|
||||
@cite{The Gnus Manual}).
|
||||
|
@ -2808,7 +2808,7 @@ The latter is used whether the signature is unknown or untrusted.
|
|||
@cindex customization group, @samp{pgg}
|
||||
|
||||
The @samp{pgg} customization group may have some settings which may
|
||||
interest you.
|
||||
interest you.
|
||||
@iftex
|
||||
See @cite{The PGG Manual}.
|
||||
@end iftex
|
||||
|
@ -3942,11 +3942,11 @@ The functions and options introduced here are explained in more detail
|
|||
in the following sections.
|
||||
|
||||
@menu
|
||||
* Composing::
|
||||
* Replying::
|
||||
* Forwarding::
|
||||
* Redistributing::
|
||||
* Editing Again::
|
||||
* Composing::
|
||||
* Replying::
|
||||
* Forwarding::
|
||||
* Redistributing::
|
||||
* Editing Again::
|
||||
@end menu
|
||||
|
||||
@node Composing, Replying, Sending Mail, Sending Mail
|
||||
|
@ -4686,16 +4686,16 @@ The commands and options introduced here are explained in more
|
|||
detail in the following sections.
|
||||
|
||||
@menu
|
||||
* Editing Message::
|
||||
* Inserting Letter::
|
||||
* Inserting Messages::
|
||||
* Signature::
|
||||
* Picture::
|
||||
* Adding Attachments::
|
||||
* Sending PGP::
|
||||
* Checking Recipients::
|
||||
* Sending Message::
|
||||
* Killing Draft::
|
||||
* Editing Message::
|
||||
* Inserting Letter::
|
||||
* Inserting Messages::
|
||||
* Signature::
|
||||
* Picture::
|
||||
* Adding Attachments::
|
||||
* Sending PGP::
|
||||
* Checking Recipients::
|
||||
* Sending Message::
|
||||
* Killing Draft::
|
||||
@end menu
|
||||
|
||||
@node Editing Message, Inserting Letter, Editing Drafts, Editing Drafts
|
||||
|
@ -4795,7 +4795,7 @@ the alias expansion in the minibuffer if
|
|||
@code{mh-alias-flash-on-comma} is turned on.
|
||||
|
||||
@c XXX Document the replacement for the inaccessible 'long argument.
|
||||
|
||||
|
||||
@findex mh-letter-toggle-header-field-display
|
||||
@kindex C-c C-t
|
||||
|
||||
|
@ -5543,7 +5543,7 @@ mechanisms include vanilla @samp{PGP} and @samp{S/MIME}.
|
|||
@cindex customization group, @samp{pgg}
|
||||
|
||||
The @samp{pgg} customization group may have some settings which may
|
||||
interest you.
|
||||
interest you.
|
||||
@iftex
|
||||
See @cite{The PGG Manual}.
|
||||
@end iftex
|
||||
|
@ -5954,7 +5954,7 @@ mh-alias-apropos} to show all aliases or addresses that match a
|
|||
regular expression
|
||||
@ifnothtml
|
||||
(@pxref{Regexps, , Syntax of Regular Expressions, emacs, The
|
||||
GNU Emacs Manual}).
|
||||
GNU Emacs Manual}).
|
||||
@end ifnothtml
|
||||
@ifhtml
|
||||
(see the section
|
||||
|
@ -6104,7 +6104,7 @@ customize @code{mh-auto-fields-list}, click on the @samp{INS} button
|
|||
and enter a regular expression for the recipient's address
|
||||
@ifnothtml
|
||||
(@pxref{Regexps, , Syntax of Regular Expressions, emacs, The
|
||||
GNU Emacs Manual}).
|
||||
GNU Emacs Manual}).
|
||||
@end ifnothtml
|
||||
@ifhtml
|
||||
(see the section
|
||||
|
@ -6142,7 +6142,7 @@ recipient is also listed there so that he receives replies to your
|
|||
reply.
|
||||
@c -------------------------
|
||||
@item Other Field
|
||||
Other header fields may be added using this menu item.
|
||||
Other header fields may be added using this menu item.
|
||||
@end table
|
||||
|
||||
@findex mh-insert-auto-fields
|
||||
|
@ -6181,7 +6181,7 @@ added. To customize @code{mh-identity-handlers}, replace the name of
|
|||
an existing handler function associated with the field you want to
|
||||
change with the name of a function you have written. You can also
|
||||
click on an @samp{INS} button and insert a field of your choice and
|
||||
the name of the function you have written to handle it.
|
||||
the name of the function you have written to handle it.
|
||||
|
||||
@vindex mh-identity-list
|
||||
|
||||
|
@ -6210,7 +6210,7 @@ containing the value for the field is given.
|
|||
@kindex M-x speedbar
|
||||
@kindex Mouse-2
|
||||
|
||||
You can also use the speedbar
|
||||
You can also use the speedbar
|
||||
@ifnothtml
|
||||
(@pxref{Speedbar, , Speedbar Frames, emacs, The GNU Emacs Manual},)
|
||||
@end ifnothtml
|
||||
|
@ -6573,7 +6573,7 @@ There is one option from the @samp{mh-search} customization group used
|
|||
in searching.
|
||||
|
||||
@vtable @code
|
||||
@item mh-search-program
|
||||
@item mh-search-program
|
||||
Search program that MH-E shall use (default: @samp{Auto-detect}).
|
||||
@end vtable
|
||||
|
||||
|
@ -7145,7 +7145,7 @@ Limit to messages with the same @samp{Cc:} field
|
|||
@c -------------------------
|
||||
@kindex / m
|
||||
@findex mh-narrow-to-from
|
||||
@item / m
|
||||
@item / m
|
||||
Limit to messages with the same @samp{From:} field
|
||||
(@code{mh-narrow-to-from}).
|
||||
@c -------------------------
|
||||
|
@ -7635,7 +7635,7 @@ If you don't use @command{spamc}, use @samp{spamassassin -P -a}.
|
|||
|
||||
Note that one of the recipes above throws away messages with a score
|
||||
greater than or equal to 10. Here's how you can determine a value that
|
||||
works best for you.
|
||||
works best for you.
|
||||
|
||||
First, run @samp{spamassassin -t} on every mail message in your
|
||||
archive and use @command{gnumeric} to verify that the average plus the
|
||||
|
@ -8579,10 +8579,10 @@ tell you how to report bugs and how to get on the MH-E mailing lists.
|
|||
I also point out some additional sources of information.
|
||||
|
||||
@menu
|
||||
* Bug Reports::
|
||||
* Mailing Lists::
|
||||
* MH FAQ and Support::
|
||||
* Getting MH-E::
|
||||
* Bug Reports::
|
||||
* Mailing Lists::
|
||||
* MH FAQ and Support::
|
||||
* Getting MH-E::
|
||||
@end menu
|
||||
|
||||
@node Bug Reports, Mailing Lists, Odds and Ends, Odds and Ends
|
||||
|
@ -8713,10 +8713,10 @@ development to @uref{http://sourceforge.net/, SourceForge} where it
|
|||
lives today.
|
||||
|
||||
@menu
|
||||
* From Brian Reid::
|
||||
* From Jim Larus::
|
||||
* From Stephen Gildea::
|
||||
* From Bill Wohler::
|
||||
* From Brian Reid::
|
||||
* From Jim Larus::
|
||||
* From Stephen Gildea::
|
||||
* From Bill Wohler::
|
||||
@end menu
|
||||
|
||||
@node From Brian Reid, From Jim Larus, History, History
|
||||
|
@ -9715,7 +9715,7 @@ Public License instead of this License.
|
|||
@c The following are words that ispell should ignore that would not
|
||||
@c normally be in a dictionary (global or personal). Be careful not to
|
||||
@c include words here that could potentially be typos of other words
|
||||
@c (such as url, elisp, or MHE).
|
||||
@c (such as url, elisp, or MHE).
|
||||
@c
|
||||
@c LocalWords: CTRL ESC SPC f's
|
||||
@c LocalWords: addr Aliasfile alist
|
||||
|
|
1441
man/org.texi
1441
man/org.texi
File diff suppressed because it is too large
Load diff
|
@ -1,3 +1,7 @@
|
|||
2007-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 22.1 released.
|
||||
|
||||
2007-02-10 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* COPYING.DJ: Remove file since it is no longer needed (see README
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2007-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 22.1 released.
|
||||
|
||||
2007-05-22 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* INSTALL: Add information about where to find GDB, and warn
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
2007-06-04 Ulrich Mueller <ulm@gentoo.org> (tiny change)
|
||||
|
||||
* ChgPane.c, ChgSel.c: Quiet --with-x-toolkit=no
|
||||
compilation warnings: #include <config.h>.
|
||||
|
||||
2007-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 22.1 released.
|
||||
|
||||
2007-05-30 Ulrich Mueller <ulm@gentoo.org> (tiny change)
|
||||
|
||||
* XMakeAssoc.c (XMakeAssoc): Use malloc rather than xmalloc.
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include "XMenuInt.h"
|
||||
|
||||
int
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include "XMenuInt.h"
|
||||
|
||||
int
|
||||
|
|
291
src/ChangeLog
291
src/ChangeLog
|
@ -1,3 +1,224 @@
|
|||
2007-06-10 Jason Rumney <jasonr@gnu.org>
|
||||
|
||||
* w32fns.c (Fx_file_dialog): Take size from struct not pointer.
|
||||
|
||||
2007-06-08 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* callint.c (Fcall_interactively):
|
||||
* editfns.c (Fdelete_and_extract_region):
|
||||
* fileio.c (Fread_file_name):
|
||||
* fns.c (Fmapconcat):
|
||||
* keyboard.c (cmd_error_internal):
|
||||
* keymap.c (Fkey_description):
|
||||
* lread.c (openp):
|
||||
* minibuf.c (read_minibuf):
|
||||
* search.c (wordify):
|
||||
* sunfns.c (sel_read):
|
||||
* xdisp.c (Fformat_mode_line, syms_of_xdisp):
|
||||
* xfns.c (x_default_scroll_bar_color_parameter):
|
||||
* xmenu.c (menu_help_callback):
|
||||
* xselect.c (Fx_get_atom_name):
|
||||
* xterm.c (x_term_init): Use empty_unibyte_string.
|
||||
|
||||
2007-06-08 Dmitry Antipov <dmitry.antipov@mail.ru> (tiny change)
|
||||
|
||||
* alloc.c (init_strings): Initialize canonical empty strings.
|
||||
(make_uninit_string, make_uninit_multibyte_string): Return appropriate
|
||||
canonical empty string when the requested size is 0.
|
||||
|
||||
* emacs.c (empty_unibyte_string): Rename from empty_string.
|
||||
(empty_multibyte_string): New canonical empty string.
|
||||
(syms_of_emacs): Don't initialize empty_string.
|
||||
|
||||
* lisp.h (STRING_SET_UNIBYTE): Return the canonical empty unibyte
|
||||
string, if appropriate.
|
||||
(empty_unibyte_string, empty_multibyte_string): New externs.
|
||||
(empty_string): Remove extern.
|
||||
|
||||
* lread.c (syms_of_lread): Use empty_unibyte_string.
|
||||
|
||||
2007-06-07 Jason Rumney <jasonr@gnu.org>
|
||||
|
||||
* s/ms-w32.h: Don't define HAVE_TZNAME.
|
||||
|
||||
* editfns.c (Fcurrent_time_zone): Remove hack for Japanese Windows.
|
||||
|
||||
2007-06-07 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
* mac.c (xrm_get_preference_database): Remove BLOCK_INPUT.
|
||||
|
||||
* macfns.c (mac_get_window_bounds): Move extern to macterm.h.
|
||||
(compute_tip_xy) [TARGET_API_MAC_CARBON]: Use GetGlobalMouse.
|
||||
|
||||
* macmenu.c [TARGET_API_MAC_CARBON] (menu_target_item_handler):
|
||||
Don't call next handler.
|
||||
[TARGET_API_MAC_CARBON] (install_menu_target_item_handler):
|
||||
Remove argument. Install handler to application.
|
||||
(set_frame_menubar): Don't change deep_p.
|
||||
(mac_menu_show): Use FRAME_OUTER_TO_INNER_DIFF_X and
|
||||
FRAME_OUTER_TO_INNER_DIFF_Y.
|
||||
(DIALOG_BUTTON_COMMAND_ID_OFFSET, DIALOG_BUTTON_COMMAND_ID_P)
|
||||
(DIALOG_BUTTON_COMMAND_ID_VALUE, DIALOG_BUTTON_MAKE_COMMAND_ID)
|
||||
[HAVE_DIALOGS]: New macros.
|
||||
[HAVE_DIALOGS] (mac_handle_dialog_event, create_and_show_dialog):
|
||||
Use them.
|
||||
(fill_menubar) [TARGET_API_MAC_CARBON]: Use CFString.
|
||||
|
||||
* macselect.c [MAC_OSX] (install_service_handler): Rename from
|
||||
init_service_handler. All callers changed. Return OSStatus value.
|
||||
|
||||
* macterm.c (mac_begin_cg_clip): New arg F. Call SetPortWindowPort.
|
||||
All callers changed so as not to call SetPortWindowPort.
|
||||
(mac_begin_cg_clip) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw.
|
||||
(mac_draw_image_string_atsui) [USE_ATSUI]: New function created from
|
||||
mac_draw_string_common.
|
||||
(mac_draw_image_string_qd): Likewise.
|
||||
(mac_draw_string_common): Use them. Add INLINE.
|
||||
(XTmouse_position, x_scroll_bar_report_motion) [TARGET_API_MAC_CARBON]:
|
||||
Use FRAME_OUTER_TO_INNER_DIFF_X, FRAME_OUTER_TO_INNER_DIFF_Y, and
|
||||
GetGlobalMouse.
|
||||
(x_set_mouse_pixel_position) [MAC_OSX]: Use FRAME_OUTER_TO_INNER_DIFF_X
|
||||
and FRAME_OUTER_TO_INNER_DIFF_Y.
|
||||
[TARGET_API_MAC_CARBON] (mac_handle_mouse_event): Likewise.
|
||||
[USE_MAC_TSM] (mac_handle_text_input_event): Likewise.
|
||||
(x_make_frame_visible) [TARGET_API_MAC_CARBON]: Move code for
|
||||
repositioning window to mac_handle_window_event.
|
||||
(x_make_frame_invisible) [TARGET_API_MAC_CARBON]: Move code for
|
||||
saving window location to mac_handle_window_event
|
||||
[USE_MAC_FONT_PANEL] (mac_show_hide_font_panel): Install handler here.
|
||||
(install_menu_target_item_handler): Remove argument in extern.
|
||||
[TARGET_API_MAC_CARBON] (mac_event_to_emacs_modifiers):
|
||||
Also accept command events.
|
||||
(do_keystroke): New function created from XTread_socket.
|
||||
(init_command_handler): Remove functions.
|
||||
[TARGET_API_MAC_CARBON] (mac_handle_window_event): Reposition window
|
||||
and save window location by kEventWindowShowing and kEventWindowHiding
|
||||
handlers here. Don't call next handler for window state change and
|
||||
focus events.
|
||||
(mac_handle_application_event, mac_handle_keyboard_event)
|
||||
[TARGET_API_MAC_CARBON]: New functions.
|
||||
(install_window_handler) [TARGET_API_MAC_CARBON]: Register handlers for
|
||||
kEventWindowShowing and kEventWindowHiding events. Move installation
|
||||
of mouse, font, text input and menu target item handlers to
|
||||
install_application_handler.
|
||||
(install_application_handler) [TARGET_API_MAC_CARBON]: New function.
|
||||
(mac_handle_cg_display_reconfig) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
|
||||
New function.
|
||||
(init_dm_notification_handler) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
|
||||
Register it.
|
||||
(XTread_socket) [TARGET_API_MAC_CARBON]: Consolidate
|
||||
SendEventToEventTarget calls. Use FRAME_OUTER_TO_INNER_DIFF_X and
|
||||
FRAME_OUTER_TO_INNER_DIFF_Y. Move application activation handler
|
||||
to mac_handle_application_event. Move keyboard handler to
|
||||
mac_handle_keyboard_event.
|
||||
(XTread_socket) [!TARGET_API_MAC_CARBON]: Use do_keystroke.
|
||||
(mac_initialize) [TARGET_API_MAC_CARBON]: Don't call
|
||||
init_command_handler. Call install_application_handler.
|
||||
|
||||
* macterm.h (mac_get_window_bounds): Move extern from macfns.c.
|
||||
(FRAME_OUTER_TO_INNER_DIFF_X, FRAME_OUTER_TO_INNER_DIFF_Y): New macros.
|
||||
|
||||
2007-06-07 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* emacs.c (main): Use `emacs-copyright' in --version output.
|
||||
|
||||
2007-06-06 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* image.c (xpm_load): Remove spurious call to
|
||||
xpm_init_color_cache.
|
||||
|
||||
2007-06-06 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
* macfns.c (mac_window): Replace WindowPtr with WindowRef.
|
||||
|
||||
* macgui.h: Replace WindowPtr with WindowRef.
|
||||
|
||||
* macmenu.c: Replace MenuHandle and GetMenuHandle with MenuRef and
|
||||
GetMenuRef, respectively. Replace WindowPtr with WindowRef.
|
||||
Replace ControlHandle with ControlRef.
|
||||
(install_menu_quit_handler): Rename arg MENU_HANDLE to ROOT_MENU.
|
||||
|
||||
* macterm.c: Replace MenuHandle and GetMenuHandle with MenuRef and
|
||||
GetMenuRef, respectively. Replace WindowPtr with WindowRef.
|
||||
Replace ControlHandle with ControlRef.
|
||||
(USE_CARBON_EVENTS): Remove. Use TARGET_API_MAC_CARBON instead.
|
||||
[MAC_OS8] (do_get_menus): Rename variable `menu_handle' to `menu'.
|
||||
|
||||
* macterm.h (struct scroll_bar): Rename member control_handle_low
|
||||
and control_handle_high to control_ref_low and control_ref_high.
|
||||
All uses changed.
|
||||
(SCROLL_BAR_CONTROL_REF, SET_SCROLL_BAR_CONTROL_REF): Rename from
|
||||
SCROLL_BAR_CONTROL_HANDLE and SET_SCROLL_BAR_CONTROL_HANDLE,
|
||||
respectively. All uses changed.
|
||||
(XCreatePixmap, XCreatePixmapFromBitmapData, XSetWindowBackground)
|
||||
(install_window_handler, remove_window_handler): Replace WindowPtr
|
||||
with WindowRef in externs.
|
||||
|
||||
2007-06-05 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* xfaces.c (Finternal_lisp_face_p): Signal error for face alias loops.
|
||||
|
||||
2007-06-03 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* keyboard.c (discard_mouse_events): Add GPM_CLICK_EVENT case.
|
||||
|
||||
* frame.c (Fmouse_position, Fmouse_pixel_position):
|
||||
Condition on HAVE_GPM too.
|
||||
|
||||
* term.c (term_mouse_highlight): Remove unused variables.
|
||||
(Fterm_open_connection): Set gpm_zerobased to 1.
|
||||
(term_mouse_movement, term_mouse_click, handle_one_term_event):
|
||||
Use zero based co-ordinates.
|
||||
(handle_one_term_event): Report a drag as mouse movement too.
|
||||
|
||||
* Makefile.in (MOUSE_SUPPORT): Define for HAVE_GPM.
|
||||
|
||||
2007-06-03 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* image.c (search_image_cache): New function. Require background
|
||||
color match if background color is unspecified in the image spec.
|
||||
(uncache_image, lookup_image): Use it.
|
||||
|
||||
2007-06-01 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* window.c (Fshrink_window): Reflow docstring.
|
||||
|
||||
2007-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 22.1 released.
|
||||
|
||||
2007-06-01 Richard Stallman <rms@gnu.org>
|
||||
|
||||
* xfns.c (x_encode_text): Add GCPRO.
|
||||
|
||||
2007-06-01 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
* xfns.c (x_set_name_internal): Save encoded name before
|
||||
x_encode_text in case string data is relocated.
|
||||
|
||||
2007-05-31 Richard Stallman <rms@gnu.org>
|
||||
|
||||
* buffer.c (syms_of_buffer): Doc fix.
|
||||
|
||||
2007-05-30 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* sysdep.c (init_sys_modes): Add rather than replace with
|
||||
O_NONBLOCK.
|
||||
|
||||
* frame.c [HAVE_GPM] (Fset_mouse_pixel_position): Add call to
|
||||
term_mouse_moveto.
|
||||
|
||||
* termhooks.h (term_mouse_moveto): New extern.
|
||||
|
||||
* term.c (mouse_face_window): Rename...
|
||||
(Qmouse_face_window): ...to this.
|
||||
(term_show_mouse_face, term_clear_mouse_face)
|
||||
(term_mouse_highlight): Use Qmouse_face_window.
|
||||
(term_mouse_moveto): New function.
|
||||
(term_mouse_position): Make it work.
|
||||
(syms_of_term): Uncomment assignment to mouse_position_hook.
|
||||
Staticpro Qmouse_face_window.
|
||||
|
||||
2007-05-28 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
* xdisp.c (redisplay_internal): Bind inhibit-point-motion-hooks to t
|
||||
|
@ -6,14 +227,14 @@
|
|||
2007-05-26 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* xfaces.c (syms_of_xfaces): Delete stray semicolon.
|
||||
* xdisp.c (next_element_from_buffer):
|
||||
* window.c (delete_window):
|
||||
* term.c (term_mouse_highlight):
|
||||
* msdos.c (getdefdir):
|
||||
* xdisp.c (next_element_from_buffer):
|
||||
* window.c (delete_window):
|
||||
* term.c (term_mouse_highlight):
|
||||
* msdos.c (getdefdir):
|
||||
* macterm.c (mac_create_bitmap_from_bitmap_data)
|
||||
(init_font_name_table):
|
||||
* fns.c (Fsxhash):
|
||||
* data.c (Fmake_local_variable):
|
||||
(init_font_name_table):
|
||||
* fns.c (Fsxhash):
|
||||
* data.c (Fmake_local_variable):
|
||||
* ccl.c (ccl_driver): Likewise.
|
||||
|
||||
2007-05-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
@ -25,7 +246,7 @@
|
|||
|
||||
* image.c (uncache_image): Fix typo.
|
||||
|
||||
2007-05-23 Johannes Weiner <hannes@saeurebad.de> (tiny change)
|
||||
2007-05-23 Johannes Weiner <hannes@saeurebad.de> (tiny change)
|
||||
|
||||
* keyboard.c (make_lispy_movement): Condition on HAVE_GPM too.
|
||||
|
||||
|
@ -78,7 +299,7 @@
|
|||
|
||||
* termhooks.h [HAVE_GPM_H] (enum event_kind): Add GPM_CLICK_EVENT.
|
||||
Include gpm.h.
|
||||
(handle_one_term_event, term_gpm) New externs.
|
||||
(handle_one_term_event, term_gpm): New externs.
|
||||
|
||||
* sysdep.c [HAVE_GPM_H] (init_sys_modes): Make gpm_fd nonblocking
|
||||
and allow it to be interrupted by SIGIO.
|
||||
|
@ -144,11 +365,12 @@
|
|||
|
||||
2007-05-07 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* editfns.c (Ftranspose_regions): Yet another int/Lisp_Object mixup (YAILOM)
|
||||
* editfns.c (Ftranspose_regions): Yet another int/Lisp_Object
|
||||
mixup (YAILOM).
|
||||
|
||||
2007-05-07 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* keymap.c (Flookup_key): Fix typo in last change.
|
||||
* keymap.c (Flookup_key): Fix typo in last change.
|
||||
|
||||
2007-05-07 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
|
@ -2599,7 +2821,7 @@
|
|||
for writing files. Call gtk_file_chooser_set_current_name to keep
|
||||
default filename.
|
||||
|
||||
* minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
|
||||
* minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls.
|
||||
|
||||
2006-09-02 Jindrich Makovicka <makovick@gmail.com> (tiny change)
|
||||
|
||||
|
@ -2856,7 +3078,7 @@
|
|||
* xterm.h (struct x_display_info): Add x_dnd_atoms* to keep track
|
||||
of drag and drop Atoms.
|
||||
|
||||
* xterm.c (x_term_init): Initialize dpyinfo->x_dnd_atoms*
|
||||
* xterm.c (x_term_init): Initialize dpyinfo->x_dnd_atoms*.
|
||||
|
||||
2006-08-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
|
||||
|
||||
|
@ -4022,7 +4244,7 @@
|
|||
|
||||
2006-05-23 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
|
||||
|
||||
* xterm.c: Remove declarations already in xterm.h
|
||||
* xterm.c: Remove declarations already in xterm.h.
|
||||
|
||||
* xterm.h: Add extern declarations for x_clear_errors,
|
||||
x_fully_uncatch_errors, x_catching_errors and
|
||||
|
@ -4763,7 +4985,8 @@
|
|||
|
||||
* puresize.h (pure_write_error): Mark as NO_RETURN.
|
||||
|
||||
* lisp.h (args_out_of_range, args_out_of_range_3)
|
||||
* lisp.h (args_out_of_range, args_out_of_range_3, Fkill_emacs):
|
||||
Likewise.
|
||||
|
||||
2006-04-08 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
|
@ -6380,7 +6603,7 @@
|
|||
|
||||
* macterm.c (Qmac_ready_for_drag_n_drop, Qapplication, Qabout)
|
||||
(Qpreferences): Remove variables.
|
||||
(syms_of_macterm) : Don't initialize them.
|
||||
(syms_of_macterm): Don't initialize them.
|
||||
(Qhicommand) [USE_CARBON_EVENTS]: New variable.
|
||||
(syms_of_macterm) [USE_CARBON_EVENTS]: Initialize it.
|
||||
(init_required_apple_events, do_ae_open_application)
|
||||
|
@ -7062,7 +7285,7 @@
|
|||
|
||||
* mac.c [TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp):
|
||||
Allow nil as argument.
|
||||
[TARGET_API_MAC_CARBON] (Fmac_code_convert_string): Regard nil
|
||||
[TARGET_API_MAC_CARBON] (Fmac_code_convert_string): Regard nil
|
||||
for encoding arguments as UTF-16 in native byte order, no BOM.
|
||||
|
||||
* macfns.c (Fx_create_frame): Add debugging code.
|
||||
|
@ -9998,7 +10221,7 @@
|
|||
(cfobject_desc_to_lisp, cfproperty_list_to_lisp): Likewise.
|
||||
|
||||
* process.c (init_process): Change `#ifdef DARWIN' to `#if
|
||||
defined (DARWIN) || defined (MAC_OSX)'
|
||||
defined (DARWIN) || defined (MAC_OSX)'.
|
||||
|
||||
* s/darwin.h (DARWIN): Don't define.
|
||||
|
||||
|
@ -10535,7 +10758,7 @@
|
|||
2005-02-03 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* dispnew.c (build_frame_matrix_from_leaf_window)
|
||||
[!GLYPH_DEBUG]: Fix xassert.
|
||||
[!GLYPH_DEBUG]: Fix xassert.
|
||||
|
||||
* xfaces.c (x_free_gc) [!GLYPH_DEBUG]: Fix xassert.
|
||||
|
||||
|
@ -11425,7 +11648,7 @@
|
|||
|
||||
2004-12-20 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
* macterm.c (mac_do_list_fonts): Fix memory leak
|
||||
* macterm.c (mac_do_list_fonts): Fix memory leak.
|
||||
|
||||
2004-12-20 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
|
@ -12205,7 +12428,7 @@
|
|||
* Makefile.in (SOME_MACHINE_OBJECTS): Add fringe.o, image.o
|
||||
and w32*.o.
|
||||
(temacs${EXEEXT}): Generate buildobj.lst when temacs is linked.
|
||||
(mostlyclean): Rm buildobj.lst
|
||||
(mostlyclean): Rm buildobj.lst.
|
||||
|
||||
* makefile.w32-in ($(TEMACS)): Generate buildobj.lst when temacs
|
||||
is linked.
|
||||
|
@ -12543,7 +12766,7 @@
|
|||
(SAFE_ALLOCA, SAFE_ALLOCA_LISP): Increment it when malloc is used.
|
||||
(SAFE_FREE): Test it to determine if we need to unwind to free.
|
||||
Remove size arg. All users changed.
|
||||
(SAFE_FREE_LISP) Remove. All users changed to use SAFE_FREE.
|
||||
(SAFE_FREE_LISP): Remove. All users changed to use SAFE_FREE.
|
||||
|
||||
2004-10-26 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
|
||||
|
||||
|
@ -13200,7 +13423,7 @@
|
|||
(single_submenu): Use ENCODE_MENU_STRING
|
||||
(mac_menu_show): Use ENCODE_MENU_STRING. Reset grabbed because
|
||||
button release isn't passed to event loop
|
||||
(add_menu_item): Use SetMenuItemWithCFString
|
||||
(add_menu_item): Use SetMenuItemWithCFString.
|
||||
|
||||
2004-08-26 Steven Tamm <steventamm@mac.com>
|
||||
|
||||
|
@ -13469,7 +13692,7 @@
|
|||
blocking on event queue only by calling ReceiveNextEvent
|
||||
instead of select (since GUI events aren't on an fd).
|
||||
(sys_read): Remove function
|
||||
* sysdep.c: Remove redefine of read to sys_read if HAVE_CARBON
|
||||
* sysdep.c: Remove redefine of read to sys_read if HAVE_CARBON.
|
||||
|
||||
2004-07-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
|
@ -13479,12 +13702,12 @@
|
|||
* macterm.c (x_make_frame_visible): Comment in polling on
|
||||
frame creation.
|
||||
|
||||
* keyboard.c: Undef SIGIO on Carbon
|
||||
* keyboard.c: Undef SIGIO on Carbon.
|
||||
|
||||
* atimer.c (alarm_signal_handler): Call alarm handlers after
|
||||
scheduling.
|
||||
|
||||
* eval.c (Feval): Remove quit_char test
|
||||
* eval.c (Feval): Remove quit_char test.
|
||||
|
||||
* process.c (wait_reading_process_input): Remove clearing
|
||||
stdin for select call on process input.
|
||||
|
@ -14436,7 +14659,7 @@
|
|||
2004-05-11 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
* macterm.c (x_flush, XTframe_up_to_date): Use FRAME_MAC_P
|
||||
instead of FRAME_X_P
|
||||
instead of FRAME_X_P.
|
||||
|
||||
2004-05-11 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
|
@ -14606,7 +14829,7 @@
|
|||
|
||||
2004-05-01 Jason Rumney <jasonr@gnu.org>
|
||||
|
||||
* w32term.c (x_draw_hollow_cursor): Sync with xterm.c
|
||||
* w32term.c (x_draw_hollow_cursor): Sync with xterm.c.
|
||||
|
||||
2004-04-30 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
|
@ -17399,7 +17622,7 @@
|
|||
|
||||
* makefile.w32-in (alloca.o): Remove.
|
||||
(coding.o): Depend on intervals.h
|
||||
(emacs.o, bytecode.o): Depend on window.h
|
||||
(emacs.o, bytecode.o): Depend on window.h.
|
||||
|
||||
2003-09-01 Dave Love <fx@gnu.org>
|
||||
|
||||
|
@ -18180,7 +18403,7 @@
|
|||
* gtkutil.c: Include keyboard.h, charset.h, coding.h.
|
||||
(xg_create_frame_widgets): Use ENCODE_UTF_8.
|
||||
|
||||
* xterm.c (Qutf_8): Move to coding.c
|
||||
* xterm.c (Qutf_8): Move to coding.c.
|
||||
|
||||
* xmenu.c (ENCODE_MENU_STRING): New.
|
||||
(list_of_panes, list_of_items, digest_single_submenu, xmenu_show):
|
||||
|
@ -20909,7 +21132,7 @@
|
|||
(redisplay_internal): Add check for USE_GTK and popup_activated.
|
||||
(redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_MENU_BAR.
|
||||
(redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_TOOL_BAR.
|
||||
(display_menu_bar): Add check for USE_GTK
|
||||
(display_menu_bar): Add check for USE_GTK.
|
||||
|
||||
* lisp.h (Vx_resource_name): Declare extern.
|
||||
|
||||
|
@ -22027,7 +22250,7 @@
|
|||
|
||||
* buffer.c (assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
|
||||
(call_overlay_mod_hooks): Use CONSP and XCAR/XCDR.
|
||||
(Fget_buffer_create, advance_to_char_boundary): Use BEG and BEG_BYTE;
|
||||
(Fget_buffer_create, advance_to_char_boundary): Use BEG and BEG_BYTE.
|
||||
|
||||
2002-10-21 Stefan Monnier <monnier@cs.yale.edu>
|
||||
|
||||
|
@ -23726,8 +23949,8 @@
|
|||
* fns.c (Fstring_make_unibyte): Doc fix.
|
||||
|
||||
* xselect.c (lisp_data_to_selection_data): If the requested type
|
||||
is STRING, call string_make_unibyte to encode the selected text
|
||||
as a string.
|
||||
is STRING, call string_make_unibyte to encode the selected text
|
||||
as a string.
|
||||
|
||||
* window.c (Fset_window_hscroll): Doc fix.
|
||||
|
||||
|
|
|
@ -691,8 +691,12 @@ otherobj= $(termcapobj) lastfile.o $(mallocobj) $(allocaobj) $(widgetobj) $(LIBO
|
|||
#define MOUSE_SUPPORT ${lispsource}mouse.elc \
|
||||
${lispsource}select.elc ${lispsource}scroll-bar.elc
|
||||
#else
|
||||
#ifdef HAVE_GPM
|
||||
#define MOUSE_SUPPORT ${lispsource}mouse.elc
|
||||
#else
|
||||
#define MOUSE_SUPPORT
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VMS
|
||||
#define VMS_SUPPORT ${lispsource}vmsproc.elc ${lispsource}vms-patch.elc
|
||||
|
|
|
@ -1756,6 +1756,8 @@ init_strings ()
|
|||
string_blocks = NULL;
|
||||
n_string_blocks = 0;
|
||||
string_free_list = NULL;
|
||||
empty_unibyte_string = make_pure_string ("", 0, 0, 0);
|
||||
empty_multibyte_string = make_pure_string ("", 0, 0, 1);
|
||||
}
|
||||
|
||||
|
||||
|
@ -2479,6 +2481,9 @@ make_uninit_string (length)
|
|||
int length;
|
||||
{
|
||||
Lisp_Object val;
|
||||
|
||||
if (!length)
|
||||
return empty_unibyte_string;
|
||||
val = make_uninit_multibyte_string (length, length);
|
||||
STRING_SET_UNIBYTE (val);
|
||||
return val;
|
||||
|
@ -2497,6 +2502,8 @@ make_uninit_multibyte_string (nchars, nbytes)
|
|||
|
||||
if (nchars < 0)
|
||||
abort ();
|
||||
if (!nbytes)
|
||||
return empty_multibyte_string;
|
||||
|
||||
s = allocate_string ();
|
||||
allocate_string_data (s, nchars, nbytes);
|
||||
|
|
|
@ -6002,7 +6002,7 @@ same format as a regular save would use. */);
|
|||
The default is t, which means that text is invisible
|
||||
if it has a non-nil `invisible' property.
|
||||
If the value is a list, a text character is invisible if its `invisible'
|
||||
property is an element in that list.
|
||||
property is an element in that list (or is a list with members in common).
|
||||
If an element is a cons cell of the form (PROP . ELLIPSIS),
|
||||
then characters with property value PROP are invisible,
|
||||
and they have an ellipsis as well if ELLIPSIS is non-nil. */);
|
||||
|
|
|
@ -585,7 +585,7 @@ invoke it. If KEYS is omitted or nil, the return value of
|
|||
case 'G': /* Possibly nonexistent file name,
|
||||
default to directory alone. */
|
||||
args[i] = Fread_file_name (callint_message,
|
||||
Qnil, Qnil, Qnil, build_string (""), Qnil);
|
||||
Qnil, Qnil, Qnil, empty_unibyte_string, Qnil);
|
||||
break;
|
||||
|
||||
case 'i': /* Ignore an argument -- Does not do I/O */
|
||||
|
|
|
@ -1972,6 +1972,7 @@ the data it can't find. */)
|
|||
int offset = tm_diff (t, &gmt);
|
||||
char *s = 0;
|
||||
char buf[6];
|
||||
|
||||
#ifdef HAVE_TM_ZONE
|
||||
if (t->tm_zone)
|
||||
s = (char *)t->tm_zone;
|
||||
|
@ -1982,19 +1983,6 @@ the data it can't find. */)
|
|||
#endif
|
||||
#endif /* not HAVE_TM_ZONE */
|
||||
|
||||
#if defined HAVE_TM_ZONE || defined HAVE_TZNAME
|
||||
if (s)
|
||||
{
|
||||
/* On Japanese w32, we can get a Japanese string as time
|
||||
zone name. Don't accept that. */
|
||||
char *p;
|
||||
for (p = s; *p && (isalnum ((unsigned char)*p) || *p == ' '); ++p)
|
||||
;
|
||||
if (p == s || *p)
|
||||
s = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!s)
|
||||
{
|
||||
/* No local time zone name is available; use "+-NNNN" instead. */
|
||||
|
@ -2002,6 +1990,7 @@ the data it can't find. */)
|
|||
sprintf (buf, "%c%02d%02d", (offset < 0 ? '-' : '+'), am/60, am%60);
|
||||
s = buf;
|
||||
}
|
||||
|
||||
return Fcons (make_number (offset), Fcons (build_string (s), Qnil));
|
||||
}
|
||||
else
|
||||
|
@ -3174,7 +3163,7 @@ DEFUN ("delete-and-extract-region", Fdelete_and_extract_region,
|
|||
{
|
||||
validate_region (&start, &end);
|
||||
if (XINT (start) == XINT (end))
|
||||
return build_string ("");
|
||||
return empty_unibyte_string;
|
||||
return del_range_1 (XINT (start), XINT (end), 1, 1);
|
||||
}
|
||||
|
||||
|
|
17
src/emacs.c
17
src/emacs.c
|
@ -133,8 +133,8 @@ Lisp_Object Vinstallation_directory;
|
|||
/* Hook run by `kill-emacs' before it does really anything. */
|
||||
Lisp_Object Vkill_emacs_hook;
|
||||
|
||||
/* An empty lisp string. To avoid having to build any other. */
|
||||
Lisp_Object empty_string;
|
||||
/* Empty lisp strings. To avoid having to build any others. */
|
||||
Lisp_Object empty_unibyte_string, empty_multibyte_string;
|
||||
|
||||
/* Search path separator. */
|
||||
Lisp_Object Vpath_separator;
|
||||
|
@ -859,17 +859,23 @@ main (argc, argv
|
|||
So ignore --version otherwise. */
|
||||
&& initialized)
|
||||
{
|
||||
Lisp_Object tem;
|
||||
Lisp_Object tem, tem2;
|
||||
tem = Fsymbol_value (intern ("emacs-version"));
|
||||
tem2 = Fsymbol_value (intern ("emacs-copyright"));
|
||||
if (!STRINGP (tem))
|
||||
{
|
||||
fprintf (stderr, "Invalid value of `emacs-version'\n");
|
||||
exit (1);
|
||||
}
|
||||
if (!STRINGP (tem2))
|
||||
{
|
||||
fprintf (stderr, "Invalid value of `emacs-copyright'\n");
|
||||
exit (1);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf ("GNU Emacs %s\n", SDATA (tem));
|
||||
printf ("Copyright (C) 2007 Free Software Foundation, Inc.\n");
|
||||
printf ("%s\n", SDATA(tem2));
|
||||
printf ("GNU Emacs comes with ABSOLUTELY NO WARRANTY.\n");
|
||||
printf ("You may redistribute copies of Emacs\n");
|
||||
printf ("under the terms of the GNU General Public License.\n");
|
||||
|
@ -2494,9 +2500,6 @@ see `kill-emacs-query-functions' instead.
|
|||
The hook is not run in batch mode, i.e., if `noninteractive' is non-nil. */);
|
||||
Vkill_emacs_hook = Qnil;
|
||||
|
||||
empty_string = build_string ("");
|
||||
staticpro (&empty_string);
|
||||
|
||||
DEFVAR_INT ("emacs-priority", &emacs_priority,
|
||||
doc: /* Priority for Emacs to run at.
|
||||
This value is effective only if set before Emacs is dumped,
|
||||
|
|
|
@ -6346,7 +6346,7 @@ and `read-file-name-function'. */)
|
|||
if (! replace_in_history)
|
||||
add_to_history = 1;
|
||||
|
||||
val = empty_string;
|
||||
val = empty_unibyte_string;
|
||||
}
|
||||
|
||||
unbind_to (count, Qnil);
|
||||
|
|
|
@ -2497,7 +2497,7 @@ SEQUENCE may be a list, a vector, a bool-vector, or a string. */)
|
|||
wrong_type_argument (Qlistp, sequence);
|
||||
leni = XINT (len);
|
||||
nargs = leni + leni - 1;
|
||||
if (nargs < 0) return build_string ("");
|
||||
if (nargs < 0) return empty_unibyte_string;
|
||||
|
||||
SAFE_ALLOCA_LISP (args, nargs);
|
||||
|
||||
|
|
11
src/frame.c
11
src/frame.c
|
@ -1460,7 +1460,7 @@ and returns whatever that function returns. */)
|
|||
f = SELECTED_FRAME ();
|
||||
x = y = Qnil;
|
||||
|
||||
#ifdef HAVE_MOUSE
|
||||
#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
|
||||
/* It's okay for the hook to refrain from storing anything. */
|
||||
if (mouse_position_hook)
|
||||
(*mouse_position_hook) (&f, -1,
|
||||
|
@ -1504,7 +1504,7 @@ and nil for X and Y. */)
|
|||
f = SELECTED_FRAME ();
|
||||
x = y = Qnil;
|
||||
|
||||
#ifdef HAVE_MOUSE
|
||||
#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
|
||||
/* It's okay for the hook to refrain from storing anything. */
|
||||
if (mouse_position_hook)
|
||||
(*mouse_position_hook) (&f, -1,
|
||||
|
@ -1591,6 +1591,13 @@ before calling this function on it, like this.
|
|||
Fselect_frame (frame);
|
||||
mouse_moveto (XINT (x), XINT (y));
|
||||
}
|
||||
#else
|
||||
#ifdef HAVE_GPM
|
||||
{
|
||||
Fselect_frame (frame);
|
||||
term_mouse_moveto (XINT (x), XINT (y));
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
60
src/image.c
60
src/image.c
|
@ -1609,6 +1609,7 @@ x_alloc_image_color (f, img, color_name, dflt)
|
|||
Image Cache
|
||||
***********************************************************************/
|
||||
|
||||
static struct image *search_image_cache P_ ((struct frame *, Lisp_Object, unsigned));
|
||||
static void cache_image P_ ((struct frame *f, struct image *img));
|
||||
static void postprocess_image P_ ((struct frame *, struct image *));
|
||||
|
||||
|
@ -1631,24 +1632,47 @@ make_image_cache ()
|
|||
}
|
||||
|
||||
|
||||
/* Search frame F for an images with spec SPEC, and free it. */
|
||||
/* Find an image matching SPEC in the cache, and return it. If no
|
||||
image is found, return NULL. */
|
||||
static struct image *
|
||||
search_image_cache (f, spec, hash)
|
||||
struct frame *f;
|
||||
Lisp_Object spec;
|
||||
unsigned hash;
|
||||
{
|
||||
struct image *img;
|
||||
struct image_cache *c = FRAME_X_IMAGE_CACHE (f);
|
||||
Lisp_Object specified_bg = image_spec_value (spec, QCbackground, NULL);
|
||||
int i = hash % IMAGE_CACHE_BUCKETS_SIZE;
|
||||
|
||||
/* If the image spec does not specify a background color, the cached
|
||||
image must have the same background color as the current frame.
|
||||
The following code be improved. For example, jpeg does not
|
||||
support transparency, but currently a jpeg image spec won't match
|
||||
a cached spec created with a different frame background. The
|
||||
extra memory usage is probably negligible in practice. */
|
||||
if (!c) return NULL;
|
||||
|
||||
for (img = c->buckets[i]; img; img = img->next)
|
||||
if (img->hash == hash
|
||||
&& !NILP (Fequal (img->spec, spec))
|
||||
&& (STRINGP (specified_bg)
|
||||
|| img->background == FRAME_BACKGROUND_PIXEL (f)))
|
||||
break;
|
||||
return img;
|
||||
}
|
||||
|
||||
|
||||
/* Search frame F for an image with spec SPEC, and free it. */
|
||||
|
||||
static void
|
||||
uncache_image (f, spec)
|
||||
struct frame *f;
|
||||
Lisp_Object spec;
|
||||
{
|
||||
struct image_cache *c = FRAME_X_IMAGE_CACHE (f);
|
||||
struct image *img;
|
||||
unsigned hash = sxhash (spec, 0);
|
||||
int i = hash % IMAGE_CACHE_BUCKETS_SIZE;
|
||||
|
||||
for (img = c->buckets[i]; img; img = img->next)
|
||||
if (img->hash == hash && !NILP (Fequal (img->spec, spec)))
|
||||
{
|
||||
free_image (f, img);
|
||||
break;
|
||||
}
|
||||
struct image *img = search_image_cache (f, spec, sxhash (spec, 0));
|
||||
if (img)
|
||||
free_image (f, img);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1875,9 +1899,7 @@ lookup_image (f, spec)
|
|||
struct frame *f;
|
||||
Lisp_Object spec;
|
||||
{
|
||||
struct image_cache *c = FRAME_X_IMAGE_CACHE (f);
|
||||
struct image *img;
|
||||
int i;
|
||||
unsigned hash;
|
||||
struct gcpro gcpro1;
|
||||
EMACS_TIME now;
|
||||
|
@ -1891,12 +1913,7 @@ lookup_image (f, spec)
|
|||
|
||||
/* Look up SPEC in the hash table of the image cache. */
|
||||
hash = sxhash (spec, 0);
|
||||
i = hash % IMAGE_CACHE_BUCKETS_SIZE;
|
||||
|
||||
for (img = c->buckets[i]; img; img = img->next)
|
||||
if (img->hash == hash && !NILP (Fequal (img->spec, spec)))
|
||||
break;
|
||||
|
||||
img = search_image_cache (f, spec, hash);
|
||||
if (img && img->load_failed_p)
|
||||
{
|
||||
free_image (f, img);
|
||||
|
@ -3961,9 +3978,6 @@ xpm_load (f, img)
|
|||
attrs.valuemask |= XpmCloseness;
|
||||
#endif /* not XpmAllocCloseColors */
|
||||
#endif /* ALLOC_XPM_COLORS */
|
||||
#ifdef ALLOC_XPM_COLORS
|
||||
xpm_init_color_cache (f, &attrs);
|
||||
#endif
|
||||
|
||||
/* If image specification contains symbolic color definitions, add
|
||||
these to `attrs'. */
|
||||
|
|
|
@ -1249,7 +1249,7 @@ cmd_error_internal (data, context)
|
|||
/* Use user's specified output function if any. */
|
||||
if (!NILP (Vcommand_error_function))
|
||||
call3 (Vcommand_error_function, data,
|
||||
build_string (context ? context : ""),
|
||||
context ? build_string (context) : empty_unibyte_string,
|
||||
Vsignaling_function);
|
||||
/* If the window system or terminal frame hasn't been initialized
|
||||
yet, or we're not interactive, write the message to stderr and exit. */
|
||||
|
@ -3917,6 +3917,9 @@ discard_mouse_events ()
|
|||
|| sp->kind == WHEEL_EVENT
|
||||
#ifdef WINDOWSNT
|
||||
|| sp->kind == W32_SCROLL_BAR_CLICK_EVENT
|
||||
#endif
|
||||
#ifdef HAVE_GPM
|
||||
|| sp->kind == GPM_CLICK_EVENT
|
||||
#endif
|
||||
|| sp->kind == SCROLL_BAR_CLICK_EVENT)
|
||||
{
|
||||
|
|
|
@ -2218,7 +2218,7 @@ spaces are put between sequence elements, etc. */)
|
|||
len += 2;
|
||||
}
|
||||
else if (len == 0)
|
||||
return empty_string;
|
||||
return empty_unibyte_string;
|
||||
return Fconcat (len - 1, args);
|
||||
}
|
||||
|
||||
|
|
|
@ -704,7 +704,10 @@ extern int string_bytes P_ ((struct Lisp_String *));
|
|||
#endif /* not GC_CHECK_STRING_BYTES */
|
||||
|
||||
/* Mark STR as a unibyte string. */
|
||||
#define STRING_SET_UNIBYTE(STR) (XSTRING (STR)->size_byte = -1)
|
||||
#define STRING_SET_UNIBYTE(STR) \
|
||||
do { if (EQ (STR, empty_multibyte_string)) \
|
||||
(STR) = empty_unibyte_string; \
|
||||
else XSTRING (STR)->size_byte = -1; } while (0)
|
||||
|
||||
/* Get text properties. */
|
||||
#define STRING_INTERVALS(STR) (XSTRING (STR)->intervals + 0)
|
||||
|
@ -3098,7 +3101,8 @@ extern void syms_of_frame P_ ((void));
|
|||
/* defined in emacs.c */
|
||||
extern Lisp_Object decode_env_path P_ ((char *, char *));
|
||||
extern Lisp_Object Vinvocation_name, Vinvocation_directory;
|
||||
extern Lisp_Object Vinstallation_directory, empty_string;
|
||||
extern Lisp_Object Vinstallation_directory;
|
||||
extern Lisp_Object empty_unibyte_string, empty_multibyte_string;
|
||||
EXFUN (Fkill_emacs, 1);
|
||||
#if HAVE_SETLOCALE
|
||||
void fixup_locale P_ ((void));
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue