Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-57
Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 226-238) - Update from CVS - Merge from gnus--rel--5.10 - Update from CVS: lisp/progmodes/python.el (python-mode): Fix typo. * gnus--rel--5.10 (patch 86-90) - Update from CVS - Merge from emacs--devo--0
This commit is contained in:
commit
7e635d0ed3
122 changed files with 3130 additions and 1419 deletions
|
@ -1,3 +1,7 @@
|
|||
2006-04-20 Ramprasad B <ramprasad_i82@yahoo.com>
|
||||
|
||||
* Copyright (sources/emacs): updated copyright year(s)
|
||||
|
||||
2006-04-01 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* configure: Regenerated.
|
||||
|
@ -6225,7 +6229,7 @@
|
|||
;; coding: iso-2022-7bit
|
||||
;; End:
|
||||
|
||||
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
|
||||
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2006
|
||||
Free Software Foundation, Inc.
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted provided the copyright notice and this notice are preserved.
|
||||
|
|
3
INSTALL
3
INSTALL
|
@ -1,5 +1,6 @@
|
|||
GNU Emacs Installation Guide
|
||||
Copyright (c) 1992, 94, 96, 97, 2000, 01, 02 Free software Foundation, Inc.
|
||||
Copyright (c) 1992, 1994, 1996, 1997, 2000, 2001, 2002, 2006
|
||||
Free software Foundation, Inc.
|
||||
See the end of the file for copying permissions.
|
||||
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# DIST: make most of the changes to this file you might want, so try
|
||||
# DIST: that first.
|
||||
|
||||
# Copyright (C) 1992,93,94,95,96,97,98,1999,2000,01,02,03,04,2005
|
||||
# Copyright (C) 1992,93,94,95,96,97,98,1999,2000,01,02,03,04,2005,2006
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2006-04-17 Ramprasad B <ramprasad_i82@yahoo.com>
|
||||
|
||||
* ./* (Copyright): Updated Copyright year(s)
|
||||
|
||||
2006-02-24 Reiner Steib <Reiner.Steib@gmx.de>
|
||||
|
||||
* FOR-RELEASE (BUGS): Add URLs/MIDs.
|
||||
|
|
|
@ -37,6 +37,9 @@ Assigned to Bill Wohler <wohler@newt.com>.
|
|||
|
||||
** Is there a basic problem with cl-byte-compile-compiler-macro?
|
||||
|
||||
** Recalculate the tool bar height after changing the default font.
|
||||
(Bug report by Yamamoto Mistuharu, 31 Mar 2006)
|
||||
|
||||
** Markus Gritsch's report about Emacs looping on Windoze with the following
|
||||
.emacs file, and then reduce Emacs frame width to "something quite narrow":
|
||||
(setq-default truncate-lines t)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Allocate X colors. Used for testing with dense colormaps.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001, 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#! /usr/bin/perl
|
||||
|
||||
# Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001, 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Emacs.
|
||||
#
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; cus-test.el --- tests for custom types and load problems
|
||||
|
||||
;; Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1998, 2000, 2002, 2006 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Markus Rost <markus.rost@mathematik.uni-regensburg.de>
|
||||
;; Maintainer: Markus Rost <rost@math.ohio-state.edu>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#! /bin/sh
|
||||
|
||||
# Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001, 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Emacs.
|
||||
#
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#! /usr/bin/perl
|
||||
|
||||
# Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001, 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Emacs.
|
||||
#
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#! /usr/bin/perl
|
||||
|
||||
# Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001, 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Emacs.
|
||||
#
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
@echo off
|
||||
rem ----------------------------------------------------------------------
|
||||
rem Configuration script for MSDOS
|
||||
rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2004
|
||||
rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2004, 2006
|
||||
rem Free Software Foundation, Inc.
|
||||
|
||||
rem This file is part of GNU Emacs.
|
||||
|
|
4
config.guess
vendored
4
config.guess
vendored
|
@ -1,9 +1,9 @@
|
|||
#! /bin/sh
|
||||
# Attempt to guess a canonical system name.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2005-12-23'
|
||||
timestamp='2006-04-20'
|
||||
|
||||
# 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
|
||||
|
|
4
config.sub
vendored
4
config.sub
vendored
|
@ -1,9 +1,9 @@
|
|||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2005-12-23'
|
||||
timestamp='2006-04-20'
|
||||
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
|
|
2
configure
vendored
2
configure
vendored
|
@ -2,7 +2,7 @@
|
|||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.59.
|
||||
#
|
||||
# Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
|
||||
# This configure script is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy, distribute and modify it.
|
||||
## --------------------- ##
|
||||
|
|
|
@ -1,3 +1,24 @@
|
|||
2006-04-21 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* NEWS: Mention t-mouse.el. Touch up description of gdb-ui.el.
|
||||
|
||||
2006-04-20 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* orgcard.tex: Version number change only.
|
||||
|
||||
2006-04-18 Reiner Steib <Reiner.Steib@gmx.de>
|
||||
|
||||
* gnus-refcard.tex: Bump version to 5.11. Remove duplicate
|
||||
\def's. Update date.
|
||||
|
||||
2006-04-18 Bill Wohler <wohler@newt.com>
|
||||
|
||||
* MORE.STUFF: Add MH-E.
|
||||
|
||||
2006-04-18 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* orgcard.tex: Version number change only.
|
||||
|
||||
2006-04-12 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
* PROBLEMS (C-SPC fails ...): Explicitly say fcitx in the header.
|
||||
|
@ -23,7 +44,7 @@
|
|||
2006-03-28 Bill Wohler <wohler@newt.com>
|
||||
|
||||
* images/README: Update with following information.
|
||||
|
||||
|
||||
* images/data-save.xpm, images/mail/flag-for-followup.xpm:
|
||||
* images/zoom-in.xpm, images/zoom-out.xpm: New images from GNOME
|
||||
2.12.
|
||||
|
@ -32,27 +53,27 @@
|
|||
* images/mail/flag-for-followup.pbm, images/mail/inbox.pbm:
|
||||
* images/mail/move.pbm, images/next-page.pbm, images/zoom-out.pbm:
|
||||
New bitmaps for new images.
|
||||
|
||||
* images/refresh.xpm, images/sort-ascending.xpm,
|
||||
|
||||
* images/refresh.xpm, images/sort-ascending.xpm,
|
||||
* images/sort-descending.xpm: Update with GTK 2.x images. Note
|
||||
that the default GTK icons are not overridden by the GNOME theme
|
||||
due to a bug which was fixed in GNOME 2.15. Once GNOME 2.16 is in
|
||||
wide circulation, then the GTK icons should be replaced with the
|
||||
equivalent GNOME icons. Until then, we should be consistent with
|
||||
GTK first, then GNOME.
|
||||
|
||||
* images/mail/repack.xpm, images/mail/reply-from.xpm:
|
||||
|
||||
* images/mail/repack.xpm, images/mail/reply-from.xpm:
|
||||
* images/mail/reply-to.xpm, images/search-replace.xpm:
|
||||
* images/separator.xpm, images/show.xpm: Update custom icons to be
|
||||
closer to their GNOME counterparts.
|
||||
|
||||
* images/attach.pbm, images/exit.pbm, images/mail/compose.pbm:
|
||||
|
||||
* images/attach.pbm, images/exit.pbm, images/mail/compose.pbm:
|
||||
* images/mail/repack.pbm, images/mail/reply-all.pbm:
|
||||
* images/mail/reply-from.pbm, images/mail/reply-to.pbm:
|
||||
* images/mail/reply.pbm, images/mail/send.pbm, images/show.pbm:
|
||||
* images/search-replace.pbm: Update bitmaps.
|
||||
|
||||
* images/execute.pbm, images/execute.xpm, images/fld-open.pbm:
|
||||
|
||||
* images/execute.pbm, images/execute.xpm, images/fld-open.pbm:
|
||||
* images/fld-open.xpm, images/highlight.pbm, images/highlight.xpm:
|
||||
* images/mail.pbm, images/mail.xpm, images/mail/alias.pbm:
|
||||
* images/mail/alias.xpm, images/mail/refile.pbm:
|
||||
|
|
|
@ -71,6 +71,8 @@ You might find bug-fixes or enhancements in these places.
|
|||
|
||||
* Ispell: <URL:http://www.eng.utah.edu/~kstevens/ispell-page.html>
|
||||
|
||||
* MH-E: <URL:http://mh-e.sourceforge.net/>
|
||||
|
||||
* PC Selection: <URL:ftp://ftp.thp.uni-duisburg.de/pub/source/elisp/>
|
||||
|
||||
* PS mode: <URL:http://odur.let.rug.nl/%7Ekleiweg/postscript/>
|
||||
|
|
9
etc/NEWS
9
etc/NEWS
|
@ -1924,6 +1924,10 @@ for pager-like scrolling. Keys which normally move point by line or
|
|||
paragraph will scroll the buffer by the respective amount of lines
|
||||
instead and point will be kept vertically fixed relative to window
|
||||
boundaries during scrolling.
|
||||
|
||||
** The file t-mouse.el is now part of Emacs and provides access to mouse
|
||||
events from the console. It still requires gpm to work but has been updated
|
||||
for Emacs 22. In particular, the mode-line is now position sensitive.
|
||||
|
||||
* Changes in Specialized Modes and Packages in Emacs 22.1:
|
||||
|
||||
|
@ -2702,14 +2706,15 @@ and other common debugger commands.
|
|||
|
||||
+++
|
||||
*** The new package gdb-ui.el provides an enhanced graphical interface to
|
||||
GDB. You can interact with GDB through the GUD buffer in the usual way, but
|
||||
GDB. You can interact with GDB through the GUD buffer in the usual way, but
|
||||
there are also further buffers which control the execution and describe the
|
||||
state of your program. It can separate the input/output of your program from
|
||||
that of GDB and watches expressions in the speedbar. It also uses features of
|
||||
Emacs 21/22 such as the toolbar, and bitmaps in the fringe to indicate
|
||||
breakpoints.
|
||||
|
||||
Use M-x gdb to start GDB-UI.
|
||||
To use this package just type M-x gdb. See the Emacs manual if you want the
|
||||
old behaviour.
|
||||
|
||||
*** The variable tooltip-gud-tips-p has been removed. GUD tooltips can now be
|
||||
toggled independently of normal tooltips with the minor mode
|
||||
|
|
5
etc/TODO
5
etc/TODO
|
@ -9,15 +9,14 @@ to the FSF.
|
|||
|
||||
* Small but important fixes needed in existing features:
|
||||
|
||||
** whitespace-cleanup should work only on the region if the region is active.
|
||||
|
||||
** Distribute a bar cursor of width > 1 evenly between the two glyphs
|
||||
on each side of the bar (what to do at the edges?).
|
||||
|
||||
** Make vc-checkin avoid reverting the buffer if has not changed after
|
||||
the checkin. Comparing (md5 BUFFER) to (md5 FILE) should be enough.
|
||||
|
||||
** Make vc-annotate show place the cursor in the annotate buffer at the
|
||||
same line as the current buffer.
|
||||
|
||||
** buffer-offer-save should be a permanent local.
|
||||
|
||||
** revert-buffer should eliminate overlays and the mark.
|
||||
|
|
|
@ -76,8 +76,9 @@
|
|||
% \input{gnusref} % % % % % % % % % % % % % % % % % % % % % % % % % %
|
||||
%% include file for the Gnus refcard and booklet
|
||||
|
||||
\def\progver{5.10}\def\refver{5.10-2} % program and refcard versions
|
||||
\def\date{Mar, 2005}
|
||||
\def\progver{5.11} % program version
|
||||
% \def\refver{5.10-2} % refcard version (not used)
|
||||
\def\date{April, 2006}
|
||||
\def\author{Gnus Bugfixing Girls + Boys $<$bugs@gnus.org$>$}
|
||||
|
||||
%%
|
||||
|
@ -1267,10 +1268,6 @@
|
|||
|
||||
\begin{document}
|
||||
|
||||
\def\progver{5.10}\def\refver{5.10-1} % program and refcard versions
|
||||
\def\date{Jan 10th, 2004}
|
||||
\def\author{Gnus Bugfixing Girls + Boys $<$bugs@gnus.org$>$}
|
||||
|
||||
\ifthenelse{\isundefined{\booklettrue}}{ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\raggedbottom\raggedright
|
||||
\twocolumn
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
% Reference Card for Org Mode
|
||||
\def\orgversionnumber{4.23}
|
||||
\def\orgversionnumber{4.25}
|
||||
\def\year{2006}
|
||||
%
|
||||
%**start of header
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;; leim-ext.el -- extra leim configulation -*- coding:iso-2022-7bit; -*-
|
||||
|
||||
;; Copyright (C) 2004
|
||||
;; Copyright (C) 2004, 2006
|
||||
;; Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2004, 2005
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# -*- Makefile -*- for leim subdirectory in GNU Emacs on the Microsoft W32 API.
|
||||
# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005
|
||||
# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||
# Free Software Foundation, Inc.
|
||||
# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
# National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; quail/croatian.el -- Quail package for inputing Croatian -*-coding: iso-8859-2;-*-
|
||||
|
||||
;; Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2003, 2006 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Hrvoje Nik¹iæ <hniksic@xemacs.org>,
|
||||
;; modeled after czech.el by Milan Zamazal.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; cyril-jis.el --- Quail package for inputting JISX0208 Cyrillic letters
|
||||
|
||||
;; Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001, 2006 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H14PRO021
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; cyrillic.el --- Quail package for inputting Cyrillic characters
|
||||
|
||||
;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005
|
||||
;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006
|
||||
;; Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 2003
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; czech.el --- Quail package for inputting Czech -*-coding: iso-2022-7bit;-*-
|
||||
|
||||
;; Copyright (C) 1998, 2001 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1998, 2001, 2006 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Milan Zamazal <pdm@zamazal.org>
|
||||
;; Maintainer: Pavel Jan,Bm(Bk <Pavel@Janik.cz>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; ethiopic.el --- Quail package for inputting Ethiopic characters -*-coding: iso-2022-7bit;-*-
|
||||
|
||||
;; Copyright (C) 1997, 1998, 1999, 2001
|
||||
;; Copyright (C) 1997, 1998, 1999, 2001, 2006
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H14PRO021
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; georgian.el --- Quail package for inputting Georgian characters -*-coding: utf-8;-*-
|
||||
|
||||
;; Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001, 2006 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Dave Love <fx@gnu.org>
|
||||
;; Keywords: i18n
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; greek.el --- Quail package for inputting Greek -*-coding: iso-2022-7bit-*-
|
||||
|
||||
;; Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001, 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 2001
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H14PRO021
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; hangul.el --- Quail package for inputting Korean Hangul characters -*-coding: iso-2022-7bit;-*-
|
||||
|
||||
;; Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2002, 2006 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H14PRO021
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; hangul3.el --- Quail package for inputting Korean Hangul characters -*-coding: iso-2022-7bit;-*-
|
||||
|
||||
;; Copyright (C) 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 1998, 2001, 2002, 2006 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 2002
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H14PRO021
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; hanja.el --- Quail-package for Korean Hanja (KSC5601) -*-coding: iso-2022-7bit;-*-
|
||||
|
||||
;; Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 2006 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H14PRO021
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; hanja3.el --- Quail-package for Korean Hanja (KSC5601) -*-coding: iso-2022-7bit;-*-
|
||||
|
||||
;; Copyright (C) 1997, 1999, 2002 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 1999, 2002, 2006 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Koaunghi Un <koanughi.un@zdv.uni-tuebingen.de>
|
||||
;; Keywords: mule, quail, multilingual, input method, Korean, Hanja
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; indian.el --- Quail packages for inputting Indian
|
||||
|
||||
;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2000, 2001, 2002, 2003, 2006 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: KAWABATA, Taichi <kawabata@m17n.org>
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; japanese.el --- Quail package for inputting Japanese -*-coding: iso-2022-7bit;-*-
|
||||
|
||||
;; Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001, 2006 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2005
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H14PRO021
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; latin-alt.el --- Quail package for inputting various European characters -*-coding: utf-8;-*-
|
||||
|
||||
;; Copyright (C) 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 1998, 2001, 2002, 2006 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1999
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H14PRO021
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; latin-ltx.el --- Quail package for TeX-style input -*-coding: utf-8;-*-
|
||||
|
||||
;; Copyright (C) 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001, 2005
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H14PRO021
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; latin-post.el --- Quail packages for inputting various European characters -*-coding: utf-8;-*-
|
||||
|
||||
;; Copyright (C) 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 1998, 2001, 2002, 2006 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 1999
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H14PRO021
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; latin-pre.el --- Quail packages for inputting various European characters -*-coding: utf-8;-*-
|
||||
|
||||
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2006
|
||||
;; Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 1998, 1999, 2000, 2005
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; lrt.el --- Quail package for inputting Lao characters by LRT method -*-coding: iso-2022-7bit;-*-
|
||||
|
||||
;; Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1998, 2006 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 1999
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H14PRO021
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; py-punct.el --- Quail packages for Chinese (pinyin + extra symbols) -*-coding: iso-2022-7bit;-*-
|
||||
|
||||
;; Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001, 2006 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 2000
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H14PRO021
|
||||
|
|
Binary file not shown.
|
@ -1,6 +1,6 @@
|
|||
;;; sgml-input.el --- Quail method for Unicode entered as SGML entities -*- coding: utf-8 -*-
|
||||
|
||||
;; Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001, 2006 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Dave Love <fx@gnu.org>
|
||||
;; Keywords: i18n
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; sisheng.el --- sisheng input method for Chinese pinyin transliteration
|
||||
|
||||
;; Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2004, 2006 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Werner LEMBERG <wl@gnu.org>
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; slovak.el --- Quail package for inputting Slovak -*-coding: iso-2022-7bit;-*-
|
||||
|
||||
;; Copyright (C) 1998, 2001 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1998, 2001, 2006 Free Software Foundation, Inc.
|
||||
|
||||
;; Authors: Tibor ,B)(Bimko <tibor.simko@fmph.uniba.sk>
|
||||
;; Milan Zamazal <pdm@zamazal.org>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; symbol-ksc.el --- Quail-package for Korean Symbol (KSC5601) -*-coding: iso-2022-7bit;-*-
|
||||
|
||||
;; Copyright (C) 1997, 2005 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 2005, 2006 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 1998
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H14PRO021
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; tibetan.el --- Quail package for inputting Tibetan characters -*-coding: iso-2022-7bit;-*-
|
||||
|
||||
;; Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 2006 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 1998, 1999, 2000
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H14PRO021
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; uni-input.el --- Hex Unicode input method
|
||||
|
||||
;; Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2004
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
;; Registration Number H14PRO021
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; vntelex.el --- Quail package for Vietnamese by Telex method
|
||||
|
||||
;; Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001, 2002, 2006 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Werner Lemberg <wl@gnu.org>
|
||||
;; Keywords: multilingual, input method, Vietnamese
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; welsh.el --- Quail package for inputting Welsh characters -*-coding: iso-2022-7bit;-*-
|
||||
|
||||
;; Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001, 2006 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Dave Love <fx@gnu.org>
|
||||
;; Keywords: i18n
|
||||
|
|
172
lisp/ChangeLog
172
lisp/ChangeLog
|
@ -1,3 +1,173 @@
|
|||
2006-04-21 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* progmodes/gdb-ui.el (gdb-data-list-register-values-handler):
|
||||
Use font-lock-warning-face for any errors e.g. no stack.
|
||||
(gdb-stack-list-locals-handler): Display any errors e.g. no stack.
|
||||
|
||||
2006-04-20 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* progmodes/sh-script.el (sh-shell): Mark as safe.
|
||||
|
||||
* newcomment.el (comment-start, comment-start-skip)
|
||||
(comment-end-skip, comment-end): Mark as safe.
|
||||
|
||||
2006-04-20 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* textmodes/org.el: (org-deadline-announce): Face removed.
|
||||
(org-level-faces, org-n-levels): Converted to constant.
|
||||
(org-compatible-face): New function.
|
||||
(org-hide, org-level-1, org-level-2, org-level-3, org-level-4)
|
||||
(org-level-5, org-level-6, org-level-7, org-level-8)
|
||||
(org-special-keyword, org-warning, org-headline-done, org-link)
|
||||
(org-date, org-tag, org-todo, org-done, org-table, org-formula)
|
||||
(org-scheduled-today, org-scheduled-previously, org-time-grid):
|
||||
Face definition revised for better color tty support.
|
||||
(org-bold-re, org-italic-re, org-underline-re): New constants.
|
||||
(org-set-font-lock-defaults): Use the new constants.
|
||||
(org-agenda-highlight-todo): New function.
|
||||
(org-agenda-todo): Fixed bug with point at end of line.
|
||||
(org-agenda-change-all-lines, org-finalize-agenda-entries):
|
||||
Fontify TODO keywords.
|
||||
(org-insert-link): Preserve relative path in ../ links.
|
||||
(org-export-as-html): Convert links pointing to .org files into
|
||||
links that will work beteen the exported HTML files.
|
||||
(org-todo-list): Fix bug when arg=0.
|
||||
(org-insert-heading): More fine-tuning.
|
||||
|
||||
2006-04-19 Romain Francoise <romain@orebokech.com>
|
||||
|
||||
* mail/rmail.el (rmail-convert-to-babyl-format): Use second group
|
||||
from `rmail-mime-charset-pattern'.
|
||||
|
||||
2006-04-18 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* progmodes/python.el (python-mode): Fix typo.
|
||||
|
||||
2006-04-18 J.D. Smith <jdsmith@as.arizona.edu>
|
||||
|
||||
* comint.el (comint-previous-input): Don't clobber input line
|
||||
when moving off either end of the input history ring.
|
||||
(comint-delete-input): New function, used by
|
||||
`comint-previous-input' and others.
|
||||
(comint-previous-matching-input): Use
|
||||
`coming-delete-input'. Save the partial input if leaving the
|
||||
edit line. Goto point-max before deleting input to avoid
|
||||
partial input fragments hanging around.
|
||||
(comint-restore-input): New function, used by
|
||||
`comint-previous-input', and bound to "C-c C-j".
|
||||
|
||||
2006-04-18 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
* imenu.el (imenu--index-alist): Balance parentheses.
|
||||
|
||||
2006-04-18 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* progmodes/python.el (python-mode): Add support for
|
||||
hs-minor-mode.
|
||||
|
||||
2006-04-19 Reiner Steib <Reiner.Steib@gmx.de>
|
||||
|
||||
* abbrev.el (read-abbrev-file): Use abbrev-file-name if optional
|
||||
file is nil.
|
||||
|
||||
2006-04-18 Richard Stallman <rms@gnu.org>
|
||||
|
||||
* tooltip.el (tooltip-mode, tooltip-use-echo-area): Doc fixes.
|
||||
|
||||
* imenu.el (imenu-create-index-function, imenu--index-alist)
|
||||
(imenu--last-menubar-index-alist, imenu--make-index-alist)
|
||||
(imenu-default-create-index-function, imenu--generic-function):
|
||||
Doc fixes.
|
||||
|
||||
* image-mode.el (image-toggle-display): Handle tar and arc subfiles.
|
||||
|
||||
* help-mode.el (help-mode): Set view-exit-action to delete window.
|
||||
|
||||
* env.el (setenv): Get rid of arg UNSET. Interactive unsetting
|
||||
now works by passing nil as arg.
|
||||
|
||||
* apropos.el (apropos-print): Don't do where-is on self-insert-command.
|
||||
|
||||
* abbrev.el (edit-abbrevs-redefine): Temporarily widen.
|
||||
(read-abbrev-file): Provide default when reading filename.
|
||||
|
||||
* files.el (enable-local-variables): Allow :all as value.
|
||||
(hack-local-variables): Implement that value.
|
||||
(safe-local-variable-values, safe-local-eval-forms)
|
||||
(enable-local-variables): Mark as risky.
|
||||
(find-file-visit-truename, kept-old-versions): Mark safe.
|
||||
|
||||
* time-stamp.el (time-stamp-format, time-stamp-line-limit)
|
||||
(time-stamp-start, time-stamp-end, time-stamp-inserts-lines)
|
||||
(time-stamp-count, time-stamp-pattern): Add safe-local-variable prop.
|
||||
|
||||
2006-04-18 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* progmodes/tcl.el (tcl-send-string, tcl-send-region):
|
||||
Use forward-line so as to get to BOL even in the presence of fields.
|
||||
(tcl-eval-region): Strip surrounding space to avoid multiple prompts
|
||||
in return.
|
||||
(inferior-tcl): Tell tclsh to work in interactive mode.
|
||||
|
||||
* complete.el (partial-completion-mode):
|
||||
Use 'choose-completion-string-functions to make sure that
|
||||
choose-completion fills the minibuffer properly.
|
||||
|
||||
* complete.el (PC-old-read-file-name-internal): Remove.
|
||||
(PC-read-include-file-name-internal): Remove. Turn it into an advice
|
||||
of read-file-name-internal.
|
||||
(partial-completion-mode): Enable/disable this advice.
|
||||
|
||||
2006-04-18 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* net/tramp.el (tramp-completion-file-name-handler): Revert change
|
||||
of 2006-04-17.
|
||||
|
||||
2006-04-18 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* textmodes/org.el (org-insert-heading): Insert heading before
|
||||
current if at beginning of line.
|
||||
(org-todo, org-date): New faces.
|
||||
(org-table-align): Make sure tooltip window contains full text.
|
||||
(org-no-properties): New defsubst.
|
||||
(org-set-font-lock-defaults): Use new faces.
|
||||
|
||||
2006-04-18 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* progmodes/gud.el (gud-speedbar-item-info): Display frame address
|
||||
for root variables.
|
||||
|
||||
* progmodes/gdb-ui.el (gdb-pc-address): Rename from gdb-frame-address.
|
||||
(gdb-frame-address): Re-use to identify frame for watch expression.
|
||||
(gdb-var-list, gdb-var-create-handler): Add frame address for root
|
||||
variables.
|
||||
(gdb-init-1, gdb-source, gdb-post-prompt, )
|
||||
(gdb-assembler-custom, gdb-invalidate-assembler): Use gdb-pc-address.
|
||||
(gdb-frame-handler): Get gdb-frame-address.
|
||||
|
||||
2006-04-17 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
Sync with Tramp 2.0.53.
|
||||
|
||||
* net/tramp.el (tramp-completion-mode): ?\t has event-modifier
|
||||
'control. Reported by Matthias F,bv(Brste <slashdevslashnull@gmx.net>.
|
||||
(tramp-completion-file-name-handler): Add autoload cookie for
|
||||
adding to `file-name-handler-alist'.
|
||||
|
||||
* net/tramp-smb.el (tramp-smb-wait-for-output): Wait always for
|
||||
the prompt. If it returns earlier (when detecting an error
|
||||
message), the rest of the output will merge accidently with the
|
||||
output of the next command. Reported by M Jared Finder
|
||||
<jared@hpalace.com>.
|
||||
|
||||
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
|
||||
for `process-file', in order to let it work for older Emacsen too.
|
||||
|
||||
2006-04-17 Ralf Angeli <angeli@iwi.uni-sb.de>
|
||||
|
||||
* textmodes/tex-mode.el (tex-font-lock-match-suscript): New function.
|
||||
(tex-font-lock-keywords-3): Use it.
|
||||
|
||||
2006-04-16 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* newcomment.el (comment-add): New function.
|
||||
|
@ -2928,7 +3098,7 @@
|
|||
(vc-default-update-changelog): Don't use vc-user-login-name, we
|
||||
don't need it here.
|
||||
|
||||
* tramp-vc.el (vc-user-login-name): Comment out defadvice, it is
|
||||
* net/tramp-vc.el (vc-user-login-name): Comment out defadvice, it is
|
||||
no longer necessary.
|
||||
|
||||
2006-01-25 Kenichi Handa <handa@m17n.org>
|
||||
|
|
|
@ -160,8 +160,10 @@ or may be omitted (it is usually omitted)."
|
|||
(defun edit-abbrevs-redefine ()
|
||||
"Redefine abbrevs according to current buffer contents."
|
||||
(interactive)
|
||||
(define-abbrevs t)
|
||||
(set-buffer-modified-p nil))
|
||||
(save-restriction
|
||||
(widen)
|
||||
(define-abbrevs t)
|
||||
(set-buffer-modified-p nil)))
|
||||
|
||||
(defun define-abbrevs (&optional arg)
|
||||
"Define abbrevs according to current visible buffer contents.
|
||||
|
@ -195,9 +197,12 @@ the ones defined from the buffer now."
|
|||
Optional argument FILE is the name of the file to read;
|
||||
it defaults to the value of `abbrev-file-name'.
|
||||
Optional second argument QUIETLY non-nil means don't display a message."
|
||||
(interactive "fRead abbrev file: ")
|
||||
(load (if (and file (> (length file) 0)) file abbrev-file-name)
|
||||
nil quietly)
|
||||
(interactive
|
||||
(list
|
||||
(read-file-name (format "Read abbrev file (default %s): "
|
||||
abbrev-file-name)
|
||||
nil abbrev-file-name t)))
|
||||
(load (or file abbrev-file-name) nil quietly)
|
||||
(setq abbrevs-changed nil))
|
||||
|
||||
(defun quietly-read-abbrev-file (&optional file)
|
||||
|
|
|
@ -908,6 +908,7 @@ If non-nil TEXT is a string that will be printed as a heading."
|
|||
;; Calculate key-bindings if we want them.
|
||||
(and do-keys
|
||||
(commandp symbol)
|
||||
(not (eq symbol 'self-insert-command))
|
||||
(indent-to 30 1)
|
||||
(if (let ((keys
|
||||
(save-excursion
|
||||
|
|
|
@ -558,6 +558,9 @@ This is to support the command \\[comint-get-next-from-history].")
|
|||
"Non-nil if you are accumulating input lines to send as input together.
|
||||
The command \\[comint-accumulate] sets this.")
|
||||
|
||||
(defvar comint-stored-incomplete-input nil
|
||||
"Stored input for history cycling.")
|
||||
|
||||
(put 'comint-replace-by-expanded-history 'menu-enable 'comint-input-autoexpand)
|
||||
(put 'comint-input-ring 'permanent-local t)
|
||||
(put 'comint-input-ring-index 'permanent-local t)
|
||||
|
@ -638,6 +641,7 @@ Entry to this mode runs the hooks on `comint-mode-hook'."
|
|||
(make-local-variable 'comint-scroll-to-bottom-on-input)
|
||||
(make-local-variable 'comint-move-point-for-output)
|
||||
(make-local-variable 'comint-scroll-show-maximum-output)
|
||||
(make-local-variable 'comint-stored-incomplete-input)
|
||||
;; This makes it really work to keep point at the bottom.
|
||||
(make-local-variable 'scroll-conservatively)
|
||||
(setq scroll-conservatively 10000)
|
||||
|
@ -1015,6 +1019,16 @@ See also `comint-read-input-ring'."
|
|||
(t
|
||||
arg)))
|
||||
|
||||
(defun comint-restore-input ()
|
||||
"Restore unfinished input."
|
||||
(interactive)
|
||||
(when comint-input-ring-index
|
||||
(comint-delete-input)
|
||||
(when (> (length comint-stored-incomplete-input) 0)
|
||||
(insert comint-stored-incomplete-input)
|
||||
(message "Input restored"))
|
||||
(setq comint-input-ring-index nil)))
|
||||
|
||||
(defun comint-search-start (arg)
|
||||
"Index to start a directional search, starting at `comint-input-ring-index'."
|
||||
(if comint-input-ring-index
|
||||
|
@ -1035,9 +1049,18 @@ Moves relative to `comint-input-ring-index'."
|
|||
arg)))
|
||||
|
||||
(defun comint-previous-input (arg)
|
||||
"Cycle backwards through input history."
|
||||
"Cycle backwards through input history, saving input."
|
||||
(interactive "*p")
|
||||
(comint-previous-matching-input "." arg))
|
||||
(if (and comint-input-ring-index
|
||||
(or ;; leaving the "end" of the ring
|
||||
(and (< arg 0) ; going down
|
||||
(eq comint-input-ring-index 0))
|
||||
(and (> arg 0) ; going up
|
||||
(eq comint-input-ring-index
|
||||
(1- (ring-length comint-input-ring)))))
|
||||
comint-stored-incomplete-input)
|
||||
(comint-restore-input)
|
||||
(comint-previous-matching-input "." arg)))
|
||||
|
||||
(defun comint-next-input (arg)
|
||||
"Cycle forwards through input history."
|
||||
|
@ -1077,6 +1100,14 @@ Moves relative to START, or `comint-input-ring-index'."
|
|||
(if (string-match regexp (ring-ref comint-input-ring n))
|
||||
n)))
|
||||
|
||||
(defun comint-delete-input ()
|
||||
"Delete all input between accumulation or process mark and point."
|
||||
(delete-region
|
||||
;; Can't use kill-region as it sets this-command
|
||||
(or (marker-position comint-accum-marker)
|
||||
(process-mark (get-buffer-process (current-buffer))))
|
||||
(point-max)))
|
||||
|
||||
(defun comint-previous-matching-input (regexp n)
|
||||
"Search backwards through input history for match for REGEXP.
|
||||
\(Previous history elements are earlier commands.)
|
||||
|
@ -1088,13 +1119,13 @@ If N is negative, find the next or Nth next match."
|
|||
;; Has a match been found?
|
||||
(if (null pos)
|
||||
(error "Not found")
|
||||
;; If leaving the edit line, save partial input
|
||||
(if (null comint-input-ring-index) ;not yet on ring
|
||||
(setq comint-stored-incomplete-input
|
||||
(funcall comint-get-old-input)))
|
||||
(setq comint-input-ring-index pos)
|
||||
(message "History item: %d" (1+ pos))
|
||||
(delete-region
|
||||
;; Can't use kill-region as it sets this-command
|
||||
(or (marker-position comint-accum-marker)
|
||||
(process-mark (get-buffer-process (current-buffer))))
|
||||
(point))
|
||||
(comint-delete-input)
|
||||
(insert (ring-ref comint-input-ring pos)))))
|
||||
|
||||
(defun comint-next-matching-input (regexp n)
|
||||
|
|
|
@ -141,8 +141,6 @@ If nil, means use the colon-separated path in the variable $INCPATH instead."
|
|||
"A list of the environment variable names and values.")
|
||||
|
||||
|
||||
(defvar PC-old-read-file-name-internal nil)
|
||||
|
||||
(defun PC-bindings (bind)
|
||||
(let ((completion-map minibuffer-local-completion-map)
|
||||
(must-match-map minibuffer-local-must-match-map))
|
||||
|
@ -219,21 +217,32 @@ second TAB brings up the `*Completions*' buffer."
|
|||
((not PC-disable-includes)
|
||||
(add-hook 'find-file-not-found-functions 'PC-look-for-include-file)))
|
||||
;; ... with some underhand redefining.
|
||||
(cond ((and (not partial-completion-mode)
|
||||
(functionp PC-old-read-file-name-internal))
|
||||
(fset 'read-file-name-internal PC-old-read-file-name-internal))
|
||||
((and (not PC-disable-includes) (not PC-old-read-file-name-internal))
|
||||
(setq PC-old-read-file-name-internal
|
||||
(symbol-function 'read-file-name-internal))
|
||||
(fset 'read-file-name-internal
|
||||
'PC-read-include-file-name-internal)))
|
||||
(when (and partial-completion-mode (null PC-env-vars-alist))
|
||||
(setq PC-env-vars-alist
|
||||
(mapcar (lambda (string)
|
||||
(let ((d (string-match "=" string)))
|
||||
(cons (concat "$" (substring string 0 d))
|
||||
(and d (substring string (1+ d))))))
|
||||
process-environment))))
|
||||
(cond ((not partial-completion-mode)
|
||||
(ad-disable-advice 'read-file-name-internal 'around 'PC-include-file)
|
||||
(ad-activate 'read-file-name-internal))
|
||||
((not PC-disable-includes)
|
||||
(ad-enable-advice 'read-file-name-internal 'around 'PC-include-file)
|
||||
(ad-activate 'read-file-name-internal)))
|
||||
;; Adjust the completion selection in *Completion* buffers to the way
|
||||
;; we work. The default minibuffer completion code only completes the
|
||||
;; text before point and leaves the text after point alone (new in
|
||||
;; Emacs-22). In contrast we use the whole text and we even sometimes
|
||||
;; move point to a place before EOB, to indicate the first position where
|
||||
;; there's a difference, so when the user uses choose-completion, we have
|
||||
;; to trick choose-completion into replacing the whole minibuffer text
|
||||
;; rather than only the text before point. --Stef
|
||||
(funcall
|
||||
(if partial-completion-mode 'add-hook 'remove-hook)
|
||||
'choose-completion-string-functions
|
||||
(lambda (&rest x) (goto-char (point-max)) nil))
|
||||
;; Build the env-completion and mapping table.
|
||||
(when (and partial-completion-mode (null PC-env-vars-alist))
|
||||
(setq PC-env-vars-alist
|
||||
(mapcar (lambda (string)
|
||||
(let ((d (string-match "=" string)))
|
||||
(cons (concat "$" (substring string 0 d))
|
||||
(and d (substring string (1+ d))))))
|
||||
process-environment))))
|
||||
|
||||
|
||||
(defun PC-complete ()
|
||||
|
@ -930,20 +939,23 @@ absolute rather than relative to some directory on the SEARCH-PATH."
|
|||
(setq sorted (cdr sorted)))
|
||||
compressed))))
|
||||
|
||||
(defun PC-read-include-file-name-internal (string dir action)
|
||||
(if (string-match "<\\([^\"<>]*\\)>?$" string)
|
||||
(let* ((name (substring string (match-beginning 1) (match-end 1)))
|
||||
(defadvice read-file-name-internal (around PC-include-file disable)
|
||||
(if (string-match "<\\([^\"<>]*\\)>?\\'" (ad-get-arg 0))
|
||||
(let* ((string (ad-get-arg 0))
|
||||
(action (ad-get-arg 2))
|
||||
(name (substring string (match-beginning 1) (match-end 1)))
|
||||
(str2 (substring string (match-beginning 0)))
|
||||
(completion-table
|
||||
(mapcar (function (lambda (x) (list (format "<%s>" x))))
|
||||
(mapcar (lambda (x) (format "<%s>" x))
|
||||
(PC-include-file-all-completions
|
||||
name (PC-include-file-path)))))
|
||||
(cond
|
||||
((not completion-table) nil)
|
||||
((eq action nil) (try-completion str2 completion-table nil))
|
||||
((eq action t) (all-completions str2 completion-table nil))
|
||||
((eq action 'lambda) (test-completion str2 completion-table nil))))
|
||||
(funcall PC-old-read-file-name-internal string dir action)))
|
||||
(setq ad-return-value
|
||||
(cond
|
||||
((not completion-table) nil)
|
||||
((eq action 'lambda) (test-completion str2 completion-table nil))
|
||||
((eq action nil) (try-completion str2 completion-table nil))
|
||||
((eq action t) (all-completions str2 completion-table nil)))))
|
||||
ad-do-it))
|
||||
|
||||
|
||||
(provide 'complete)
|
||||
|
|
26
lisp/env.el
26
lisp/env.el
|
@ -90,28 +90,30 @@ Use `$$' to insert a single dollar sign."
|
|||
|
||||
;; Fixme: Should `process-environment' be recoded if LC_CTYPE &c is set?
|
||||
|
||||
(defun setenv (variable &optional value unset substitute-env-vars)
|
||||
(defun setenv (variable &optional value substitute-env-vars)
|
||||
"Set the value of the environment variable named VARIABLE to VALUE.
|
||||
VARIABLE should be a string. VALUE is optional; if not provided or
|
||||
nil, the environment variable VARIABLE will be removed. UNSET
|
||||
if non-nil means to remove VARIABLE from the environment.
|
||||
SUBSTITUTE-ENV-VARS, if non-nil, means to substitute environment
|
||||
variables in VALUE with `substitute-env-vars', where see.
|
||||
Value is the new value if VARIABLE, or nil if removed from the
|
||||
environment.
|
||||
nil, the environment variable VARIABLE will be removed.
|
||||
|
||||
Interactively, a prefix argument means to unset the variable.
|
||||
Interactively, the current value (if any) of the variable
|
||||
appears at the front of the history list when you type in the new value.
|
||||
Interactively, always replace environment variables in the new value.
|
||||
|
||||
SUBSTITUTE-ENV-VARS, if non-nil, means to substitute environment
|
||||
variables in VALUE with `substitute-env-vars', which see.
|
||||
This is normally used only for interactive calls.
|
||||
|
||||
The return value is the new value of VARIABLE, or nil if
|
||||
it was removed from the environment.
|
||||
|
||||
This function works by modifying `process-environment'.
|
||||
|
||||
As a special case, setting variable `TZ' calls `set-time-zone-rule' as
|
||||
a side-effect."
|
||||
(interactive
|
||||
(if current-prefix-arg
|
||||
(list (read-envvar-name "Clear environment variable: " 'exact) nil t)
|
||||
(list (read-envvar-name "Clear environment variable: " 'exact) nil)
|
||||
(let* ((var (read-envvar-name "Set environment variable: " nil))
|
||||
(value (getenv var)))
|
||||
(when value
|
||||
|
@ -121,7 +123,6 @@ a side-effect."
|
|||
(read-from-minibuffer (format "Set %s to value: " var)
|
||||
nil nil nil 'setenv-history
|
||||
value)
|
||||
nil
|
||||
t))))
|
||||
(if (and (multibyte-string-p variable) locale-coding-system)
|
||||
(let ((codings (find-coding-systems-string (concat variable value))))
|
||||
|
@ -129,10 +130,9 @@ a side-effect."
|
|||
(memq (coding-system-base locale-coding-system) codings))
|
||||
(error "Can't encode `%s=%s' with `locale-coding-system'"
|
||||
variable (or value "")))))
|
||||
(if unset
|
||||
(setq value nil)
|
||||
(if substitute-env-vars
|
||||
(setq value (substitute-env-vars value))))
|
||||
(and value
|
||||
substitute-env-vars
|
||||
(setq value (substitute-env-vars value)))
|
||||
(if (multibyte-string-p variable)
|
||||
(setq variable (encode-coding-string variable locale-coding-system)))
|
||||
(if (and value (multibyte-string-p value))
|
||||
|
|
|
@ -452,6 +452,8 @@ not safe, Emacs queries you, once, whether to set them all.
|
|||
\(When you say yes to certain values, they are remembered as safe.)
|
||||
|
||||
:safe means set the safe variables, and ignore the rest.
|
||||
:all means set all variables, whether safe or not.
|
||||
(Don't set it permanently to :all.)
|
||||
nil means always ignore the file local variables.
|
||||
|
||||
Any other value means always query you once whether to set them all.
|
||||
|
@ -464,8 +466,9 @@ a -*- line.
|
|||
The command \\[normal-mode], when used interactively,
|
||||
always obeys file local variable specifications and the -*- line,
|
||||
and ignores this variable."
|
||||
:type '(choice (const :tag "Obey" t)
|
||||
:type '(choice (const :tag "Query Unsafe" t)
|
||||
(const :tag "Safe Only" :safe)
|
||||
(const :tag "Do all" :all)
|
||||
(const :tag "Ignore" nil)
|
||||
(other :tag "Query" other))
|
||||
:group 'find-file)
|
||||
|
@ -2283,6 +2286,7 @@ asking you for confirmation."
|
|||
default-text-properties
|
||||
display-time-string
|
||||
enable-local-eval
|
||||
enable-local-variables
|
||||
eval
|
||||
exec-directory
|
||||
exec-path
|
||||
|
@ -2318,6 +2322,8 @@ asking you for confirmation."
|
|||
parse-time-rules
|
||||
process-environment
|
||||
rmail-output-file-alist
|
||||
safe-local-variable-values
|
||||
safe-local-eval-forms
|
||||
save-some-buffers-action-alist
|
||||
special-display-buffer-names
|
||||
standard-input
|
||||
|
@ -2355,9 +2361,11 @@ asking you for confirmation."
|
|||
(c-indent-level . integerp)
|
||||
(comment-column . integerp)
|
||||
(compile-command . string-or-null-p)
|
||||
(find-file-visit-truename . t)
|
||||
(fill-column . integerp)
|
||||
(fill-prefix . string-or-null-p)
|
||||
(indent-tabs-mode . t)
|
||||
(kept-old-versions . integerp)
|
||||
(kept-new-versions . integerp)
|
||||
(left-margin . t)
|
||||
(no-byte-compile . t)
|
||||
|
@ -2630,6 +2638,7 @@ is specified, returning t if it is specified."
|
|||
(if (or (and (eq enable-local-variables t)
|
||||
(null unsafe-vars)
|
||||
(null risky-vars))
|
||||
(eq enable-local-variables :all)
|
||||
(hack-local-variables-confirm
|
||||
result unsafe-vars risky-vars))
|
||||
(dolist (elt result)
|
||||
|
|
|
@ -1,3 +1,57 @@
|
|||
2006-04-20 Reiner Steib <Reiner.Steib@gmx.de>
|
||||
|
||||
* gnus-util.el (gnus-replace-in-string): Prefer
|
||||
replace-regexp-in-string over of replace-in-string.
|
||||
|
||||
2006-04-20 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||
|
||||
* gnus-group.el: Bind tool-bar-mode instead of tool-bar-map.
|
||||
|
||||
* gnus-sum.el: Ditto.
|
||||
|
||||
* gnus-util.el (gnus-select-frame-set-input-focus): Use
|
||||
select-frame-set-input-focus if it is available in XEmacs; use
|
||||
definition defined in Emacs 22 for old Emacsen.
|
||||
|
||||
2006-04-17 Reiner Steib <Reiner.Steib@gmx.de>
|
||||
|
||||
[ Merge from Gnus trunk. ]
|
||||
|
||||
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
|
||||
(mm-charset-override-alist): New variable.
|
||||
(mm-charset-to-coding-system): Use it.
|
||||
(mm-codepage-setup): New helper function.
|
||||
(mm-charset-eval-alist): New variable.
|
||||
(mm-charset-to-coding-system): Use mm-charset-eval-alist. Warn
|
||||
about unknown charsets. Add allow-override. Use
|
||||
`mm-charset-override-alist' only when decoding.
|
||||
(mm-detect-mime-charset-region): Use :mime-charset.
|
||||
|
||||
* mm-bodies.el (mm-decode-body, mm-decode-string): Call
|
||||
`mm-charset-to-coding-system' with allow-override argument.
|
||||
|
||||
* message.el (message-tool-bar-zap-list, message-tool-bar)
|
||||
(message-tool-bar-gnome, message-tool-bar-retro): New variables.
|
||||
(message-tool-bar-local-item-from-menu): Remove.
|
||||
(message-tool-bar-map): Replace by `message-make-tool-bar'.
|
||||
(message-make-tool-bar): New function.
|
||||
(message-mode): Use `message-make-tool-bar'.
|
||||
|
||||
* gnus-sum.el (gnus-summary-tool-bar)
|
||||
(gnus-summary-tool-bar-gnome, gnus-summary-tool-bar-retro)
|
||||
(gnus-summary-tool-bar-zap-list): New variables.
|
||||
(gnus-summary-make-tool-bar): Complete rewrite using
|
||||
`gmm-tool-bar-from-list'.
|
||||
|
||||
* gnus-group.el (gnus-group-tool-bar, gnus-group-tool-bar-gnome)
|
||||
(gnus-group-tool-bar-retro, gnus-group-tool-bar-zap-list): New
|
||||
variables.
|
||||
(gnus-group-make-tool-bar): Complete rewrite using
|
||||
`gmm-tool-bar-from-list'.
|
||||
(gnus-group-tool-bar-update): New function.
|
||||
|
||||
* gmm-utils.el: New file.
|
||||
|
||||
2006-04-12 Ralf Angeli <angeli@iwi.uni-sb.de>
|
||||
|
||||
* flow-fill.el (fill-flowed): Remove trailing space from blank
|
||||
|
|
413
lisp/gnus/gmm-utils.el
Normal file
413
lisp/gnus/gmm-utils.el
Normal file
|
@ -0,0 +1,413 @@
|
|||
;;; gmm-utils.el --- Utility functions for Gnus, Message and MML
|
||||
|
||||
;; Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Reiner Steib <reiner.steib@gmx.de>
|
||||
;; Keywords: news
|
||||
|
||||
;; 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 library provides self-contained utility functions. The functions are
|
||||
;; used in Gnus, Message and MML, but within this library there are no
|
||||
;; dependencies on Gnus, Message, or MML or Gnus.
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; (require 'wid-edit)
|
||||
|
||||
(defgroup gmm nil
|
||||
"Utility functions for Gnus, Message and MML"
|
||||
:prefix "gmm-"
|
||||
:version "23.0" ;; No Gnus
|
||||
:group 'lisp)
|
||||
|
||||
;; Helper functions from `gnus-utils.el': gmm-verbose, gmm-message, gmm-error
|
||||
|
||||
(defcustom gmm-verbose 7
|
||||
"Integer that says how verbose gmm should be.
|
||||
The higher the number, the more messages will flash to say what
|
||||
it done. At zero, it will be totally mute; at five, it will
|
||||
display most important messages; and at ten, it will keep on
|
||||
jabbering all the time."
|
||||
:type 'integer
|
||||
:group 'gmm)
|
||||
|
||||
;;;###autoload
|
||||
(defun gmm-message (level &rest args)
|
||||
"If LEVEL is lower than `gmm-verbose' print ARGS using `message'.
|
||||
|
||||
Guideline for numbers:
|
||||
1 - error messages, 3 - non-serious error messages, 5 - messages for things
|
||||
that take a long time, 7 - not very important messages on stuff, 9 - messages
|
||||
inside loops."
|
||||
(if (<= level gmm-verbose)
|
||||
(apply 'message args)
|
||||
;; We have to do this format thingy here even if the result isn't
|
||||
;; shown - the return value has to be the same as the return value
|
||||
;; from `message'.
|
||||
(apply 'format args)))
|
||||
|
||||
;;;###autoload
|
||||
(defun gmm-error (level &rest args)
|
||||
"Beep an error if LEVEL is equal to or less than `gmm-verbose'.
|
||||
ARGS are passed to `message'."
|
||||
(when (<= (floor level) gmm-verbose)
|
||||
(apply 'message args)
|
||||
(ding)
|
||||
(let (duration)
|
||||
(when (and (floatp level)
|
||||
(not (zerop (setq duration (* 10 (- level (floor level)))))))
|
||||
(sit-for duration))))
|
||||
nil)
|
||||
|
||||
;;;###autoload
|
||||
(defun gmm-widget-p (symbol)
|
||||
"Non-nil iff SYMBOL is a widget."
|
||||
(get symbol 'widget-type))
|
||||
|
||||
;; Copy of the `nnmail-lazy' code from `nnmail.el':
|
||||
(define-widget 'gmm-lazy 'default
|
||||
"Base widget for recursive datastructures.
|
||||
|
||||
This is copy of the `lazy' widget in Emacs 22.1 provided for compatibility."
|
||||
:format "%{%t%}: %v"
|
||||
:convert-widget 'widget-value-convert-widget
|
||||
:value-create (lambda (widget)
|
||||
(let ((value (widget-get widget :value))
|
||||
(type (widget-get widget :type)))
|
||||
(widget-put widget :children
|
||||
(list (widget-create-child-value
|
||||
widget (widget-convert type) value)))))
|
||||
:value-delete 'widget-children-value-delete
|
||||
:value-get (lambda (widget)
|
||||
(widget-value (car (widget-get widget :children))))
|
||||
:value-inline (lambda (widget)
|
||||
(widget-apply (car (widget-get widget :children))
|
||||
:value-inline))
|
||||
:default-get (lambda (widget)
|
||||
(widget-default-get
|
||||
(widget-convert (widget-get widget :type))))
|
||||
:match (lambda (widget value)
|
||||
(widget-apply (widget-convert (widget-get widget :type))
|
||||
:match value))
|
||||
:validate (lambda (widget)
|
||||
(widget-apply (car (widget-get widget :children)) :validate)))
|
||||
|
||||
;; Note: The format of `gmm-tool-bar-item' may change if some future Emacs
|
||||
;; version will provide customizable tool bar buttons using a different
|
||||
;; interface.
|
||||
|
||||
;; TODO: Extend API so that the "Command" entry can be a function or a plist.
|
||||
;; In case of a list it should have the format...
|
||||
;;
|
||||
;; (:none command-without-modifier
|
||||
;; :shift command-with-shift-pressed
|
||||
;; :control command-with-ctrl-pressed
|
||||
;; :control-shift command-with-control-and-shift-pressed
|
||||
;; ;; mouse-2 and mouse-3 can't be used in Emacs yet.
|
||||
;; :mouse-2 command-on-mouse-2-press
|
||||
;; :mouse-3 command-on-mouse-3-press) ;; typically a menu of related commands
|
||||
;;
|
||||
;; Combinations of mouse-[23] plus shift and/or controll might be overkill.
|
||||
;;
|
||||
;; Then use (plist-get rs-command :none), (plist-get rs-command :shift)
|
||||
|
||||
(define-widget 'gmm-tool-bar-item (if (gmm-widget-p 'lazy) 'lazy 'gmm-lazy)
|
||||
"Tool bar list item."
|
||||
:tag "Tool bar item"
|
||||
:type '(choice
|
||||
(list :tag "Command and Icon"
|
||||
(function :tag "Command")
|
||||
(string :tag "Icon file")
|
||||
(choice
|
||||
(const :tag "Default map" nil)
|
||||
;; Note: Usually we need non-nil attributes if map is t.
|
||||
(const :tag "No menu" t)
|
||||
(sexp :tag "Other map"))
|
||||
(plist :inline t :tag "Properties"))
|
||||
(list :tag "Separator"
|
||||
(const :tag "No command" gmm-ignore)
|
||||
(string :tag "Icon file")
|
||||
(const :tag "No map")
|
||||
(plist :inline t :tag "Properties"))))
|
||||
|
||||
(define-widget 'gmm-tool-bar-zap-list (if (gmm-widget-p 'lazy) 'lazy 'gmm-lazy)
|
||||
"Tool bar zap list."
|
||||
:tag "Tool bar zap list"
|
||||
:type '(choice (const :tag "Zap all" t)
|
||||
(const :tag "Keep all" nil)
|
||||
(list
|
||||
;; :value
|
||||
;; Work around (bug in customize?), see
|
||||
;; <news:v9is48jrj1.fsf@marauder.physik.uni-ulm.de>
|
||||
;; (new-file open-file dired kill-buffer write-file
|
||||
;; print-buffer customize help)
|
||||
(set :inline t
|
||||
(const new-file)
|
||||
(const open-file)
|
||||
(const dired)
|
||||
(const kill-buffer)
|
||||
(const save-buffer)
|
||||
(const write-file)
|
||||
(const undo)
|
||||
(const cut)
|
||||
(const copy)
|
||||
(const paste)
|
||||
(const search-forward)
|
||||
(const print-buffer)
|
||||
(const customize)
|
||||
(const help))
|
||||
(repeat :inline t
|
||||
:tag "Other"
|
||||
(symbol :tag "Icon item")))))
|
||||
|
||||
;; (defun gmm-color-cells (&optional display)
|
||||
;; "Return the number of color cells supported by DISPLAY.
|
||||
;; Compatibility function."
|
||||
;; ;; `display-color-cells' doesn't return more than 256 even if color depth is
|
||||
;; ;; > 8 in Emacs 21.
|
||||
;; ;;
|
||||
;; ;; Feel free to add proper XEmacs support.
|
||||
;; (let* ((cells (and (fboundp 'display-color-cells)
|
||||
;; (display-color-cells display)))
|
||||
;; (plane (and (fboundp 'x-display-planes)
|
||||
;; (ash 1 (x-display-planes))))
|
||||
;; (none -1))
|
||||
;; (max (if (integerp cells) cells none)
|
||||
;; (if (integerp plane) plane none))))
|
||||
|
||||
(defcustom gmm-tool-bar-style
|
||||
(if (and (boundp 'tool-bar-mode)
|
||||
tool-bar-mode
|
||||
(and (fboundp 'display-visual-class)
|
||||
(not (memq (display-visual-class)
|
||||
(list 'static-gray 'gray-scale
|
||||
'static-color 'pseudo-color)))))
|
||||
'gnome
|
||||
'retro)
|
||||
"Prefered tool bar style."
|
||||
:type '(choice (const :tag "GNOME style" 'gnome)
|
||||
(const :tag "Retro look" 'retro))
|
||||
:group 'gmm)
|
||||
|
||||
(defvar tool-bar-map)
|
||||
|
||||
;;;###autoload
|
||||
(defun gmm-tool-bar-from-list (icon-list zap-list default-map)
|
||||
"Make a tool bar from ICON-LIST.
|
||||
|
||||
Within each entry of ICON-LIST, the first element is a menu
|
||||
command, the second element is an icon file name and the third
|
||||
element is a test function. You can use \\[describe-key]
|
||||
<menu-entry> to find out the name of a menu command. The fourth
|
||||
and all following elements are passed a the PROPS argument to the
|
||||
function `tool-bar-local-item'.
|
||||
|
||||
If ZAP-LIST is a list, remove those item from the default
|
||||
`tool-bar-map'. If it is t, start with a new sparse map. You
|
||||
can use \\[describe-key] <icon> to find out the name of an icon
|
||||
item. When \\[describe-key] <icon> shows \"<tool-bar> <new-file>
|
||||
runs the command find-file\", then use `new-file' in ZAP-LIST.
|
||||
|
||||
DEFAULT-MAP specifies the default key map for ICON-LIST."
|
||||
(let (;; For Emacs 21, we must let-bind `tool-bar-map'. In Emacs 22, we
|
||||
;; could use some other local variable.
|
||||
(tool-bar-map (if (eq zap-list t)
|
||||
(make-sparse-keymap)
|
||||
(copy-keymap tool-bar-map))))
|
||||
(when (listp zap-list)
|
||||
;; Zap some items which aren't relevant for this mode and take up space.
|
||||
(dolist (key zap-list)
|
||||
(define-key tool-bar-map (vector key) nil)))
|
||||
(mapc (lambda (el)
|
||||
(let ((command (car el))
|
||||
(icon (nth 1 el))
|
||||
(fmap (or (nth 2 el) default-map))
|
||||
(props (cdr (cdr (cdr el)))) )
|
||||
;; command may stem from different from-maps:
|
||||
(cond ((eq command 'gmm-ignore)
|
||||
;; The dummy `gmm-ignore', see `gmm-tool-bar-item'
|
||||
;; widget. Suppress tooltip by adding `:enable nil'.
|
||||
(if (fboundp 'tool-bar-local-item)
|
||||
(apply 'tool-bar-local-item icon nil nil
|
||||
tool-bar-map :enable nil props)
|
||||
;; (tool-bar-local-item ICON DEF KEY MAP &rest PROPS)
|
||||
;; (tool-bar-add-item ICON DEF KEY &rest PROPS)
|
||||
(apply 'tool-bar-add-item icon nil nil :enable nil props)))
|
||||
((equal fmap t) ;; Not a menu command
|
||||
(if (fboundp 'tool-bar-local-item)
|
||||
(apply 'tool-bar-local-item
|
||||
icon command
|
||||
(intern icon) ;; reuse icon or fmap here?
|
||||
tool-bar-map props)
|
||||
;; Emacs 21 compatibility:
|
||||
(apply 'tool-bar-add-item
|
||||
icon command
|
||||
(intern icon)
|
||||
props)))
|
||||
(t ;; A menu command
|
||||
(if (fboundp 'tool-bar-local-item-from-menu)
|
||||
(apply 'tool-bar-local-item-from-menu
|
||||
;; (apply 'tool-bar-local-item icon def key
|
||||
;; tool-bar-map props)
|
||||
command icon tool-bar-map (symbol-value fmap)
|
||||
props)
|
||||
;; Emacs 21 compatibility:
|
||||
(apply 'tool-bar-add-item-from-menu
|
||||
command icon (symbol-value fmap)
|
||||
props))))
|
||||
t))
|
||||
(if (symbolp icon-list)
|
||||
(eval icon-list)
|
||||
icon-list))
|
||||
tool-bar-map))
|
||||
|
||||
;; WARNING: The following is subject to change. Don't rely on it yet.
|
||||
|
||||
;; From MH-E without modifications:
|
||||
|
||||
(defmacro gmm-defun-compat (name function arg-list &rest body)
|
||||
"Create function NAME.
|
||||
If FUNCTION exists, then NAME becomes an alias for FUNCTION.
|
||||
Otherwise, create function NAME with ARG-LIST and BODY."
|
||||
(let ((defined-p (fboundp function)))
|
||||
(if defined-p
|
||||
`(defalias ',name ',function)
|
||||
`(defun ,name ,arg-list ,@body))))
|
||||
|
||||
(gmm-defun-compat gmm-image-search-load-path
|
||||
image-search-load-path (file &optional path)
|
||||
"Emacs 21 and XEmacs don't have `image-search-load-path'.
|
||||
This function returns nil on those systems."
|
||||
nil)
|
||||
|
||||
;; From MH-E with modifications:
|
||||
|
||||
;; Don't use `gmm-defun-compat' until API changes in
|
||||
;; `image-load-path-for-library' in Emacs CVS are completed.
|
||||
|
||||
(defun gmm-image-load-path-for-library (library image &optional path no-error)
|
||||
"Return a suitable search path for images relative to LIBRARY.
|
||||
|
||||
First it searches for IMAGE in `image-load-path' (excluding
|
||||
\"`data-directory'/images\") and `load-path', followed by a path
|
||||
suitable for LIBRARY, which includes \"../../etc/images\" and
|
||||
\"../etc/images\" relative to the library file itself, and then
|
||||
in \"`data-directory'/images\".
|
||||
|
||||
Then this function returns a list of directories which contains
|
||||
first the directory in which IMAGE was found, followed by the
|
||||
value of `load-path'. If PATH is given, it is used instead of
|
||||
`load-path'.
|
||||
|
||||
If NO-ERROR is non-nil and a suitable path can't be found, don't
|
||||
signal an error. Instead, return a list of directories as before,
|
||||
except that nil appears in place of the image directory.
|
||||
|
||||
Here is an example that uses a common idiom to provide
|
||||
compatibility with versions of Emacs that lack the variable
|
||||
`image-load-path':
|
||||
|
||||
;; Shush compiler.
|
||||
(defvar image-load-path)
|
||||
|
||||
(let* ((load-path (image-load-path-for-library \"mh-e\" \"mh-logo.xpm\"))
|
||||
(image-load-path (cons (car load-path)
|
||||
(when (boundp 'image-load-path)
|
||||
image-load-path))))
|
||||
(mh-tool-bar-folder-buttons-init))"
|
||||
(unless library (error "No library specified"))
|
||||
(unless image (error "No image specified"))
|
||||
(let (image-directory image-directory-load-path)
|
||||
;; Check for images in image-load-path or load-path.
|
||||
(let ((img image)
|
||||
(dir (or
|
||||
;; Images in image-load-path.
|
||||
(gmm-image-search-load-path image) ;; "gmm-" prefix!
|
||||
;; Images in load-path.
|
||||
(locate-library image)))
|
||||
parent)
|
||||
;; Since the image might be in a nested directory (for
|
||||
;; example, mail/attach.pbm), adjust `image-directory'
|
||||
;; accordingly.
|
||||
(when dir
|
||||
(setq dir (file-name-directory dir))
|
||||
(while (setq parent (file-name-directory img))
|
||||
(setq img (directory-file-name parent)
|
||||
dir (expand-file-name "../" dir))))
|
||||
(setq image-directory-load-path dir))
|
||||
|
||||
;; If `image-directory-load-path' isn't Emacs' image directory,
|
||||
;; it's probably a user preference, so use it. Then use a
|
||||
;; relative setting if possible; otherwise, use
|
||||
;; `image-directory-load-path'.
|
||||
(cond
|
||||
;; User-modified image-load-path?
|
||||
((and image-directory-load-path
|
||||
(not (equal image-directory-load-path
|
||||
(file-name-as-directory
|
||||
(expand-file-name "images" data-directory)))))
|
||||
(setq image-directory image-directory-load-path))
|
||||
;; Try relative setting.
|
||||
((let (library-name d1ei d2ei)
|
||||
;; First, find library in the load-path.
|
||||
(setq library-name (locate-library library))
|
||||
(if (not library-name)
|
||||
(error "Cannot find library %s in load-path" library))
|
||||
;; And then set image-directory relative to that.
|
||||
(setq
|
||||
;; Go down 2 levels.
|
||||
d2ei (file-name-as-directory
|
||||
(expand-file-name
|
||||
(concat (file-name-directory library-name) "../../etc/images")))
|
||||
;; Go down 1 level.
|
||||
d1ei (file-name-as-directory
|
||||
(expand-file-name
|
||||
(concat (file-name-directory library-name) "../etc/images"))))
|
||||
(setq image-directory
|
||||
;; Set it to nil if image is not found.
|
||||
(cond ((file-exists-p (expand-file-name image d2ei)) d2ei)
|
||||
((file-exists-p (expand-file-name image d1ei)) d1ei)))))
|
||||
;; Use Emacs' image directory.
|
||||
(image-directory-load-path
|
||||
(setq image-directory image-directory-load-path))
|
||||
(no-error
|
||||
(message "Could not find image %s for library %s" image library))
|
||||
(t
|
||||
(error "Could not find image %s for library %s" image library)))
|
||||
|
||||
;; Return an augmented `path' or `load-path'.
|
||||
(nconc (list image-directory)
|
||||
(delete image-directory (copy-sequence (or path load-path))))))
|
||||
|
||||
(defun gmm-customize-mode (&optional mode)
|
||||
"Customize customization group for MODE.
|
||||
If mode is nil, use `major-mode' of the curent buffer."
|
||||
(interactive)
|
||||
(customize-group
|
||||
(or mode
|
||||
(intern (let ((mode (symbol-name major-mode)))
|
||||
(string-match "^\\(.+\\)-mode$" mode)
|
||||
(match-string 1 mode))))))
|
||||
|
||||
(provide 'gmm-utils)
|
||||
|
||||
;; arch-tag: e0b60920-2ce6-40c1-bfc0-cadbbe26b602
|
||||
;;; gmm-utils.el ends here
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
(eval-when-compile
|
||||
(require 'cl)
|
||||
(defvar tool-bar-map))
|
||||
(defvar tool-bar-mode))
|
||||
|
||||
(require 'gnus)
|
||||
(require 'gnus-start)
|
||||
|
@ -39,6 +39,7 @@
|
|||
(require 'gnus-range)
|
||||
(require 'gnus-win)
|
||||
(require 'gnus-undo)
|
||||
(require 'gmm-utils)
|
||||
(require 'time-date)
|
||||
(require 'gnus-ems)
|
||||
|
||||
|
@ -979,36 +980,135 @@ simple manner.")
|
|||
|
||||
(gnus-run-hooks 'gnus-group-menu-hook)))
|
||||
|
||||
(defvar gnus-group-toolbar-map nil)
|
||||
|
||||
;; Emacs 21 tool bar. Should be no-op otherwise.
|
||||
(defun gnus-group-make-tool-bar ()
|
||||
(if (and
|
||||
(condition-case nil (require 'tool-bar) (error nil))
|
||||
(fboundp 'tool-bar-add-item-from-menu)
|
||||
(default-value 'tool-bar-mode)
|
||||
(not gnus-group-toolbar-map))
|
||||
(setq gnus-group-toolbar-map
|
||||
(let ((tool-bar-map (make-sparse-keymap))
|
||||
(load-path (mm-image-load-path)))
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-group-get-new-news "get-news" gnus-group-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-group-get-new-news-this-group "gnntg" gnus-group-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-group-catchup-current "catchup" gnus-group-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-group-describe-group "describe-group" gnus-group-mode-map)
|
||||
(tool-bar-add-item "subscribe" 'gnus-group-subscribe 'subscribe
|
||||
:help "Subscribe to the current group")
|
||||
(tool-bar-add-item "unsubscribe" 'gnus-group-unsubscribe
|
||||
'unsubscribe
|
||||
:help "Unsubscribe from the current group")
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-group-exit "exit-gnus" gnus-group-mode-map)
|
||||
tool-bar-map)))
|
||||
(if gnus-group-toolbar-map
|
||||
(set (make-local-variable 'tool-bar-map) gnus-group-toolbar-map)))
|
||||
(defvar gnus-group-tool-bar-map nil)
|
||||
|
||||
(defun gnus-group-tool-bar-update (&optional symbol value)
|
||||
"Update group buffer toolbar.
|
||||
Setter function for custom variables."
|
||||
(when symbol
|
||||
(set-default symbol value))
|
||||
;; (setq-default gnus-group-tool-bar-map nil)
|
||||
;; (use-local-map gnus-group-mode-map)
|
||||
(when (gnus-alive-p)
|
||||
(with-current-buffer gnus-group-buffer
|
||||
(gnus-group-make-tool-bar t))))
|
||||
|
||||
(defcustom gnus-group-tool-bar (if (eq gmm-tool-bar-style 'gnome)
|
||||
'gnus-group-tool-bar-gnome
|
||||
'gnus-group-tool-bar-retro)
|
||||
"Specifies the Gnus group tool bar.
|
||||
|
||||
It can be either a list or a symbol refering to a list. See
|
||||
`gmm-tool-bar-from-list' for the format of the list. The
|
||||
default key map is `gnus-group-mode-map'.
|
||||
|
||||
Pre-defined symbols include `gnus-group-tool-bar-gnome' and
|
||||
`gnus-group-tool-bar-retro'."
|
||||
:type '(choice (const :tag "GNOME style" gnus-group-tool-bar-gnome)
|
||||
(const :tag "Retro look" gnus-group-tool-bar-retro)
|
||||
(repeat :tag "User defined list" gmm-tool-bar-item)
|
||||
(symbol))
|
||||
:version "22.1" ;; Gnus 5.10.9
|
||||
:initialize 'custom-initialize-default
|
||||
:set 'gnus-group-tool-bar-update
|
||||
:group 'gnus-group)
|
||||
|
||||
(defcustom gnus-group-tool-bar-gnome
|
||||
'((gnus-group-post-news "mail/compose")
|
||||
;; Some useful agent icons? I don't use the agent so agent users should
|
||||
;; suggest useful commands:
|
||||
(gnus-agent-toggle-plugged "connect" t
|
||||
:visible (and gnus-agent (not gnus-plugged)))
|
||||
(gnus-agent-toggle-plugged "disconnect" t
|
||||
:visible (and gnus-agent gnus-plugged))
|
||||
;; FIXME: gnus-agent-toggle-plugged (in gnus-agent-group-make-menu-bar)
|
||||
;; should have a better help text.
|
||||
(gnus-group-send-queue "mail/outbox" t
|
||||
:visible (and gnus-agent gnus-plugged)
|
||||
:help "Send articles from the queue group")
|
||||
(gnus-group-get-new-news "mail/inbox" nil
|
||||
:visible (or (not gnus-agent)
|
||||
gnus-plugged))
|
||||
;; FIXME: gnus-*-read-group should have a better help text.
|
||||
(gnus-topic-read-group "open" nil
|
||||
:visible (and (boundp 'gnus-topic-mode)
|
||||
gnus-topic-mode))
|
||||
(gnus-group-read-group "open" nil
|
||||
:visible (not (and (boundp 'gnus-topic-mode)
|
||||
gnus-topic-mode)))
|
||||
;; (gnus-group-find-new-groups "???" nil)
|
||||
(gnus-group-save-newsrc "save")
|
||||
(gnus-group-describe-group "describe")
|
||||
(gnus-group-unsubscribe-current-group "gnus/toggle-subscription")
|
||||
(gnus-group-prev-unread-group "left-arrow")
|
||||
(gnus-group-next-unread-group "right-arrow")
|
||||
(gnus-group-exit "exit")
|
||||
(gmm-customize-mode "preferences" t :help "Edit mode preferences")
|
||||
(gnus-info-find-node "help"))
|
||||
"List of functions for the group tool bar (GNOME style).
|
||||
|
||||
See `gmm-tool-bar-from-list' for the format of the list."
|
||||
:type '(repeat gmm-tool-bar-item)
|
||||
:version "22.1" ;; Gnus 5.10.9
|
||||
:initialize 'custom-initialize-default
|
||||
:set 'gnus-group-tool-bar-update
|
||||
:group 'gnus-group)
|
||||
|
||||
(defcustom gnus-group-tool-bar-retro
|
||||
'((gnus-group-get-new-news "gnus/get-news")
|
||||
(gnus-group-get-new-news-this-group "gnus/gnntg")
|
||||
(gnus-group-catchup-current "gnus/catchup")
|
||||
(gnus-group-describe-group "gnus/describe-group")
|
||||
(gnus-group-subscribe "gnus/subscribe" t
|
||||
:help "Subscribe to the current group")
|
||||
(gnus-group-unsubscribe "gnus/unsubscribe" t
|
||||
:help "Unsubscribe from the current group")
|
||||
(gnus-group-exit "gnus/exit-gnus" gnus-group-mode-map))
|
||||
"List of functions for the group tool bar (retro look).
|
||||
|
||||
See `gmm-tool-bar-from-list' for the format of the list."
|
||||
:type '(repeat gmm-tool-bar-item)
|
||||
:version "22.1" ;; Gnus 5.10.9
|
||||
:initialize 'custom-initialize-default
|
||||
:set 'gnus-group-tool-bar-update
|
||||
:group 'gnus-group)
|
||||
|
||||
(defcustom gnus-group-tool-bar-zap-list t
|
||||
"List of icon items from the global tool bar.
|
||||
These items are not displayed in the Gnus group mode tool bar.
|
||||
|
||||
See `gmm-tool-bar-from-list' for the format of the list."
|
||||
:type 'gmm-tool-bar-zap-list
|
||||
:version "22.1" ;; Gnus 5.10.9
|
||||
:initialize 'custom-initialize-default
|
||||
:set 'gnus-group-tool-bar-update
|
||||
:group 'gnus-group)
|
||||
|
||||
(defvar image-load-path)
|
||||
|
||||
(defun gnus-group-make-tool-bar (&optional force)
|
||||
"Make a group mode tool bar from `gnus-group-tool-bar'.
|
||||
When FORCE, rebuild the tool bar."
|
||||
(when (and (not (featurep 'xemacs))
|
||||
(boundp 'tool-bar-mode)
|
||||
tool-bar-mode
|
||||
;; The Gnus 5.10.6 code checked (default-value 'tool-bar-mode).
|
||||
;; Why? --rsteib
|
||||
(or (not gnus-group-tool-bar-map) force))
|
||||
(let* ((load-path
|
||||
(gmm-image-load-path-for-library "gnus"
|
||||
"gnus/toggle-subscription.xpm"
|
||||
nil t))
|
||||
(image-load-path (cons (car load-path)
|
||||
(when (boundp 'image-load-path)
|
||||
image-load-path)))
|
||||
(map (gmm-tool-bar-from-list gnus-group-tool-bar
|
||||
gnus-group-tool-bar-zap-list
|
||||
'gnus-group-mode-map)))
|
||||
(if map
|
||||
(set (make-local-variable 'tool-bar-map) map))))
|
||||
gnus-group-tool-bar-map)
|
||||
|
||||
(defun gnus-group-mode ()
|
||||
"Major mode for reading news.
|
||||
|
@ -1379,6 +1479,17 @@ if it is a string, only list groups matching REGEXP."
|
|||
(gnus-range-difference (list active) (gnus-info-read info))
|
||||
seen))))))
|
||||
|
||||
;; Moving through the Group buffer (in topic mode) e.g. with C-n doesn't
|
||||
;; update the state (enabled/disabled) of the icon `gnus-group-describe-group'
|
||||
;; automatically. After `C-l' the state is correct. See the following report
|
||||
;; on emacs-devel
|
||||
;; <http://thread.gmane.org/v9acdmrcse.fsf@marauder.physik.uni-ulm.de>:
|
||||
;; From: Reiner Steib
|
||||
;; Subject: tool bar icons not updated according to :active condition
|
||||
;; Newsgroups: gmane.emacs.devel
|
||||
;; Date: Mon, 23 Jan 2006 19:59:13 +0100
|
||||
;; Message-ID: <v9acdmrcse.fsf@marauder.physik.uni-ulm.de>
|
||||
|
||||
(defcustom gnus-group-update-tool-bar
|
||||
(and (not (featurep 'xemacs))
|
||||
(boundp 'tool-bar-mode)
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
(eval-when-compile
|
||||
(require 'cl)
|
||||
(defvar tool-bar-map))
|
||||
(defvar tool-bar-mode))
|
||||
|
||||
(require 'gnus)
|
||||
(require 'gnus-group)
|
||||
|
@ -38,6 +38,7 @@
|
|||
(require 'gnus-int)
|
||||
(require 'gnus-undo)
|
||||
(require 'gnus-util)
|
||||
(require 'gmm-utils)
|
||||
(require 'mm-decode)
|
||||
(require 'nnoo)
|
||||
|
||||
|
@ -2546,47 +2547,161 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
|
|||
|
||||
(defvar gnus-summary-tool-bar-map nil)
|
||||
|
||||
;; Emacs 21 tool bar. Should be no-op otherwise.
|
||||
(defun gnus-summary-make-tool-bar ()
|
||||
(if (and (fboundp 'tool-bar-add-item-from-menu)
|
||||
(default-value 'tool-bar-mode)
|
||||
(not gnus-summary-tool-bar-map))
|
||||
(setq gnus-summary-tool-bar-map
|
||||
(let ((tool-bar-map (make-sparse-keymap))
|
||||
(load-path (mm-image-load-path)))
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-summary-prev-unread "prev-ur" gnus-summary-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-summary-next-unread "next-ur" gnus-summary-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-summary-post-news "post" gnus-summary-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-summary-followup-with-original "fuwo" gnus-summary-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-summary-followup "followup" gnus-summary-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-summary-reply-with-original "reply-wo" gnus-summary-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-summary-reply "reply" gnus-summary-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-summary-caesar-message "rot13" gnus-summary-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-uu-decode-uu "uu-decode" gnus-summary-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-summary-save-article-file "save-aif" gnus-summary-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-summary-save-article "save-art" gnus-summary-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-uu-post-news "uu-post" gnus-summary-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-summary-catchup "catchup" gnus-summary-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-summary-catchup-and-exit "cu-exit" gnus-summary-mode-map)
|
||||
(tool-bar-add-item-from-menu
|
||||
'gnus-summary-exit "exit-summ" gnus-summary-mode-map)
|
||||
tool-bar-map)))
|
||||
(if gnus-summary-tool-bar-map
|
||||
(set (make-local-variable 'tool-bar-map) gnus-summary-tool-bar-map)))
|
||||
;; Note: The :set function in the `gnus-summary-tool-bar*' variables will only
|
||||
;; affect _new_ message buffers. We might add a function that walks thru all
|
||||
;; summary-mode buffers and force the update.
|
||||
(defun gnus-summary-tool-bar-update (&optional symbol value)
|
||||
"Update summary mode toolbar.
|
||||
Setter function for custom variables."
|
||||
(setq-default gnus-summary-tool-bar-map nil)
|
||||
(when symbol
|
||||
;; When used as ":set" function:
|
||||
(set-default symbol value))
|
||||
(when (gnus-buffer-live-p gnus-summary-buffer)
|
||||
(with-current-buffer gnus-summary-buffer
|
||||
(gnus-summary-make-tool-bar))))
|
||||
|
||||
(defcustom gnus-summary-tool-bar (if (eq gmm-tool-bar-style 'gnome)
|
||||
'gnus-summary-tool-bar-gnome
|
||||
'gnus-summary-tool-bar-retro)
|
||||
"Specifies the Gnus summary tool bar.
|
||||
|
||||
It can be either a list or a symbol refering to a list. See
|
||||
`gmm-tool-bar-from-list' for the format of the list. The
|
||||
default key map is `gnus-summary-mode-map'.
|
||||
|
||||
Pre-defined symbols include `gnus-summary-tool-bar-gnome' and
|
||||
`gnus-summary-tool-bar-retro'."
|
||||
:type '(choice (const :tag "GNOME style" gnus-summary-tool-bar-gnome)
|
||||
(const :tag "Retro look" gnus-summary-tool-bar-retro)
|
||||
(repeat :tag "User defined list" gmm-tool-bar-item)
|
||||
(symbol))
|
||||
:version "22.1" ;; Gnus 5.10.9
|
||||
:initialize 'custom-initialize-default
|
||||
:set 'gnus-summary-tool-bar-update
|
||||
:group 'gnus-summary)
|
||||
|
||||
(defcustom gnus-summary-tool-bar-gnome
|
||||
'((gnus-summary-post-news "mail/compose" nil)
|
||||
(gnus-summary-insert-new-articles "mail/inbox" nil
|
||||
:visible (or (not gnus-agent)
|
||||
gnus-plugged))
|
||||
(gnus-summary-reply-with-original "mail/reply")
|
||||
(gnus-summary-reply "mail/reply" nil :visible nil)
|
||||
(gnus-summary-followup-with-original "mail/reply-all")
|
||||
(gnus-summary-followup "mail/reply-all" nil :visible nil)
|
||||
(gnus-summary-mail-forward "mail/forward")
|
||||
(gnus-summary-save-article "mail/save")
|
||||
(gnus-summary-search-article-forward "search" nil :visible nil)
|
||||
(gnus-summary-print-article "print")
|
||||
(gnus-summary-tick-article-forward "flag-followup" nil :visible nil)
|
||||
;; Some new commands that may need more suitable icons:
|
||||
(gnus-summary-save-newsrc "save" nil :visible nil)
|
||||
;; (gnus-summary-show-article "stock_message-display" nil :visible nil)
|
||||
(gnus-summary-prev-article "left-arrow")
|
||||
(gnus-summary-next-article "right-arrow")
|
||||
(gnus-summary-next-page "next-page")
|
||||
;; (gnus-summary-enter-digest-group "right_arrow" nil :visible nil)
|
||||
;;
|
||||
;; Maybe some sort-by-... could be added:
|
||||
;; (gnus-summary-sort-by-author "sort-a-z" nil :visible nil)
|
||||
;; (gnus-summary-sort-by-date "sort-1-9" nil :visible nil)
|
||||
(gnus-summary-mark-as-expirable
|
||||
"delete" nil
|
||||
:visible (gnus-check-backend-function 'request-expire-articles
|
||||
gnus-newsgroup-name))
|
||||
(gnus-summary-mark-as-spam
|
||||
"mail/spam" t
|
||||
:visible (and (fboundp 'spam-group-ham-contents-p)
|
||||
(spam-group-ham-contents-p gnus-newsgroup-name))
|
||||
:help "Mark as spam")
|
||||
(gnus-summary-mark-as-read-forward
|
||||
"mail/not-spam" nil
|
||||
:visible (and (fboundp 'spam-group-spam-contents-p)
|
||||
(spam-group-spam-contents-p gnus-newsgroup-name)))
|
||||
;;
|
||||
(gnus-summary-exit "exit")
|
||||
(gmm-customize-mode "preferences" t :help "Edit mode preferences")
|
||||
(gnus-info-find-node "help"))
|
||||
"List of functions for the summary tool bar (GNOME style).
|
||||
|
||||
See `gmm-tool-bar-from-list' for the format of the list."
|
||||
:type '(repeat gmm-tool-bar-item)
|
||||
:version "22.1" ;; Gnus 5.10.9
|
||||
:initialize 'custom-initialize-default
|
||||
:set 'gnus-summary-tool-bar-update
|
||||
:group 'gnus-summary)
|
||||
|
||||
(defcustom gnus-summary-tool-bar-retro
|
||||
'((gnus-summary-prev-unread-article "gnus/prev-ur")
|
||||
(gnus-summary-next-unread-article "gnus/next-ur")
|
||||
(gnus-summary-post-news "gnus/post")
|
||||
(gnus-summary-followup-with-original "gnus/fuwo")
|
||||
(gnus-summary-followup "gnus/followup")
|
||||
(gnus-summary-reply-with-original "gnus/reply-wo")
|
||||
(gnus-summary-reply "gnus/reply")
|
||||
(gnus-summary-caesar-message "gnus/rot13")
|
||||
(gnus-uu-decode-uu "gnus/uu-decode")
|
||||
(gnus-summary-save-article-file "gnus/save-aif")
|
||||
(gnus-summary-save-article "gnus/save-art")
|
||||
(gnus-uu-post-news "gnus/uu-post")
|
||||
(gnus-summary-catchup "gnus/catchup")
|
||||
(gnus-summary-catchup-and-exit "gnus/cu-exit")
|
||||
(gnus-summary-exit "gnus/exit-summ")
|
||||
;; Some new command that may need more suitable icons:
|
||||
(gnus-summary-print-article "gnus/print" nil :visible nil)
|
||||
(gnus-summary-mark-as-expirable "gnus/close" nil :visible nil)
|
||||
(gnus-summary-save-newsrc "gnus/save" nil :visible nil)
|
||||
;; (gnus-summary-enter-digest-group "gnus/right_arrow" nil :visible nil)
|
||||
(gnus-summary-search-article-forward "gnus/search" nil :visible nil)
|
||||
;; (gnus-summary-insert-new-articles "gnus/paste" nil :visible nil)
|
||||
;; (gnus-summary-toggle-threads "gnus/open" nil :visible nil)
|
||||
;;
|
||||
(gnus-info-find-node "gnus/help" nil :visible nil))
|
||||
"List of functions for the summary tool bar (retro look).
|
||||
|
||||
See `gmm-tool-bar-from-list' for the format of the list."
|
||||
:type '(repeat gmm-tool-bar-item)
|
||||
:version "22.1" ;; Gnus 5.10.9
|
||||
:initialize 'custom-initialize-default
|
||||
:set 'gnus-summary-tool-bar-update
|
||||
:group 'gnus-summary)
|
||||
|
||||
(defcustom gnus-summary-tool-bar-zap-list t
|
||||
"List of icon items from the global tool bar.
|
||||
These items are not displayed in the Gnus summary mode tool bar.
|
||||
|
||||
See `gmm-tool-bar-from-list' for the format of the list."
|
||||
:type 'gmm-tool-bar-zap-list
|
||||
:version "22.1" ;; Gnus 5.10.9
|
||||
:initialize 'custom-initialize-default
|
||||
:set 'gnus-summary-tool-bar-update
|
||||
:group 'gnus-summary)
|
||||
|
||||
(defvar image-load-path)
|
||||
|
||||
(defun gnus-summary-make-tool-bar (&optional force)
|
||||
"Make a summary mode tool bar from `gnus-summary-tool-bar'.
|
||||
When FORCE, rebuild the tool bar."
|
||||
(when (and (not (featurep 'xemacs))
|
||||
(boundp 'tool-bar-mode)
|
||||
tool-bar-mode
|
||||
(or (not gnus-summary-tool-bar-map) force))
|
||||
(let* ((load-path
|
||||
(gmm-image-load-path-for-library "gnus"
|
||||
"mail/save.xpm"
|
||||
nil t))
|
||||
(image-load-path (cons (car load-path)
|
||||
(when (boundp 'image-load-path)
|
||||
image-load-path)))
|
||||
(map (gmm-tool-bar-from-list gnus-summary-tool-bar
|
||||
gnus-summary-tool-bar-zap-list
|
||||
'gnus-summary-mode-map)))
|
||||
(when map
|
||||
;; Need to set `gnus-summary-tool-bar-map' because `gnus-article-mode'
|
||||
;; uses it's value.
|
||||
(setq gnus-summary-tool-bar-map map))))
|
||||
(set (make-local-variable 'tool-bar-map) gnus-summary-tool-bar-map))
|
||||
|
||||
(defun gnus-score-set-default (var value)
|
||||
"A version of set that updates the GNU Emacs menu-bar."
|
||||
|
|
|
@ -61,8 +61,11 @@
|
|||
|
||||
(eval-and-compile
|
||||
(cond
|
||||
((fboundp 'replace-in-string)
|
||||
(defalias 'gnus-replace-in-string 'replace-in-string))
|
||||
;; Prefer `replace-regexp-in-string' (present in Emacs, XEmacs 21.5,
|
||||
;; SXEmacs 22.1.4) over `replace-in-string'. The later leads to inf-loops
|
||||
;; on empty matches:
|
||||
;; (replace-in-string "foo" "/*$" "/")
|
||||
;; (replace-in-string "xe" "\\(x\\)?" "")
|
||||
((fboundp 'replace-regexp-in-string)
|
||||
(defun gnus-replace-in-string (string regexp newtext &optional literal)
|
||||
"Replace all matches for REGEXP with NEWTEXT in STRING.
|
||||
|
@ -71,6 +74,8 @@ string containing the replacements.
|
|||
|
||||
This is a compatibility function for different Emacsen."
|
||||
(replace-regexp-in-string regexp newtext string nil literal)))
|
||||
((fboundp 'replace-in-string)
|
||||
(defalias 'gnus-replace-in-string 'replace-in-string))
|
||||
(t
|
||||
(defun gnus-replace-in-string (string regexp newtext &optional literal)
|
||||
"Replace all matches for REGEXP with NEWTEXT in STRING.
|
||||
|
@ -1424,20 +1429,19 @@ CHOICE is a list of the choice char and help message at IDX."
|
|||
(defun gnus-select-frame-set-input-focus (frame)
|
||||
"Select FRAME, raise it, and set input focus, if possible."
|
||||
(cond ((featurep 'xemacs)
|
||||
(raise-frame frame)
|
||||
(select-frame frame)
|
||||
(focus-frame frame))
|
||||
;; The function `select-frame-set-input-focus' won't set
|
||||
;; the input focus under Emacs 21.2 and X window system.
|
||||
;;((fboundp 'select-frame-set-input-focus)
|
||||
;; (defalias 'gnus-select-frame-set-input-focus
|
||||
;; 'select-frame-set-input-focus)
|
||||
;; (select-frame-set-input-focus frame))
|
||||
(if (fboundp 'select-frame-set-input-focus)
|
||||
(select-frame-set-input-focus frame)
|
||||
(raise-frame frame)
|
||||
(select-frame frame)
|
||||
(focus-frame frame)))
|
||||
;; `select-frame-set-input-focus' defined in Emacs 21 will not
|
||||
;; set the input focus.
|
||||
((>= emacs-major-version 22)
|
||||
(select-frame-set-input-focus frame))
|
||||
(t
|
||||
(raise-frame frame)
|
||||
(select-frame frame)
|
||||
(cond ((and (eq window-system 'x)
|
||||
(fboundp 'x-focus-frame))
|
||||
(cond ((memq window-system '(x mac))
|
||||
(x-focus-frame frame))
|
||||
((eq window-system 'w32)
|
||||
(w32-focus-frame frame)))
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
(defvar gnus-list-identifiers)) ; gnus-sum is required where necessary
|
||||
(require 'canlock)
|
||||
(require 'mailheader)
|
||||
(require 'gmm-utils)
|
||||
(require 'nnheader)
|
||||
;; This is apparently necessary even though things are autoloaded.
|
||||
;; Because we dynamically bind mail-abbrev-mode-regexp, we'd better
|
||||
|
@ -2529,7 +2530,7 @@ M-RET `message-newline-and-reformat' (break the line and reformat)."
|
|||
(set (make-local-variable 'font-lock-defaults)
|
||||
'(message-font-lock-keywords t))
|
||||
(if (boundp 'tool-bar-map)
|
||||
(set (make-local-variable 'tool-bar-map) (message-tool-bar-map))))
|
||||
(set (make-local-variable 'tool-bar-map) (message-make-tool-bar))))
|
||||
(easy-menu-add message-mode-menu message-mode-map)
|
||||
(easy-menu-add message-mode-field-menu message-mode-map)
|
||||
(gnus-make-local-hook 'after-change-functions)
|
||||
|
@ -6586,53 +6587,123 @@ which specify the range to operate on."
|
|||
|
||||
;; Support for toolbar
|
||||
(eval-when-compile
|
||||
(defvar tool-bar-map)
|
||||
(defvar tool-bar-mode))
|
||||
|
||||
(defun message-tool-bar-local-item-from-menu (command icon in-map &optional from-map &rest props)
|
||||
;; We need to make tool bar entries in local keymaps with
|
||||
;; `tool-bar-local-item-from-menu' in Emacs >= 22
|
||||
(if (fboundp 'tool-bar-local-item-from-menu)
|
||||
(tool-bar-local-item-from-menu command icon in-map from-map props)
|
||||
(tool-bar-add-item-from-menu command icon from-map props)))
|
||||
;; Note: The :set function in the `message-tool-bar*' variables will only
|
||||
;; affect _new_ message buffers. We might add a function that walks thru all
|
||||
;; message-mode buffers and force the update.
|
||||
(defun message-tool-bar-update (&optional symbol value)
|
||||
"Update message mode toolbar.
|
||||
Setter function for custom variables."
|
||||
(setq-default message-tool-bar-map nil)
|
||||
(when symbol
|
||||
;; When used as ":set" function:
|
||||
(set-default symbol value)))
|
||||
|
||||
(defun message-tool-bar-map ()
|
||||
(or message-tool-bar-map
|
||||
(setq message-tool-bar-map
|
||||
(and
|
||||
(condition-case nil (require 'tool-bar) (error nil))
|
||||
(fboundp 'tool-bar-add-item-from-menu)
|
||||
(defcustom message-tool-bar (if (eq gmm-tool-bar-style 'gnome)
|
||||
'message-tool-bar-gnome
|
||||
'message-tool-bar-retro)
|
||||
"Specifies the message mode tool bar.
|
||||
|
||||
It can be either a list or a symbol refering to a list. See
|
||||
`gmm-tool-bar-from-list' for the format of the list. The
|
||||
default key map is `message-mode-map'.
|
||||
|
||||
Pre-defined symbols include `message-tool-bar-gnome' and
|
||||
`message-tool-bar-retro'."
|
||||
:type '(repeat gmm-tool-bar-list-item)
|
||||
:type '(choice (const :tag "GNOME style" message-tool-bar-gnome)
|
||||
(const :tag "Retro look" message-tool-bar-retro)
|
||||
(repeat :tag "User defined list" gmm-tool-bar-item)
|
||||
(symbol))
|
||||
:version "22.1" ;; Gnus 5.10.9
|
||||
:initialize 'custom-initialize-default
|
||||
:set 'message-tool-bar-update
|
||||
:group 'message)
|
||||
|
||||
(defcustom message-tool-bar-gnome
|
||||
'((ispell-message "spell" nil
|
||||
:visible (or (not (boundp 'flyspell-mode))
|
||||
(not flyspell-mode)))
|
||||
(flyspell-buffer "spell" t
|
||||
:visible (and (boundp 'flyspell-mode)
|
||||
flyspell-mode)
|
||||
:help "Flyspell whole buffer")
|
||||
(gmm-ignore "separator")
|
||||
(message-send-and-exit "mail/send")
|
||||
(message-dont-send "mail/save-draft")
|
||||
(message-kill-buffer "close") ;; stock_cancel
|
||||
(mml-attach-file "attach" mml-mode-map)
|
||||
(mml-preview "mail/preview" mml-mode-map)
|
||||
;; (mml-secure-message-sign-encrypt "lock" mml-mode-map :visible nil)
|
||||
(message-insert-importance-high "important" nil :visible nil)
|
||||
(message-insert-importance-low "unimportant" nil :visible nil)
|
||||
(message-insert-disposition-notification-to "receipt" nil :visible nil)
|
||||
(gmm-customize-mode "preferences" t :help "Edit mode preferences")
|
||||
(message-info "help" t :help "Message manual"))
|
||||
"List of items for the message tool bar (GNOME style).
|
||||
|
||||
See `gmm-tool-bar-from-list' for details on the format of the list."
|
||||
:type '(repeat gmm-tool-bar-item)
|
||||
:version "22.1" ;; Gnus 5.10.9
|
||||
:initialize 'custom-initialize-default
|
||||
:set 'message-tool-bar-update
|
||||
:group 'message)
|
||||
|
||||
(defcustom message-tool-bar-retro
|
||||
'(;; Old Emacs 21 icon for consistency.
|
||||
(message-send-and-exit "gnus/mail_send")
|
||||
(message-kill-buffer "close")
|
||||
(message-dont-send "cancel")
|
||||
(mml-attach-file "attach" mml-mode-map)
|
||||
(ispell-message "spell")
|
||||
(mml-preview "preview" mml-mode-map)
|
||||
(message-insert-importance-high "gnus/important")
|
||||
(message-insert-importance-low "gnus/unimportant")
|
||||
(message-insert-disposition-notification-to "gnus/receipt"))
|
||||
"List of items for the message tool bar (retro style).
|
||||
|
||||
See `gmm-tool-bar-from-list' for details on the format of the list."
|
||||
:type '(repeat gmm-tool-bar-item)
|
||||
:version "22.1" ;; Gnus 5.10.9
|
||||
:initialize 'custom-initialize-default
|
||||
:set 'message-tool-bar-update
|
||||
:group 'message)
|
||||
|
||||
(defcustom message-tool-bar-zap-list
|
||||
'(new-file open-file dired kill-buffer write-file
|
||||
print-buffer customize help)
|
||||
"List of icon items from the global tool bar.
|
||||
These items are not displayed on the message mode tool bar.
|
||||
|
||||
See `gmm-tool-bar-from-list' for the format of the list."
|
||||
:type 'gmm-tool-bar-zap-list
|
||||
:version "22.1" ;; Gnus 5.10.9
|
||||
:initialize 'custom-initialize-default
|
||||
:set 'message-tool-bar-update
|
||||
:group 'message)
|
||||
|
||||
(defvar image-load-path)
|
||||
|
||||
(defun message-make-tool-bar (&optional force)
|
||||
"Make a message mode tool bar from `message-tool-bar-list'.
|
||||
When FORCE, rebuild the tool bar."
|
||||
(when (and (not (featurep 'xemacs))
|
||||
(boundp 'tool-bar-mode)
|
||||
tool-bar-mode
|
||||
(let ((tool-bar-map (copy-keymap tool-bar-map))
|
||||
(load-path (mm-image-load-path)))
|
||||
;; Zap some items which aren't so relevant and take
|
||||
;; up space.
|
||||
(dolist (key '(print-buffer kill-buffer save-buffer
|
||||
write-file dired open-file))
|
||||
(define-key tool-bar-map (vector key) nil))
|
||||
(message-tool-bar-local-item-from-menu
|
||||
'message-send-and-exit "mail/send" tool-bar-map message-mode-map)
|
||||
(message-tool-bar-local-item-from-menu
|
||||
'message-kill-buffer "close" tool-bar-map message-mode-map)
|
||||
(message-tool-bar-local-item-from-menu
|
||||
'message-dont-send "cancel" tool-bar-map message-mode-map)
|
||||
(message-tool-bar-local-item-from-menu
|
||||
'mml-attach-file "attach" tool-bar-map mml-mode-map)
|
||||
(message-tool-bar-local-item-from-menu
|
||||
'ispell-message "spell" tool-bar-map message-mode-map)
|
||||
(message-tool-bar-local-item-from-menu
|
||||
'mml-preview "preview"
|
||||
tool-bar-map mml-mode-map)
|
||||
(message-tool-bar-local-item-from-menu
|
||||
'message-insert-importance-high "important"
|
||||
tool-bar-map message-mode-map)
|
||||
(message-tool-bar-local-item-from-menu
|
||||
'message-insert-importance-low "unimportant"
|
||||
tool-bar-map message-mode-map)
|
||||
(message-tool-bar-local-item-from-menu
|
||||
'message-insert-disposition-notification-to "receipt"
|
||||
tool-bar-map message-mode-map)
|
||||
tool-bar-map)))))
|
||||
(or (not message-tool-bar-map) force))
|
||||
(setq message-tool-bar-map
|
||||
(let* ((load-path
|
||||
(gmm-image-load-path-for-library "message"
|
||||
"mail/save-draft.xpm"
|
||||
nil t))
|
||||
(image-load-path (cons (car load-path)
|
||||
(when (boundp 'image-load-path)
|
||||
image-load-path))))
|
||||
(gmm-tool-bar-from-list message-tool-bar
|
||||
message-tool-bar-zap-list
|
||||
'message-mode-map))))
|
||||
message-tool-bar-map)
|
||||
|
||||
;;; Group name completion.
|
||||
|
||||
|
|
|
@ -56,6 +56,8 @@
|
|||
;; known to break servers.
|
||||
;; Note: UTF-16 variants are invalid for text parts [RFC 2781],
|
||||
;; so this can't happen :-/.
|
||||
;; PPS: Yes, it can happen if the user specifies UTF-16 in the MML
|
||||
;; markup. - jh.
|
||||
(utf-16 . base64)
|
||||
(utf-16be . base64)
|
||||
(utf-16le . base64))
|
||||
|
@ -250,7 +252,10 @@ decoding. If it is nil, default to `mail-parse-charset'."
|
|||
(mm-decode-content-transfer-encoding encoding type))
|
||||
(when (and (featurep 'mule) ;; Fixme: Wrong test for unibyte session.
|
||||
(not (eq charset 'gnus-decoded)))
|
||||
(let ((coding-system (mm-charset-to-coding-system charset)))
|
||||
(let ((coding-system (mm-charset-to-coding-system
|
||||
;; Allow overwrite using
|
||||
;; `mm-charset-override-alist'.
|
||||
charset nil t)))
|
||||
(if (and (not coding-system)
|
||||
(listp mail-parse-ignored-charsets)
|
||||
(memq 'gnus-unknown mail-parse-ignored-charsets))
|
||||
|
@ -281,7 +286,11 @@ decoding. If it is nil, default to `mail-parse-charset'."
|
|||
(setq charset mail-parse-charset))
|
||||
(or
|
||||
(when (featurep 'mule)
|
||||
(let ((coding-system (mm-charset-to-coding-system charset)))
|
||||
(let ((coding-system (mm-charset-to-coding-system
|
||||
charset
|
||||
;; Allow overwrite using
|
||||
;; `mm-charset-override-alist'.
|
||||
nil t)))
|
||||
(if (and (not coding-system)
|
||||
(listp mail-parse-ignored-charsets)
|
||||
(memq 'gnus-unknown mail-parse-ignored-charsets))
|
||||
|
|
|
@ -177,6 +177,29 @@ system object in XEmacs."
|
|||
;; no-MULE XEmacs:
|
||||
(car (memq cs (mm-get-coding-system-list))))))
|
||||
|
||||
(defun mm-codepage-setup (number &optional alias)
|
||||
"Create a coding system cpNUMBER.
|
||||
The coding system is created using `codepage-setup'. If ALIAS is
|
||||
non-nil, an alias is created and added to
|
||||
`mm-charset-synonym-alist'. If ALIAS is a string, it's used as
|
||||
the alias. Else windows-NUMBER is used."
|
||||
(interactive
|
||||
(let ((completion-ignore-case t)
|
||||
(candidates (cp-supported-codepages)))
|
||||
(list (completing-read "Setup DOS Codepage: (default 437) " candidates
|
||||
nil t nil nil "437"))))
|
||||
(when alias
|
||||
(setq alias (if (stringp alias)
|
||||
(intern alias)
|
||||
(intern (format "windows-%s" number)))))
|
||||
(let* ((cp (intern (format "cp%s" number))))
|
||||
(unless (mm-coding-system-p cp)
|
||||
(codepage-setup number))
|
||||
(when (and alias
|
||||
;; Don't add alias if setup of cp failed.
|
||||
(mm-coding-system-p cp))
|
||||
(add-to-list 'mm-charset-synonym-alist (cons alias cp)))))
|
||||
|
||||
(defvar mm-charset-synonym-alist
|
||||
`(
|
||||
;; Not in XEmacs, but it's not a proper MIME charset anyhow.
|
||||
|
@ -200,8 +223,61 @@ system object in XEmacs."
|
|||
,@(if (and (not (mm-coding-system-p 'windows-1250))
|
||||
(mm-coding-system-p 'cp1250))
|
||||
'((windows-1250 . cp1250)))
|
||||
;; A Microsoft misunderstanding.
|
||||
,@(if (and (not (mm-coding-system-p 'unicode))
|
||||
(mm-coding-system-p 'utf-16-le))
|
||||
'((unicode . utf-16-le)))
|
||||
;; A Microsoft misunderstanding.
|
||||
,@(unless (mm-coding-system-p 'ks_c_5601-1987)
|
||||
(if (mm-coding-system-p 'cp949)
|
||||
'((ks_c_5601-1987 . cp949))
|
||||
'((ks_c_5601-1987 . euc-kr))))
|
||||
)
|
||||
"A mapping from invalid charset names to the real charset names.")
|
||||
"A mapping from unknown or invalid charset names to the real charset names.")
|
||||
|
||||
(defcustom mm-charset-override-alist
|
||||
`((iso-8859-1 . windows-1252))
|
||||
"A mapping from undesired charset names to their replacement.
|
||||
|
||||
You may add pairs like (iso-8859-1 . windows-1252) here,
|
||||
i.e. treat iso-8859-1 as windows-1252. windows-1252 is a
|
||||
superset of iso-8859-1."
|
||||
:type '(list (set :inline t
|
||||
(const (iso-8859-1 . windows-1252))
|
||||
(const (undecided . windows-1252)))
|
||||
(repeat :inline t
|
||||
:tag "Other options"
|
||||
(cons (symbol :tag "From charset")
|
||||
(symbol :tag "To charset"))))
|
||||
:version "23.0" ;; No Gnus
|
||||
:group 'mime)
|
||||
|
||||
(defcustom mm-charset-eval-alist
|
||||
(if (featurep 'xemacs)
|
||||
nil ;; I don't know what would be useful for XEmacs.
|
||||
'(;; Emacs 21 offers 1250 1251 1253 1257. Emacs 22 provides autoloads for
|
||||
;; 1250-1258 (i.e. `mm-codepage-setup' does nothing).
|
||||
(windows-1250 . (mm-codepage-setup 1250 t))
|
||||
(windows-1251 . (mm-codepage-setup 1251 t))
|
||||
(windows-1253 . (mm-codepage-setup 1253 t))
|
||||
(windows-1257 . (mm-codepage-setup 1257 t))))
|
||||
"An alist of (CHARSET . FORM) pairs.
|
||||
If an article is encoded in an unknown CHARSET, FORM is
|
||||
evaluated. This allows to load additional libraries providing
|
||||
charsets on demand. If supported by your Emacs version, you
|
||||
could use `autoload-coding-system' here."
|
||||
:version "23.0" ;; No Gnus
|
||||
:type '(list (set :inline t
|
||||
(const (windows-1250 . (mm-codepage-setup 1250 t)))
|
||||
(const (windows-1251 . (mm-codepage-setup 1251 t)))
|
||||
(const (windows-1253 . (mm-codepage-setup 1253 t)))
|
||||
(const (windows-1257 . (mm-codepage-setup 1257 t)))
|
||||
(const (cp850 . (mm-codepage-setup 850 nil))))
|
||||
(repeat :inline t
|
||||
:tag "Other options"
|
||||
(cons (symbol :tag "charset")
|
||||
(symbol :tag "form"))))
|
||||
:group 'mime)
|
||||
|
||||
(defvar mm-binary-coding-system
|
||||
(cond
|
||||
|
@ -396,11 +472,17 @@ mail with multiple parts is preferred to sending a Unicode one.")
|
|||
(pop alist))
|
||||
out)))
|
||||
|
||||
(defun mm-charset-to-coding-system (charset &optional lbt)
|
||||
(defun mm-charset-to-coding-system (charset &optional lbt
|
||||
allow-override)
|
||||
"Return coding-system corresponding to CHARSET.
|
||||
CHARSET is a symbol naming a MIME charset.
|
||||
If optional argument LBT (`unix', `dos' or `mac') is specified, it is
|
||||
used as the line break code type of the coding system."
|
||||
used as the line break code type of the coding system.
|
||||
|
||||
If ALLOW-OVERRIDE is given, use `mm-charset-override-alist' to
|
||||
map undesired charset names to their replacement. This should
|
||||
only be used for decoding, not for encoding."
|
||||
;; OVERRIDE is used (only) in `mm-decode-body' and `mm-decode-string'.
|
||||
(when (stringp charset)
|
||||
(setq charset (intern (downcase charset))))
|
||||
(when lbt
|
||||
|
@ -412,6 +494,11 @@ used as the line break code type of the coding system."
|
|||
((or (null (mm-get-coding-system-list))
|
||||
(not (fboundp 'coding-system-get)))
|
||||
charset)
|
||||
;; Check override list quite early. Should only used for decoding, not for
|
||||
;; encoding!
|
||||
((and allow-override
|
||||
(let ((cs (cdr (assq charset mm-charset-override-alist))))
|
||||
(and cs (mm-coding-system-p cs) cs))))
|
||||
;; ascii
|
||||
((eq charset 'us-ascii)
|
||||
'ascii)
|
||||
|
@ -424,9 +511,27 @@ used as the line break code type of the coding system."
|
|||
;;; (eq charset (coding-system-get charset 'mime-charset))
|
||||
)
|
||||
charset)
|
||||
;; Eval expressions from `mm-charset-eval-alist'
|
||||
((let* ((el (assq charset mm-charset-eval-alist))
|
||||
(cs (car el))
|
||||
(form (cdr el)))
|
||||
(and cs
|
||||
form
|
||||
(prog2
|
||||
;; Avoid errors...
|
||||
(condition-case nil (eval form) (error nil))
|
||||
;; (message "Failed to eval `%s'" form))
|
||||
(mm-coding-system-p cs)
|
||||
(message "Added charset `%s' via `mm-charset-eval-alist'" cs))
|
||||
cs)))
|
||||
;; Translate invalid charsets.
|
||||
((let ((cs (cdr (assq charset mm-charset-synonym-alist))))
|
||||
(and cs (mm-coding-system-p cs) cs)))
|
||||
(and cs
|
||||
(mm-coding-system-p cs)
|
||||
;; (message
|
||||
;; "Using synonym `%s' from `mm-charset-synonym-alist' for `%s'"
|
||||
;; cs charset)
|
||||
cs)))
|
||||
;; Last resort: search the coding system list for entries which
|
||||
;; have the right mime-charset in case the canonical name isn't
|
||||
;; defined (though it should be).
|
||||
|
@ -438,6 +543,11 @@ used as the line break code type of the coding system."
|
|||
(eq charset (or (coding-system-get c :mime-charset)
|
||||
(coding-system-get c 'mime-charset))))
|
||||
(setq cs c)))
|
||||
(unless cs
|
||||
;; Warn the user about unknown charset:
|
||||
(if (fboundp 'gnus-message)
|
||||
(gnus-message 7 "Unknown charset: %s" charset)
|
||||
(message "Unknown charset: %s" charset)))
|
||||
cs))))
|
||||
|
||||
(defsubst mm-replace-chars-in-string (string from to)
|
||||
|
@ -1001,7 +1111,8 @@ If SUFFIX is non-nil, add that at the end of the file name."
|
|||
(defun mm-detect-mime-charset-region (start end)
|
||||
"Detect MIME charset of the text in the region between START and END."
|
||||
(let ((cs (mm-detect-coding-region start end)))
|
||||
(coding-system-get cs 'mime-charset)))
|
||||
(or (coding-system-get cs :mime-charset)
|
||||
(coding-system-get cs 'mime-charset))))
|
||||
(defun mm-detect-mime-charset-region (start end)
|
||||
"Detect MIME charset of the text in the region between START and END."
|
||||
(let ((cs (mm-detect-coding-region start end)))
|
||||
|
|
|
@ -197,6 +197,7 @@ Commands:
|
|||
(view-mode)
|
||||
(make-local-variable 'view-no-disable-on-exit)
|
||||
(setq view-no-disable-on-exit t)
|
||||
(setq view-exit-action (lambda (buffer) (delete-window)))
|
||||
(run-mode-hooks 'help-mode-hook))
|
||||
|
||||
;;;###autoload
|
||||
|
|
|
@ -139,7 +139,11 @@ and showing the image as an image."
|
|||
;; was inserted
|
||||
(let* ((image
|
||||
(if (and (buffer-file-name)
|
||||
(not (buffer-modified-p)))
|
||||
(not (buffer-modified-p))
|
||||
(not (and (boundp 'archive-superior-buffer)
|
||||
archive-superior-buffer))
|
||||
(not (and (boundp 'tar-superior-buffer)
|
||||
tar-superior-buffer)))
|
||||
(progn (clear-image-cache)
|
||||
(create-image (buffer-file-name)))
|
||||
(create-image
|
||||
|
|
|
@ -208,18 +208,13 @@ during matching.")
|
|||
|
||||
;;;###autoload
|
||||
(defvar imenu-create-index-function 'imenu-default-create-index-function
|
||||
"The function to use for creating a buffer index.
|
||||
"The function to use for creating an index alist of the current buffer.
|
||||
|
||||
It should be a function that takes no arguments and returns an index
|
||||
of the current buffer as an alist.
|
||||
It should be a function that takes no arguments and returns
|
||||
an index alist of the current buffer. The function is
|
||||
called within a `save-excursion'.
|
||||
|
||||
Simple elements in the alist look like (INDEX-NAME . INDEX-POSITION).
|
||||
Special elements look like (INDEX-NAME INDEX-POSITION FUNCTION ARGUMENTS...).
|
||||
A nested sub-alist element looks like (INDEX-NAME SUB-ALIST).
|
||||
The function `imenu--subalist-p' tests an element and returns t
|
||||
if it is a sub-alist.
|
||||
|
||||
This function is called within a `save-excursion'.")
|
||||
See `imenu--index-alist' for the format of the buffer index alist.")
|
||||
;;;###autoload
|
||||
(make-variable-buffer-local 'imenu-create-index-function)
|
||||
|
||||
|
@ -431,15 +426,27 @@ Don't move point."
|
|||
;; The latest buffer index.
|
||||
;; Buffer local.
|
||||
(defvar imenu--index-alist nil
|
||||
"The buffer index computed for this buffer in Imenu.
|
||||
Simple elements in the alist look like (INDEX-NAME . INDEX-POSITION).
|
||||
Special elements look like (INDEX-NAME INDEX-POSITION FUNCTION ARGUMENTS...).
|
||||
A nested sub-alist element looks like (INDEX-NAME SUB-ALIST).")
|
||||
"The buffer index alist computed for this buffer in Imenu.
|
||||
|
||||
Simple elements in the alist look like (INDEX-NAME . POSITION).
|
||||
POSITION is the buffer position of the item; to go to the item
|
||||
is simply to move point to that position.
|
||||
|
||||
Special elements look like (INDEX-NAME POSITION FUNCTION ARGUMENTS...).
|
||||
To \"go to\" a special element means applying FUNCTION
|
||||
to INDEX-NAME, POSITION, and the ARGUMENTS.
|
||||
|
||||
A nested sub-alist element looks like (INDEX-NAME SUB-ALIST).
|
||||
The function `imenu--subalist-p' tests an element and returns t
|
||||
if it is a sub-alist.
|
||||
|
||||
There is one simple element with negative POSITION; selecting that
|
||||
element recalculates the buffer's index alist.")
|
||||
|
||||
(make-variable-buffer-local 'imenu--index-alist)
|
||||
|
||||
(defvar imenu--last-menubar-index-alist nil
|
||||
"The latest buffer index used to update the menu bar menu.")
|
||||
"The latest buffer index alist used to update the menu bar menu.")
|
||||
|
||||
(make-variable-buffer-local 'imenu--last-menubar-index-alist)
|
||||
|
||||
|
@ -547,19 +554,12 @@ A nested sub-alist element looks like (INDEX-NAME SUB-ALIST).")
|
|||
|
||||
|
||||
(defun imenu--make-index-alist (&optional noerror)
|
||||
"Create an index-alist for the definitions in the current buffer.
|
||||
|
||||
"Create an index alist for the definitions in the current buffer.
|
||||
This works by using the hook function `imenu-create-index-function'.
|
||||
Report an error if the list is empty unless NOERROR is supplied and
|
||||
non-nil.
|
||||
|
||||
Simple elements in the alist look like (INDEX-NAME . INDEX-POSITION).
|
||||
Special elements look like (INDEX-NAME FUNCTION ARGUMENTS...).
|
||||
A nested sub-alist element looks like (INDEX-NAME SUB-ALIST).
|
||||
The function `imenu--subalist-p' tests an element and returns t
|
||||
if it is a sub-alist.
|
||||
|
||||
There is one simple element with negative POSITION; that's intended
|
||||
as a way for the user to ask to recalculate the buffer's index alist."
|
||||
See `imenu--index-alist' for the format of the index alist."
|
||||
(or (and imenu--index-alist
|
||||
(or (not imenu-auto-rescan)
|
||||
(and imenu-auto-rescan
|
||||
|
@ -657,11 +657,15 @@ and speed-up matching.")
|
|||
(make-variable-buffer-local 'imenu-syntax-alist)
|
||||
|
||||
(defun imenu-default-create-index-function ()
|
||||
"*Wrapper for index searching functions.
|
||||
"*Default function to create an index alist of the current buffer.
|
||||
|
||||
Moves point to end of buffer and then repeatedly calls
|
||||
The most general method is to move point to end of buffer, then repeatedly call
|
||||
`imenu-prev-index-position-function' and `imenu-extract-index-name-function'.
|
||||
Their results are gathered into an index alist."
|
||||
All the results returned by the latter are gathered into an index alist.
|
||||
This method is used if those two variables are non-nil.
|
||||
|
||||
The alternate method, which is the one most often used, is to call
|
||||
`imenu--generic-function' with `imenu-generic-expression' as argument."
|
||||
;; These should really be done by setting imenu-create-index-function
|
||||
;; in these major modes. But save that change for later.
|
||||
(cond ((and imenu-prev-index-position-function
|
||||
|
@ -687,27 +691,6 @@ Their results are gathered into an index alist."
|
|||
(t
|
||||
(error "This buffer cannot use `imenu-default-create-index-function'"))))
|
||||
|
||||
;; Not used and would require cl at run time
|
||||
;; (defun imenu--flatten-index-alist (index-alist &optional concat-names prefix)
|
||||
;; ;; Takes a nested INDEX-ALIST and returns a flat index alist.
|
||||
;; ;; If optional CONCAT-NAMES is non-nil, then a nested index has its
|
||||
;; ;; name and a space concatenated to the names of the children.
|
||||
;; ;; Third argument PREFIX is for internal use only.
|
||||
;; (mapcan
|
||||
;; (lambda (item)
|
||||
;; (let* ((name (car item))
|
||||
;; (pos (cdr item))
|
||||
;; (new-prefix (and concat-names
|
||||
;; (if prefix
|
||||
;; (concat prefix imenu-level-separator name)
|
||||
;; name))))
|
||||
;; (cond
|
||||
;; ((or (markerp pos) (numberp pos))
|
||||
;; (list (cons new-prefix pos)))
|
||||
;; (t
|
||||
;; (imenu--flatten-index-alist pos new-prefix)))))
|
||||
;; index-alist))
|
||||
|
||||
;;;
|
||||
;;; Generic index gathering function.
|
||||
;;;
|
||||
|
@ -724,7 +707,7 @@ for modes which use `imenu--generic-function'. If it is not set, but
|
|||
;; This function can be called with quitting disabled,
|
||||
;; so it needs to be careful never to loop!
|
||||
(defun imenu--generic-function (patterns)
|
||||
"Return an index of the current buffer as an alist.
|
||||
"Return an index alist of the current buffer based on PATTERNS.
|
||||
|
||||
PATTERNS is an alist with elements that look like this:
|
||||
(MENU-TITLE REGEXP INDEX)
|
||||
|
@ -732,9 +715,8 @@ or like this:
|
|||
(MENU-TITLE REGEXP INDEX FUNCTION ARGUMENTS...)
|
||||
with zero or more ARGUMENTS. The former format creates a simple
|
||||
element in the index alist when it matches; the latter creates a
|
||||
special element of the form (NAME POSITION-MARKER FUNCTION
|
||||
ARGUMENTS...) with FUNCTION and ARGUMENTS copied from
|
||||
`imenu-generic-expression'.
|
||||
special element of the form (INDEX-NAME POSITION-MARKER FUNCTION
|
||||
ARGUMENTS...) with FUNCTION and ARGUMENTS copied from PATTERNS.
|
||||
|
||||
MENU-TITLE is a string used as the title for the submenu or nil
|
||||
if the entries are not nested.
|
||||
|
|
|
@ -1994,7 +1994,7 @@ is non-nil if the user has supplied the password interactively.
|
|||
(re-search-backward
|
||||
rmail-mime-charset-pattern
|
||||
start t))))
|
||||
(intern (downcase (match-string 1))))))
|
||||
(intern (downcase (match-string 2))))))
|
||||
(rmail-decode-region start (point) mime-charset)))))
|
||||
;; Add an X-Coding-System: header if we don't have one.
|
||||
(save-excursion
|
||||
|
@ -2155,7 +2155,7 @@ is non-nil if the user has supplied the password interactively.
|
|||
(re-search-backward
|
||||
rmail-mime-charset-pattern
|
||||
start t))))
|
||||
(intern (downcase (match-string 1))))))
|
||||
(intern (downcase (match-string 2))))))
|
||||
(rmail-decode-region start (point) mime-charset)))
|
||||
(save-excursion
|
||||
(goto-char start)
|
||||
|
|
|
@ -1,3 +1,83 @@
|
|||
2006-04-20 Bill Wohler <wohler@newt.com>
|
||||
|
||||
* mh-tool-bar.el (image-load-path): Define to shush compiler.
|
||||
(mh-buffer-exists-p): Move inside mh-do-in-gnu-emacs since it
|
||||
isn't used outside of it.
|
||||
(mh-tool-bar-folder-buttons-init,
|
||||
mh-tool-bar-letter-buttons-init): Update load-path/image-load-path
|
||||
before setting buttons. This code used to be in
|
||||
mh-folder-mode/mh-letter-mode but this was the wrong place since
|
||||
mh-tool-bar-*-buttons-init can also be called when customizing the
|
||||
buttons.
|
||||
(mh-tool-bar-update): New function which updates tool-bar-map in
|
||||
all of the MH-E buffers after customizing the buttons (closes SF
|
||||
#1452718).
|
||||
(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-tool-bar-map instead.
|
||||
(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-tool-bar-map instead.
|
||||
(image-load-path): Delete. No longer used.
|
||||
(mh-letter-mode): Moved setting of image-load-path into
|
||||
mh-tool-bar-letter-buttons-init.
|
||||
|
||||
* mh-seq.el (mh-narrow-to-seq, mh-widen): Use with-current-buffer
|
||||
instead of set-buffer.
|
||||
|
||||
2006-04-19 Bill Wohler <wohler@newt.com>
|
||||
|
||||
* mh-tool-bar.el (mh-tool-bar-define): Fix enable-expr so that one
|
||||
can permanently disable a button (such as a separator) with nil.
|
||||
|
||||
2006-04-18 Bill Wohler <wohler@newt.com>
|
||||
|
||||
* 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
|
||||
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
|
||||
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.
|
||||
|
||||
2006-04-17 Bill Wohler <wohler@newt.com>
|
||||
|
||||
* mh-comp.el (mh-insert-x-mailer): Strip build number from
|
||||
version in X-Mailer field (closes SF #1466481).
|
||||
|
||||
* mh-acros.el (mh-defun-compat): Rename to defun-mh in order that
|
||||
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-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.
|
||||
|
||||
* mh-e.el, mh-compat.el, mh-gnus.el: Use the new names (closes SF
|
||||
#1472029).
|
||||
|
||||
* 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
|
||||
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
|
||||
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).
|
||||
|
||||
2006-04-15 Bill Wohler <wohler@newt.com>
|
||||
|
||||
* mh-compat.el (mh-font-lock-add-keywords): Fix typo in docstring.
|
||||
|
@ -147,7 +227,7 @@
|
|||
(mh-scan-line-formats, mh-search, mh-sending-mail)
|
||||
(mh-sequences, mh-show, mh-speedbar, mh-thread, mh-tool-bar)
|
||||
(mh-hooks, mh-faces): Add :package-version keyword to these
|
||||
groups.
|
||||
groups (closes SF #1452724).
|
||||
(mh-alias-completion-ignore-case-flag)
|
||||
(mh-alias-expand-aliases-flag, mh-alias-flash-on-comma)
|
||||
(mh-alias-insert-file, mh-alias-insertion-location)
|
||||
|
@ -193,7 +273,7 @@
|
|||
(mh-show-use-xface-flag, mh-store-default-directory)
|
||||
(mh-summary-height, mh-speed-update-interval)
|
||||
(mh-show-threads-flag, mh-tool-bar-search-function): Add
|
||||
:package-version keyword to these options.
|
||||
:package-version keyword to these options (closes SF #1452724).
|
||||
(mh-after-commands-processed-hook)
|
||||
(mh-alias-reloaded-hook, mh-before-commands-processed-hook)
|
||||
(mh-before-quit-hook, mh-before-send-letter-hook)
|
||||
|
@ -204,7 +284,7 @@
|
|||
(mh-mh-to-mime-hook, mh-search-mode-hook, mh-quit-hook)
|
||||
(mh-refile-msg-hook, mh-show-hook, mh-show-mode-hook)
|
||||
(mh-unseen-updated-hook): Add :package-version keyword to these
|
||||
hooks.
|
||||
hooks (closes SF #1452724).
|
||||
(mh-min-colors-defined-flag)
|
||||
(mh-folder-address, mh-folder-body, mh-folder-cur-msg-number)
|
||||
(mh-folder-date, mh-folder-deleted, mh-folder-followup)
|
||||
|
@ -218,10 +298,10 @@
|
|||
(mh-speedbar-folder, mh-speedbar-folder-with-unseen-messages)
|
||||
(mh-speedbar-selected-folder)
|
||||
(mh-speedbar-selected-folder-with-unseen-messages): : Add
|
||||
:package-version keyword to these faces.
|
||||
:package-version keyword to these faces (closes SF #1452724).
|
||||
|
||||
* mh-tool-bar.el (mh-tool-bar-define): Added commented-out
|
||||
:package-version keywords.
|
||||
:package-version keywords (closes SF #1452724).
|
||||
|
||||
2006-03-28 Bill Wohler <wohler@newt.com>
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ loads \"cl\" appropriately."
|
|||
(funcall ',function ,@args))))
|
||||
|
||||
;;;###mh-autoload
|
||||
(defmacro mh-defun-compat (name function arg-list &rest body)
|
||||
(defmacro defun-mh (name function arg-list &rest body)
|
||||
"Create function NAME.
|
||||
If FUNCTION exists, then NAME becomes an alias for FUNCTION.
|
||||
Otherwise, create function NAME with ARG-LIST and BODY."
|
||||
|
@ -90,10 +90,10 @@ Otherwise, create function NAME with ARG-LIST and BODY."
|
|||
(if defined-p
|
||||
`(defalias ',name ',function)
|
||||
`(defun ,name ,arg-list ,@body))))
|
||||
(put 'mh-defun-compat 'lisp-indent-function 'defun)
|
||||
(put 'defun-mh 'lisp-indent-function 'defun)
|
||||
|
||||
;;;###mh-autoload
|
||||
(defmacro mh-defmacro-compat (name macro arg-list &rest body)
|
||||
(defmacro defmacro-mh (name macro arg-list &rest body)
|
||||
"Create macro NAME.
|
||||
If MACRO exists, then NAME becomes an alias for MACRO.
|
||||
Otherwise, create macro NAME with ARG-LIST and BODY."
|
||||
|
@ -101,7 +101,7 @@ Otherwise, create macro NAME with ARG-LIST and BODY."
|
|||
(if defined-p
|
||||
`(defalias ',name ',macro)
|
||||
`(defmacro ,name ,arg-list ,@body))))
|
||||
(put 'mh-defmacro-compat 'lisp-indent-function 'defun)
|
||||
(put 'defmacro-mh 'lisp-indent-function 'defun)
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -912,7 +912,10 @@ The versions of MH-E, Emacs, and MH are shown."
|
|||
(format "MH-E %s; %s; %sEmacs %s"
|
||||
mh-version mh-variant-in-use
|
||||
(if mh-xemacs-flag "X" "GNU ")
|
||||
(cond ((not mh-xemacs-flag) emacs-version)
|
||||
(cond ((not mh-xemacs-flag)
|
||||
(string-match "[0-9]+\\.[0-9]+\\(\\.[0-9]+\\)?"
|
||||
emacs-version)
|
||||
(match-string 0 emacs-version))
|
||||
((string-match "[0-9.]*\\( +\([ a-z]+[0-9]+\)\\)?"
|
||||
emacs-version)
|
||||
(match-string 0 emacs-version))
|
||||
|
|
|
@ -62,7 +62,7 @@ Simulate NOERROR argument in XEmacs which lacks it."
|
|||
(load filename noerror t)
|
||||
(load (format "%s" feature) noerror t)))))
|
||||
|
||||
(mh-defun-compat mh-assoc-string assoc-string (key list case-fold)
|
||||
(defun-mh mh-assoc-string assoc-string (key list case-fold)
|
||||
"Like `assoc' but specifically for strings.
|
||||
Case is ignored if CASE-FOLD is non-nil.
|
||||
This function is used by Emacs versions that lack `assoc-string',
|
||||
|
@ -77,7 +77,7 @@ introduced in Emacs 22."
|
|||
'cancel-timer
|
||||
'delete-itimer))
|
||||
|
||||
(mh-defun-compat mh-display-color-cells display-color-cells (&optional display)
|
||||
(defun-mh mh-display-color-cells display-color-cells (&optional display)
|
||||
"Return the number of color cells supported by DISPLAY.
|
||||
This function is used by XEmacs to return 2 when
|
||||
`device-color-cells' returns nil. This happens when compiling or
|
||||
|
@ -115,12 +115,12 @@ introduced in Emacs 22."
|
|||
`(face-background ,face ,frame)
|
||||
`(face-background ,face ,frame ,inherit)))
|
||||
|
||||
(mh-defun-compat mh-font-lock-add-keywords font-lock-add-keywords
|
||||
(defun-mh mh-font-lock-add-keywords font-lock-add-keywords
|
||||
(mode keywords &optional how)
|
||||
"XEmacs does not have `font-lock-add-keywords'.
|
||||
This function returns nil on that system.")
|
||||
|
||||
(mh-defun-compat mh-image-load-path-for-library
|
||||
(defun-mh mh-image-load-path-for-library
|
||||
image-load-path-for-library (library image &optional path no-error)
|
||||
"Return a suitable search path for images used by LIBRARY.
|
||||
|
||||
|
@ -215,7 +215,7 @@ compatibility with versions of Emacs that lack the variable
|
|||
(nconc (list image-directory)
|
||||
(delete image-directory (copy-sequence (or path load-path))))))
|
||||
|
||||
(mh-defun-compat mh-image-search-load-path
|
||||
(defun-mh mh-image-search-load-path
|
||||
image-search-load-path (file &optional path)
|
||||
"Emacs 21 and XEmacs don't have `image-search-load-path'.
|
||||
This function returns nil on those systems."
|
||||
|
@ -234,13 +234,13 @@ This function returns nil on those systems."
|
|||
'point-at-eol))
|
||||
|
||||
(mh-require 'mailabbrev nil t)
|
||||
(mh-defun-compat mh-mail-abbrev-make-syntax-table
|
||||
(defun-mh mh-mail-abbrev-make-syntax-table
|
||||
mail-abbrev-make-syntax-table ()
|
||||
"Emacs 21 and XEmacs don't have `mail-abbrev-make-syntax-table'.
|
||||
This function returns nil on those systems."
|
||||
nil)
|
||||
|
||||
(mh-defun-compat mh-match-string-no-properties
|
||||
(defun-mh mh-match-string-no-properties
|
||||
match-string-no-properties (num &optional string)
|
||||
"Return string of text matched by last search, without text properties.
|
||||
This function is used by XEmacs that lacks `match-string-no-properties'.
|
||||
|
@ -249,7 +249,7 @@ The argument STRING is ignored."
|
|||
(buffer-substring-no-properties
|
||||
(match-beginning num) (match-end num)))
|
||||
|
||||
(mh-defun-compat mh-replace-regexp-in-string replace-regexp-in-string
|
||||
(defun-mh mh-replace-regexp-in-string replace-regexp-in-string
|
||||
(regexp rep string &optional fixedcase literal subexp start)
|
||||
"Replace REGEXP with REP everywhere in STRING and return result.
|
||||
This function is used by XEmacs that lacks `replace-regexp-in-string'.
|
||||
|
@ -269,7 +269,7 @@ The arguments FIXEDCASE, SUBEXP, and START, used by
|
|||
"A list of characters that are _NOT_ reserved in the URL spec.
|
||||
This is taken from RFC 2396."))
|
||||
|
||||
(mh-defun-compat mh-url-hexify-string url-hexify-string (str)
|
||||
(defun-mh mh-url-hexify-string url-hexify-string (str)
|
||||
"Escape characters in a string.
|
||||
This is a copy of `url-hexify-string' from url-util.el in Emacs
|
||||
22; needed by Emacs 21."
|
||||
|
@ -283,7 +283,7 @@ This is a copy of `url-hexify-string' from url-util.el in Emacs
|
|||
(char-to-string char)))
|
||||
str ""))
|
||||
|
||||
(mh-defun-compat mh-view-mode-enter
|
||||
(defun-mh mh-view-mode-enter
|
||||
view-mode-enter (&optional return-to exit-action)
|
||||
"Enter View mode.
|
||||
This function is used by XEmacs that lacks `view-mode-enter'.
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -524,11 +524,8 @@ font-lock is done highlighting.")
|
|||
;; Shush compiler.
|
||||
(defvar desktop-save-buffer)
|
||||
(defvar font-lock-auto-fontify)
|
||||
(defvar image-load-path)
|
||||
(defvar font-lock-defaults) ; XEmacs
|
||||
|
||||
(defvar mh-folder-buttons-init-flag nil)
|
||||
|
||||
;; Ensure new buffers won't get this mode if default-major-mode is nil.
|
||||
(put 'mh-folder-mode 'mode-class 'special)
|
||||
|
||||
|
@ -590,13 +587,8 @@ perform the operation on all messages in that region.
|
|||
|
||||
\\{mh-folder-mode-map}"
|
||||
(mh-do-in-gnu-emacs
|
||||
(unless mh-folder-buttons-init-flag
|
||||
(let* ((load-path (mh-image-load-path-for-library "mh-e" "mh-logo.xpm"))
|
||||
(image-load-path (cons (car load-path)
|
||||
(when (boundp 'image-load-path)
|
||||
image-load-path))))
|
||||
(mh-tool-bar-folder-buttons-init)
|
||||
(setq mh-folder-buttons-init-flag t)))
|
||||
(unless mh-folder-tool-bar-map
|
||||
(mh-tool-bar-folder-buttons-init))
|
||||
(set (make-local-variable 'tool-bar-map) mh-folder-tool-bar-map))
|
||||
(mh-do-in-xemacs
|
||||
(mh-tool-bar-init :folder))
|
||||
|
|
|
@ -39,19 +39,19 @@
|
|||
(mh-require 'mml nil t)
|
||||
|
||||
;; Copy of function from gnus-util.el.
|
||||
(mh-defun-compat mh-gnus-local-map-property gnus-local-map-property (map)
|
||||
(defun-mh mh-gnus-local-map-property gnus-local-map-property (map)
|
||||
"Return a list suitable for a text property list specifying keymap MAP."
|
||||
(cond (mh-xemacs-flag (list 'keymap map))
|
||||
((>= emacs-major-version 21) (list 'keymap map))
|
||||
(t (list 'local-map map))))
|
||||
|
||||
;; Copy of function from mm-decode.el.
|
||||
(mh-defun-compat mh-mm-merge-handles mm-merge-handles (handles1 handles2)
|
||||
(defun-mh mh-mm-merge-handles mm-merge-handles (handles1 handles2)
|
||||
(append (if (listp (car handles1)) handles1 (list handles1))
|
||||
(if (listp (car handles2)) handles2 (list handles2))))
|
||||
|
||||
;; Copy of function from mm-decode.el.
|
||||
(mh-defun-compat mh-mm-set-handle-multipart-parameter
|
||||
(defun-mh mh-mm-set-handle-multipart-parameter
|
||||
mm-set-handle-multipart-parameter (handle parameter value)
|
||||
;; HANDLE could be a CTL.
|
||||
(if handle
|
||||
|
@ -59,7 +59,7 @@
|
|||
(car handle))))
|
||||
|
||||
;; Copy of function from mm-view.el.
|
||||
(mh-defun-compat mh-mm-inline-text-vcard mm-inline-text-vcard (handle)
|
||||
(defun-mh mh-mm-inline-text-vcard mm-inline-text-vcard (handle)
|
||||
(let (buffer-read-only)
|
||||
(mm-insert-inline
|
||||
handle
|
||||
|
@ -73,17 +73,17 @@
|
|||
|
||||
;; Function from mm-decode.el used in PGP messages. Just define it with older
|
||||
;; Gnus to avoid compiler warning.
|
||||
(mh-defun-compat mh-mm-possibly-verify-or-decrypt
|
||||
(defun-mh mh-mm-possibly-verify-or-decrypt
|
||||
mm-possibly-verify-or-decrypt (parts ctl)
|
||||
nil)
|
||||
|
||||
;; Copy of macro in mm-decode.el.
|
||||
(mh-defmacro-compat mh-mm-handle-multipart-ctl-parameter
|
||||
(defmacro-mh mh-mm-handle-multipart-ctl-parameter
|
||||
mm-handle-multipart-ctl-parameter (handle parameter)
|
||||
`(get-text-property 0 ,parameter (car ,handle)))
|
||||
|
||||
;; Copy of function in mm-decode.el.
|
||||
(mh-defun-compat mh-mm-readable-p mm-readable-p (handle)
|
||||
(defun-mh mh-mm-readable-p mm-readable-p (handle)
|
||||
"Say whether the content of HANDLE is readable."
|
||||
(and (< (with-current-buffer (mm-handle-buffer handle)
|
||||
(buffer-size)) 10000)
|
||||
|
@ -93,7 +93,7 @@
|
|||
(not (mh-mm-long-lines-p 76))))))
|
||||
|
||||
;; Copy of function in mm-bodies.el.
|
||||
(mh-defun-compat mh-mm-long-lines-p mm-long-lines-p (length)
|
||||
(defun-mh mh-mm-long-lines-p mm-long-lines-p (length)
|
||||
"Say whether any of the lines in the buffer is longer than LENGTH."
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
|
@ -105,21 +105,21 @@
|
|||
(and (> (current-column) length)
|
||||
(current-column))))
|
||||
|
||||
(mh-defun-compat mh-mm-keep-viewer-alive-p mm-keep-viewer-alive-p (handle)
|
||||
(defun-mh mh-mm-keep-viewer-alive-p mm-keep-viewer-alive-p (handle)
|
||||
;; Released Gnus doesn't keep handles associated with externally displayed
|
||||
;; MIME parts. So this will always return nil.
|
||||
nil)
|
||||
|
||||
(mh-defun-compat mh-mm-destroy-parts mm-destroy-parts (list)
|
||||
(defun-mh mh-mm-destroy-parts mm-destroy-parts (list)
|
||||
"Older versions of Emacs don't have this function."
|
||||
nil)
|
||||
|
||||
(mh-defun-compat mh-mm-uu-dissect-text-parts mm-uu-dissect-text-parts (handles)
|
||||
(defun-mh mh-mm-uu-dissect-text-parts mm-uu-dissect-text-parts (handles)
|
||||
"Emacs 21 and XEmacs don't have this function."
|
||||
nil)
|
||||
|
||||
;; Copy of function in mml.el.
|
||||
(mh-defun-compat mh-mml-minibuffer-read-disposition
|
||||
(defun-mh mh-mml-minibuffer-read-disposition
|
||||
mml-minibuffer-read-disposition (type &optional default)
|
||||
(unless default (setq default
|
||||
(if (and (string-match "\\`text/" type)
|
||||
|
|
|
@ -275,10 +275,7 @@ searching for `mh-mail-header-separator' in the buffer."
|
|||
|
||||
;;; MH-Letter Mode
|
||||
|
||||
(defvar mh-letter-buttons-init-flag nil)
|
||||
|
||||
;; Shush compiler.
|
||||
(defvar image-load-path)
|
||||
(defvar font-lock-defaults) ; XEmacs
|
||||
|
||||
;; Ensure new buffers won't get this mode if default-major-mode is nil.
|
||||
|
@ -313,13 +310,8 @@ order).
|
|||
(make-local-variable 'mh-sent-from-folder)
|
||||
(make-local-variable 'mh-sent-from-msg)
|
||||
(mh-do-in-gnu-emacs
|
||||
(unless mh-letter-buttons-init-flag
|
||||
(let* ((load-path (mh-image-load-path-for-library "mh-e" "mh-logo.xpm"))
|
||||
(image-load-path (cons (car load-path)
|
||||
(when (boundp 'image-load-path)
|
||||
image-load-path))))
|
||||
(mh-tool-bar-letter-buttons-init)
|
||||
(setq mh-letter-buttons-init-flag t)))
|
||||
(unless mh-letter-tool-bar-map
|
||||
(mh-tool-bar-letter-buttons-init))
|
||||
(set (make-local-variable 'tool-bar-map) mh-letter-tool-bar-map))
|
||||
(mh-do-in-xemacs
|
||||
(mh-tool-bar-init :letter))
|
||||
|
|
|
@ -238,8 +238,7 @@ When you want to widen the view to all your messages again, use
|
|||
(set (make-local-variable 'tool-bar-map)
|
||||
mh-folder-seq-tool-bar-map)
|
||||
(when (buffer-live-p (get-buffer mh-show-buffer))
|
||||
(save-excursion
|
||||
(set-buffer (get-buffer mh-show-buffer))
|
||||
(with-current-buffer mh-show-buffer
|
||||
(set (make-local-variable 'tool-bar-map)
|
||||
mh-show-seq-tool-bar-map))))
|
||||
(push 'widen mh-view-ops)))
|
||||
|
@ -371,8 +370,7 @@ remove all limits and sequence restrictions."
|
|||
(when (and (null mh-folder-view-stack) (boundp 'tool-bar-mode) tool-bar-mode)
|
||||
(set (make-local-variable 'tool-bar-map) mh-folder-tool-bar-map)
|
||||
(when (buffer-live-p (get-buffer mh-show-buffer))
|
||||
(save-excursion
|
||||
(set-buffer (get-buffer mh-show-buffer))
|
||||
(with-current-buffer mh-show-buffer
|
||||
(set (make-local-variable 'tool-bar-map) mh-show-tool-bar-map)))))
|
||||
|
||||
|
||||
|
|
|
@ -83,6 +83,9 @@ When INCLUDE-FLAG is non-nil, include message body being replied to."
|
|||
|
||||
;;; Tool Bar Creation
|
||||
|
||||
;; Shush compiler.
|
||||
(defvar image-load-path)
|
||||
|
||||
(defmacro mh-tool-bar-define (defaults &rest buttons)
|
||||
"Define a tool bar for MH-E.
|
||||
DEFAULTS is the list of buttons that are present by default. It
|
||||
|
@ -151,7 +154,7 @@ where,
|
|||
(doc (if (string-match "\\(.*\\)\n" full-doc)
|
||||
(match-string 1 full-doc)
|
||||
full-doc))
|
||||
(enable-expr (or (nth 4 button) t))
|
||||
(enable-expr (if (eql (length button) 4) t (nth 4 button)))
|
||||
(modes (nth 1 button))
|
||||
functions show-sym)
|
||||
(when (memq 'letter modes) (setq functions `(:letter ,name)))
|
||||
|
@ -178,7 +181,7 @@ where,
|
|||
(t 'folder-vectors)))
|
||||
(list (cond ((eq type :letter) 'mh-tool-bar-letter-buttons)
|
||||
(t 'mh-tool-bar-folder-buttons)))
|
||||
(key (intern (concat "mh-" type1 "tool-bar-" name-str)))
|
||||
(key (intern (concat "mh-" type1 "-tool-bar-" name-str)))
|
||||
(setter (intern (concat type1 "-button-setter")))
|
||||
(mbuttons (cond ((eq type :letter) 'letter-buttons)
|
||||
((eq type :show) 'show-buttons)
|
||||
|
@ -209,50 +212,79 @@ where,
|
|||
(unless (memq x letter-buttons)
|
||||
(error "Letter defaults contains unknown button %s" x)))
|
||||
`(eval-when (compile load eval)
|
||||
(defun mh-buffer-exists-p (mode)
|
||||
"Test whether a buffer with major mode MODE is present."
|
||||
(loop for buf in (buffer-list)
|
||||
when (save-excursion
|
||||
(set-buffer buf)
|
||||
(eq major-mode mode))
|
||||
return t))
|
||||
|
||||
;; GNU Emacs tool bar specific code
|
||||
(mh-do-in-gnu-emacs
|
||||
(defun mh-buffer-exists-p (mode)
|
||||
"Test whether a buffer with major mode MODE is present."
|
||||
(loop for buf in (buffer-list)
|
||||
when (with-current-buffer buf
|
||||
(eq major-mode mode))
|
||||
return t))
|
||||
;; Tool bar initialization functions
|
||||
(defun mh-tool-bar-folder-buttons-init ()
|
||||
(when (mh-buffer-exists-p 'mh-folder-mode)
|
||||
(setq mh-folder-tool-bar-map
|
||||
(let ((tool-bar-map (make-sparse-keymap)))
|
||||
,@(nreverse folder-button-setter)
|
||||
tool-bar-map))
|
||||
(setq mh-show-tool-bar-map
|
||||
(let ((tool-bar-map (make-sparse-keymap)))
|
||||
,@(nreverse show-button-setter)
|
||||
tool-bar-map))
|
||||
(setq mh-show-seq-tool-bar-map
|
||||
(let ((tool-bar-map (copy-keymap mh-show-tool-bar-map)))
|
||||
,@(nreverse show-seq-button-setter)
|
||||
tool-bar-map))
|
||||
(setq mh-folder-seq-tool-bar-map
|
||||
(let ((tool-bar-map (copy-keymap mh-folder-tool-bar-map)))
|
||||
,@(nreverse sequence-button-setter)
|
||||
tool-bar-map))))
|
||||
(let* ((load-path (mh-image-load-path-for-library "mh-e"
|
||||
"mh-logo.xpm"))
|
||||
(image-load-path (cons (car load-path)
|
||||
(when (boundp 'image-load-path)
|
||||
image-load-path))))
|
||||
(setq mh-folder-tool-bar-map
|
||||
(let ((tool-bar-map (make-sparse-keymap)))
|
||||
,@(nreverse folder-button-setter)
|
||||
tool-bar-map))
|
||||
(setq mh-folder-seq-tool-bar-map
|
||||
(let ((tool-bar-map (copy-keymap mh-folder-tool-bar-map)))
|
||||
,@(nreverse sequence-button-setter)
|
||||
tool-bar-map))
|
||||
(setq mh-show-tool-bar-map
|
||||
(let ((tool-bar-map (make-sparse-keymap)))
|
||||
,@(nreverse show-button-setter)
|
||||
tool-bar-map))
|
||||
(setq mh-show-seq-tool-bar-map
|
||||
(let ((tool-bar-map (copy-keymap mh-show-tool-bar-map)))
|
||||
,@(nreverse show-seq-button-setter)
|
||||
tool-bar-map)))))
|
||||
(defun mh-tool-bar-letter-buttons-init ()
|
||||
(when (mh-buffer-exists-p 'mh-letter-mode)
|
||||
(setq mh-letter-tool-bar-map
|
||||
(let ((tool-bar-map (make-sparse-keymap)))
|
||||
,@(nreverse letter-button-setter)
|
||||
tool-bar-map))))
|
||||
(let* ((load-path (mh-image-load-path-for-library "mh-e"
|
||||
"mh-logo.xpm"))
|
||||
(image-load-path (cons (car load-path)
|
||||
(when (boundp 'image-load-path)
|
||||
image-load-path))))
|
||||
(setq mh-letter-tool-bar-map
|
||||
(let ((tool-bar-map (make-sparse-keymap)))
|
||||
,@(nreverse letter-button-setter)
|
||||
tool-bar-map)))))
|
||||
;; Custom setter functions
|
||||
(defun mh-tool-bar-update (mode default-map sequence-map)
|
||||
"Update `tool-bar-map' in all buffers of MODE.
|
||||
Use SEQUENCE-MAP if display is limited; DEFAULT-MAP otherwise."
|
||||
(loop for buf in (buffer-list)
|
||||
do (with-current-buffer buf
|
||||
(if (eq mode major-mode)
|
||||
(let ((map (if mh-folder-view-stack
|
||||
sequence-map
|
||||
default-map)))
|
||||
;; Yes, make-local-variable is necessary since we
|
||||
;; get here during initialization when loading
|
||||
;; mh-e.el, after the +inbox buffer has been
|
||||
;; created, but before mh-folder-mode has run and
|
||||
;; created the local map.
|
||||
(set (make-local-variable 'tool-bar-map) map))))))
|
||||
(defun mh-tool-bar-folder-buttons-set (symbol value)
|
||||
"Construct tool bar for `mh-folder-mode' and `mh-show-mode'."
|
||||
(set-default symbol value)
|
||||
(mh-tool-bar-folder-buttons-init))
|
||||
(mh-tool-bar-folder-buttons-init)
|
||||
(mh-tool-bar-update 'mh-folder-mode mh-folder-tool-bar-map
|
||||
mh-folder-seq-tool-bar-map)
|
||||
(mh-tool-bar-update 'mh-show-mode mh-show-tool-bar-map
|
||||
mh-show-seq-tool-bar-map))
|
||||
(defun mh-tool-bar-letter-buttons-set (symbol value)
|
||||
"Construct tool bar for `mh-letter-mode'."
|
||||
(set-default symbol value)
|
||||
(mh-tool-bar-letter-buttons-init)))
|
||||
(mh-tool-bar-letter-buttons-init)
|
||||
(mh-tool-bar-update 'mh-letter-mode mh-letter-tool-bar-map
|
||||
mh-letter-tool-bar-map)))
|
||||
;; XEmacs specific code
|
||||
(mh-do-in-xemacs
|
||||
(defvar mh-tool-bar-folder-vector-map
|
||||
|
@ -318,7 +350,8 @@ where,
|
|||
'mh-tool-bar-folder-buttons
|
||||
'(list ,@(mapcar (lambda (x) `(quote ,x)) folder-defaults))
|
||||
"List of buttons to include in MH-Folder tool bar."
|
||||
:group 'mh-tool-bar :set 'mh-tool-bar-folder-buttons-set
|
||||
:group 'mh-tool-bar
|
||||
:set 'mh-tool-bar-folder-buttons-set
|
||||
:type '(set ,@(loop for x in folder-buttons
|
||||
for y in folder-docs
|
||||
collect `(const :tag ,y ,x)))
|
||||
|
@ -328,7 +361,8 @@ where,
|
|||
'mh-tool-bar-letter-buttons
|
||||
'(list ,@(mapcar (lambda (x) `(quote ,x)) letter-defaults))
|
||||
"List of buttons to include in MH-Letter tool bar."
|
||||
:group 'mh-tool-bar :set 'mh-tool-bar-letter-buttons-set
|
||||
:group 'mh-tool-bar
|
||||
:set 'mh-tool-bar-letter-buttons-set
|
||||
:type '(set ,@(loop for x in letter-buttons
|
||||
for y in letter-docs
|
||||
collect `(const :tag ,y ,x)))
|
||||
|
|
|
@ -556,10 +556,18 @@ nested folders within them."
|
|||
sub-folders)
|
||||
sub-folders)))
|
||||
|
||||
;; FIXME: This function does not do well if FOLDER does not exist. It
|
||||
;; then changes the context to that folder which causes problems down
|
||||
;; the line. Since a folder in the cache could later be deleted, it
|
||||
;; would be good for mh-sub-folders-actual to return nil in this case
|
||||
;; so that mh-sub-folders could delete it from the cache. This
|
||||
;; function could protect itself by using a temporary context.
|
||||
(defun mh-sub-folders-actual (folder)
|
||||
"Execute the command folders to return the sub-folders of FOLDER.
|
||||
Filters out the folder names that start with \".\" so that
|
||||
directories that aren't usually mail folders are hidden."
|
||||
directories that aren't usually mail folders are hidden.
|
||||
Expects FOLDER to have already been normalized with
|
||||
(mh-normalize-folder-name folder nil nil t)"
|
||||
(let ((arg-list `(,(expand-file-name "folders" mh-progs)
|
||||
nil (t nil) nil "-noheader" "-norecurse" "-nototal"
|
||||
,@(if (stringp folder) (list folder) ())))
|
||||
|
@ -683,36 +691,44 @@ This variable should never be set.")
|
|||
(defun mh-folder-completion-function (name predicate flag)
|
||||
"Programmable completion for folder names.
|
||||
NAME is the partial folder name that has been input. PREDICATE if
|
||||
non-nil is a function that is used to filter the possible choices
|
||||
and FLAG determines whether the completion is over."
|
||||
non-nil is a function that is used to filter the possible
|
||||
choices. FLAG is nil to indicate `try-completion', t for
|
||||
`all-completions', or the symbol lambda for `test-completion'.
|
||||
See Info node `(elisp) Programmed Completion' for details."
|
||||
(let* ((orig-name name)
|
||||
;; After normalization, name is nil, +, or +something. If a
|
||||
;; trailing slash is present, it is preserved.
|
||||
(name (mh-normalize-folder-name name nil t))
|
||||
(last-slash (mh-search-from-end ?/ name))
|
||||
(last-complete (if last-slash (substring name 0 last-slash) nil))
|
||||
;; nil if + or +folder; +folder/ if slash present.
|
||||
(last-complete (if last-slash (substring name 0 (1+ last-slash)) nil))
|
||||
;; Either +folder/remainder, +remainder, or "".
|
||||
(remainder (cond (last-complete (substring name (1+ last-slash)))
|
||||
((and (> (length name) 0) (equal (aref name 0) ?+))
|
||||
(substring name 1))
|
||||
(name (substring name 1))
|
||||
(t ""))))
|
||||
(cond ((eq flag nil)
|
||||
(let ((try-res (try-completion
|
||||
name
|
||||
(mapcar (lambda (x)
|
||||
(cons (if (not last-complete)
|
||||
(concat "+" (car x))
|
||||
(concat last-complete "/" (car x)))
|
||||
(cdr x)))
|
||||
(mh-sub-folders last-complete t))
|
||||
predicate)))
|
||||
(let ((try-res
|
||||
(try-completion
|
||||
name
|
||||
(mapcar (lambda (x)
|
||||
(cons (concat (or last-complete "+") (car x))
|
||||
(cdr x)))
|
||||
(mh-sub-folders last-complete t))
|
||||
predicate)))
|
||||
(cond ((eq try-res nil) nil)
|
||||
((and (eq try-res t) (equal name orig-name)) t)
|
||||
((eq try-res t) name)
|
||||
(t try-res))))
|
||||
((eq flag t)
|
||||
(all-completions
|
||||
remainder (mh-sub-folders last-complete t) predicate))
|
||||
(mapcar (lambda (x)
|
||||
(concat (or last-complete "+") x))
|
||||
(all-completions
|
||||
remainder (mh-sub-folders last-complete t) predicate)))
|
||||
((eq flag 'lambda)
|
||||
(let ((path (concat mh-user-path
|
||||
(substring (mh-normalize-folder-name name) 1))))
|
||||
(let ((path (concat (unless (and (> (length name) 1)
|
||||
(eq (aref name 1) ?/))
|
||||
mh-user-path)
|
||||
(substring name 1))))
|
||||
(cond (mh-allow-root-folder-flag (file-exists-p path))
|
||||
((equal path mh-user-path) nil)
|
||||
(t (file-exists-p path))))))))
|
||||
|
@ -726,8 +742,7 @@ and FLAG determines whether the completion is over."
|
|||
If ALLOW-ROOT-FOLDER-FLAG is non-nil then \"+\" is allowed to be
|
||||
a folder name corresponding to `mh-user-path'."
|
||||
(mh-normalize-folder-name
|
||||
(let ((minibuffer-completing-file-name t)
|
||||
(completion-root-regexp "^[+/]")
|
||||
(let ((completion-root-regexp "^[+/]")
|
||||
(minibuffer-local-completion-map mh-folder-completion-map)
|
||||
(mh-allow-root-folder-flag allow-root-folder-flag))
|
||||
(completing-read prompt 'mh-folder-completion-function nil nil nil
|
||||
|
|
|
@ -979,7 +979,7 @@ Returns nil if an error message has appeared."
|
|||
;; Algorithm: get waiting output. See if last line contains
|
||||
;; tramp-smb-prompt sentinel or tramp-smb-errors strings.
|
||||
;; If not, wait a bit and again get waiting output.
|
||||
(while (and (not found) (not err))
|
||||
(while (not found)
|
||||
|
||||
;; Accept pending output.
|
||||
(tramp-accept-process-output proc)
|
||||
|
|
|
@ -4458,24 +4458,28 @@ necessary anymore."
|
|||
file)
|
||||
(member (match-string 1 file) (mapcar 'car tramp-methods)))
|
||||
((or (equal last-input-event 'tab)
|
||||
;; Emacs
|
||||
(and (integerp last-input-event)
|
||||
(not (event-modifiers last-input-event))
|
||||
(or (char-equal last-input-event ?\?)
|
||||
(char-equal last-input-event ?\t) ; handled by 'tab already?
|
||||
(char-equal last-input-event ?\ )))
|
||||
;; Emacs
|
||||
(and (integerp last-input-event)
|
||||
(or
|
||||
;; ?\t has event-modifier 'control
|
||||
(char-equal last-input-event ?\t)
|
||||
(and (not (event-modifiers last-input-event))
|
||||
(or (char-equal last-input-event ?\?)
|
||||
(char-equal last-input-event ?\ )))))
|
||||
;; XEmacs
|
||||
(and (featurep 'xemacs)
|
||||
(not (event-modifiers last-input-event))
|
||||
(or (char-equal
|
||||
(funcall (symbol-function 'event-to-character)
|
||||
last-input-event) ?\?)
|
||||
(char-equal
|
||||
(funcall (symbol-function 'event-to-character)
|
||||
last-input-event) ?\t)
|
||||
(char-equal
|
||||
(funcall (symbol-function 'event-to-character)
|
||||
last-input-event) ?\ ))))
|
||||
(or
|
||||
;; ?\t has event-modifier 'control
|
||||
(char-equal
|
||||
(funcall (symbol-function 'event-to-character)
|
||||
last-input-event) ?\t)
|
||||
(and (not (event-modifiers last-input-event))
|
||||
(or (char-equal
|
||||
(funcall (symbol-function 'event-to-character)
|
||||
last-input-event) ?\?)
|
||||
(char-equal
|
||||
(funcall (symbol-function 'event-to-character)
|
||||
last-input-event) ?\ ))))))
|
||||
t)))
|
||||
|
||||
(defun tramp-completion-handle-file-exists-p (filename)
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
;; are auto-frobbed from configure.ac, so you should edit that file and run
|
||||
;; "autoconf && ./configure" to change them.
|
||||
|
||||
(defconst tramp-version "2.0.52"
|
||||
(defconst tramp-version "2.0.53"
|
||||
"This version of Tramp.")
|
||||
|
||||
(defconst tramp-bug-report-address "tramp-devel@gnu.org"
|
||||
|
|
|
@ -108,21 +108,25 @@ not to go beyond `comment-fill-column'."
|
|||
;;;###autoload
|
||||
(defvar comment-start nil
|
||||
"*String to insert to start a new comment, or nil if no comment syntax.")
|
||||
;;;###autoload(put 'comment-start 'safe-local-variable 'string-or-null-p)
|
||||
|
||||
;;;###autoload
|
||||
(defvar comment-start-skip nil
|
||||
"*Regexp to match the start of a comment plus everything up to its body.
|
||||
If there are any \\(...\\) pairs, the comment delimiter text is held to begin
|
||||
at the place matched by the close of the first pair.")
|
||||
;;;###autoload(put 'comment-start-skip 'safe-local-variable 'string-or-null-p)
|
||||
|
||||
;;;###autoload
|
||||
(defvar comment-end-skip nil
|
||||
"Regexp to match the end of a comment plus everything up to its body.")
|
||||
;;;###autoload(put 'comment-end-skip 'safe-local-variable 'string-or-null-p)
|
||||
|
||||
;;;###autoload
|
||||
(defvar comment-end ""
|
||||
"*String to insert to end a new comment.
|
||||
Should be an empty string if comments are terminated by end-of-line.")
|
||||
;;;###autoload(put 'comment-end 'safe-local-variable 'string-or-null-p)
|
||||
|
||||
;;;###autoload
|
||||
(defvar comment-indent-function 'comment-indent-default
|
||||
|
|
|
@ -100,7 +100,9 @@
|
|||
(defvar tool-bar-map)
|
||||
(defvar speedbar-initial-expansion-list-name)
|
||||
|
||||
(defvar gdb-frame-address "main" "Initialization for Assembler buffer.")
|
||||
(defvar gdb-pc-address nil "Initialization for Assembler buffer.
|
||||
Set to \"main\" at start if gdb-show-main is t.")
|
||||
(defvar gdb-frame-address nil "Identity of frame for watch expression.")
|
||||
(defvar gdb-previous-frame-address nil)
|
||||
(defvar gdb-memory-address "main")
|
||||
(defvar gdb-previous-frame nil)
|
||||
|
@ -109,8 +111,9 @@
|
|||
(defvar gdb-current-language nil)
|
||||
(defvar gdb-var-list nil
|
||||
"List of variables in watch window.
|
||||
Each element has the form (VARNUM EXPRESSION NUMCHILD TYPE VALUE STATUS) where
|
||||
STATUS is nil (unchanged), `changed' or `out-of-scope'.")
|
||||
Each element has the form (VARNUM EXPRESSION NUMCHILD TYPE VALUE STATUS FP)
|
||||
where STATUS is nil (unchanged), `changed' or `out-of-scope', FP the frame
|
||||
address for root variables.")
|
||||
(defvar gdb-force-update t
|
||||
"Non-nil means that view of watch expressions will be updated in the speedbar.")
|
||||
(defvar gdb-main-file nil "Source file from which program execution begins.")
|
||||
|
@ -516,7 +519,7 @@ With arg, use separate IO iff arg is positive."
|
|||
(setq comint-input-sender 'gdb-send)
|
||||
|
||||
;; (re-)initialize
|
||||
(setq gdb-frame-address (if gdb-show-main "main" nil))
|
||||
(setq gdb-pc-address (if gdb-show-main "main" nil))
|
||||
(setq gdb-previous-frame-address nil
|
||||
gdb-memory-address "main"
|
||||
gdb-previous-frame nil
|
||||
|
@ -720,7 +723,7 @@ With arg, enter name of variable to be watched in the minibuffer."
|
|||
expr)
|
||||
(match-string 2)
|
||||
(match-string 3)
|
||||
nil nil)))
|
||||
nil nil gdb-frame-address)))
|
||||
(push var gdb-var-list)
|
||||
(speedbar 1)
|
||||
(unless (string-equal
|
||||
|
@ -1206,7 +1209,7 @@ This filter may simply queue input for a later time."
|
|||
(cons
|
||||
(match-string 1 args)
|
||||
(string-to-number (match-string 2 args))))
|
||||
(setq gdb-frame-address (match-string 3 args))
|
||||
(setq gdb-pc-address (match-string 3 args))
|
||||
;; cover for auto-display output which comes *before*
|
||||
;; stopped annotation
|
||||
(if (eq gdb-output-sink 'inferior) (setq gdb-output-sink 'user)))
|
||||
|
@ -1357,7 +1360,7 @@ happens to be appropriate."
|
|||
(gdb-get-buffer-create 'gdb-breakpoints-buffer)
|
||||
(gdb-invalidate-breakpoints)
|
||||
;; Do this through gdb-get-selected-frame -> gdb-frame-handler
|
||||
;; so gdb-frame-address is updated.
|
||||
;; so gdb-pc-address is updated.
|
||||
;; (gdb-invalidate-assembler)
|
||||
|
||||
(if (string-equal gdb-version "pre-6.4")
|
||||
|
@ -3004,11 +3007,11 @@ BUFFER nil or omitted means use the current buffer."
|
|||
(pos 1) (address) (flag) (bptno))
|
||||
(with-current-buffer buffer
|
||||
(save-excursion
|
||||
(if (not (equal gdb-frame-address "main"))
|
||||
(if (not (equal gdb-pc-address "main"))
|
||||
(progn
|
||||
(goto-char (point-min))
|
||||
(if (and gdb-frame-address
|
||||
(search-forward gdb-frame-address nil t))
|
||||
(if (and gdb-pc-address
|
||||
(search-forward gdb-pc-address nil t))
|
||||
(progn
|
||||
(setq pos (point))
|
||||
(beginning-of-line)
|
||||
|
@ -3038,7 +3041,7 @@ BUFFER nil or omitted means use the current buffer."
|
|||
(goto-char (point-min))
|
||||
(if (search-forward address nil t)
|
||||
(gdb-put-breakpoint-icon (eq flag ?y) bptno))))))))
|
||||
(if (not (equal gdb-frame-address "main"))
|
||||
(if (not (equal gdb-pc-address "main"))
|
||||
(with-current-buffer buffer
|
||||
(set-window-point (get-buffer-window buffer 0) pos)))))
|
||||
|
||||
|
@ -3100,7 +3103,7 @@ BUFFER nil or omitted means use the current buffer."
|
|||
(special-display-frame-alist gdb-frame-parameters))
|
||||
(display-buffer (gdb-get-buffer-create 'gdb-assembler-buffer))))
|
||||
|
||||
;; modified because if gdb-frame-address has changed value a new command
|
||||
;; modified because if gdb-pc-address has changed value a new command
|
||||
;; must be enqueued to update the buffer with the new output
|
||||
(defun gdb-invalidate-assembler (&optional ignored)
|
||||
(if (gdb-get-buffer 'gdb-assembler-buffer)
|
||||
|
@ -3109,7 +3112,7 @@ BUFFER nil or omitted means use the current buffer."
|
|||
(string-equal gdb-selected-frame gdb-previous-frame))
|
||||
(if (or (not (member 'gdb-invalidate-assembler
|
||||
gdb-pending-triggers))
|
||||
(not (string-equal gdb-frame-address
|
||||
(not (string-equal gdb-pc-address
|
||||
gdb-previous-frame-address)))
|
||||
(progn
|
||||
;; take previous disassemble command, if any, off the queue
|
||||
|
@ -3122,11 +3125,11 @@ BUFFER nil or omitted means use the current buffer."
|
|||
(gdb-enqueue-input
|
||||
(list
|
||||
(concat gdb-server-prefix "disassemble "
|
||||
(if (member gdb-frame-address '(nil "main")) nil "0x")
|
||||
gdb-frame-address "\n")
|
||||
(if (member gdb-pc-address '(nil "main")) nil "0x")
|
||||
gdb-pc-address "\n")
|
||||
'gdb-assembler-handler))
|
||||
(push 'gdb-invalidate-assembler gdb-pending-triggers)
|
||||
(setq gdb-previous-frame-address gdb-frame-address)
|
||||
(setq gdb-previous-frame-address gdb-pc-address)
|
||||
(setq gdb-previous-frame gdb-selected-frame)))))))
|
||||
|
||||
(defun gdb-get-selected-frame ()
|
||||
|
@ -3141,8 +3144,10 @@ BUFFER nil or omitted means use the current buffer."
|
|||
(setq gdb-pending-triggers
|
||||
(delq 'gdb-get-selected-frame gdb-pending-triggers))
|
||||
(goto-char (point-min))
|
||||
(if (re-search-forward "Stack level \\([0-9]+\\)" nil t)
|
||||
(setq gdb-frame-number (match-string 1)))
|
||||
(when (re-search-forward
|
||||
"Stack level \\([0-9]+\\), frame at \\(0x[[:xdigit:]]+\\)" nil t)
|
||||
(setq gdb-frame-number (match-string 1))
|
||||
(setq gdb-frame-address (match-string 2)))
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward ".*=\\s-+0x0*\\(\\S-*\\)\\s-+in\\s-+\\(\\S-+?\\)\
|
||||
\\(?: (\\(\\S-+?\\):[0-9]+?)\\)*;? "
|
||||
|
@ -3154,7 +3159,7 @@ BUFFER nil or omitted means use the current buffer."
|
|||
(if (gdb-get-buffer 'gdb-assembler-buffer)
|
||||
(with-current-buffer (gdb-get-buffer 'gdb-assembler-buffer)
|
||||
(setq mode-name (concat "Machine:" gdb-selected-frame))))
|
||||
(setq gdb-frame-address (match-string 1))
|
||||
(setq gdb-pc-address (match-string 1))
|
||||
(if (and (match-string 3) gud-overlay-arrow-position)
|
||||
(let ((buffer (marker-buffer gud-overlay-arrow-position))
|
||||
(position (marker-position gud-overlay-arrow-position)))
|
||||
|
@ -3289,6 +3294,7 @@ in_scope=\"\\(.*?\\)\".*?}")
|
|||
(with-current-buffer (gdb-get-buffer 'gdb-registers-buffer)
|
||||
(let ((buffer-read-only nil))
|
||||
(erase-buffer)
|
||||
(put-text-property 0 (length err) 'face font-lock-warning-face err)
|
||||
(insert err)
|
||||
(goto-char (point-min)))))
|
||||
(let ((register-list (reverse gdb-register-names))
|
||||
|
@ -3385,36 +3391,44 @@ in_scope=\"\\(.*?\\)\".*?}")
|
|||
(defun gdb-stack-list-locals-handler ()
|
||||
(setq gdb-pending-triggers (delq 'gdb-invalidate-locals-1
|
||||
gdb-pending-triggers))
|
||||
(let (local locals-list)
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward gdb-stack-list-locals-regexp nil t)
|
||||
(let ((local (list (match-string 1)
|
||||
(match-string 2)
|
||||
nil)))
|
||||
(if (looking-at ",value=\\(\".*\"\\).*?}")
|
||||
(setcar (nthcdr 2 local) (read (match-string 1))))
|
||||
(push local locals-list)))
|
||||
(let ((buf (gdb-get-buffer 'gdb-locals-buffer)))
|
||||
(and buf (with-current-buffer buf
|
||||
(let* ((window (get-buffer-window buf 0))
|
||||
(start (window-start window))
|
||||
(p (window-point window))
|
||||
(buffer-read-only nil))
|
||||
(erase-buffer)
|
||||
(dolist (local locals-list)
|
||||
(setq name (car local))
|
||||
(if (or (not (nth 2 local))
|
||||
(string-match "\\0x" (nth 2 local)))
|
||||
(add-text-properties 0 (length name)
|
||||
`(mouse-face highlight
|
||||
help-echo "mouse-2: create watch expression"
|
||||
local-map ,gdb-locals-watch-map-1)
|
||||
name))
|
||||
(goto-char (point-min))
|
||||
(if (re-search-forward gdb-error-regexp nil t)
|
||||
(let ((err (match-string 1)))
|
||||
(with-current-buffer (gdb-get-buffer 'gdb-locals-buffer)
|
||||
(let ((buffer-read-only nil))
|
||||
(erase-buffer)
|
||||
(insert err)
|
||||
(goto-char (point-min)))))
|
||||
(let (local locals-list)
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward gdb-stack-list-locals-regexp nil t)
|
||||
(let ((local (list (match-string 1)
|
||||
(match-string 2)
|
||||
nil)))
|
||||
(if (looking-at ",value=\\(\".*\"\\).*?}")
|
||||
(setcar (nthcdr 2 local) (read (match-string 1))))
|
||||
(push local locals-list)))
|
||||
(let ((buf (gdb-get-buffer 'gdb-locals-buffer)))
|
||||
(and buf (with-current-buffer buf
|
||||
(let* ((window (get-buffer-window buf 0))
|
||||
(start (window-start window))
|
||||
(p (window-point window))
|
||||
(buffer-read-only nil))
|
||||
(erase-buffer)
|
||||
(dolist (local locals-list)
|
||||
(setq name (car local))
|
||||
(if (or (not (nth 2 local))
|
||||
(string-match "^\\0x" (nth 2 local)))
|
||||
(add-text-properties 0 (length name)
|
||||
`(mouse-face highlight
|
||||
help-echo "mouse-2: create watch expression"
|
||||
local-map ,gdb-locals-watch-map-1)
|
||||
name))
|
||||
(insert
|
||||
(concat name "\t" (nth 1 local)
|
||||
"\t" (nth 2 local) "\n")))
|
||||
(set-window-start window start)
|
||||
(set-window-point window p)))))))
|
||||
(set-window-start window start)
|
||||
(set-window-point window p))))))))
|
||||
|
||||
(defun gdb-get-register-names ()
|
||||
"Create a list of register names."
|
||||
|
|
|
@ -374,8 +374,9 @@ t means that there is no stack, and we are in display-file mode.")
|
|||
(defun gud-speedbar-item-info ()
|
||||
"Display the data type of the watch expression element."
|
||||
(let ((var (nth (- (line-number-at-pos (point)) 2) gdb-var-list)))
|
||||
(if (nth 4 var)
|
||||
(speedbar-message "%s" (nth 3 var)))))
|
||||
(if (nth 6 var)
|
||||
(speedbar-message "%s: %s" (nth 6 var) (nth 3 var))
|
||||
(speedbar-message "%s" (nth 3 var)))))
|
||||
|
||||
(defun gud-install-speedbar-variables ()
|
||||
"Install those variables used by speedbar to enhance gud/gdb."
|
||||
|
|
|
@ -864,6 +864,7 @@ This function can be used as `idlwave-extra-help-function'."
|
|||
(erase-buffer)
|
||||
(insert-file-contents file nil nil nil 'replace))
|
||||
(idlwave-help-error name type class keyword)))
|
||||
(goto-char (point-min))
|
||||
(if (and idlwave-help-fontify-source-code (not in-buf))
|
||||
(idlwave-help-fontify)))
|
||||
(idlwave-help-error name type class keyword))
|
||||
|
|
|
@ -1744,6 +1744,14 @@ lines count as headers.
|
|||
#'python-eldoc-function)
|
||||
(add-hook 'eldoc-mode-hook
|
||||
'(lambda () (run-python nil t)) nil t) ; need it running
|
||||
(unless (assoc 'python-mode hs-special-modes-alist)
|
||||
(setq
|
||||
hs-special-modes-alist
|
||||
(cons (list
|
||||
'python-mode "^\\s-*def\\>" nil "#"
|
||||
(lambda (arg)(python-end-of-defun)(skip-chars-backward " \t\n"))
|
||||
nil)
|
||||
hs-special-modes-alist)))
|
||||
(if (featurep 'hippie-exp)
|
||||
(set (make-local-variable 'hippie-expand-try-functions-list)
|
||||
(cons 'python-try-complete hippie-expand-try-functions-list)))
|
||||
|
|
|
@ -356,6 +356,7 @@ the car and cdr are the same symbol.")
|
|||
|
||||
(defvar sh-shell (sh-canonicalize-shell (file-name-nondirectory sh-shell-file))
|
||||
"The shell being programmed. This is set by \\[sh-set-shell].")
|
||||
;;;###autoload(put 'sh-shell 'safe-local-variable 'symbolp)
|
||||
|
||||
(defvar sh-mode-abbrev-table nil)
|
||||
|
||||
|
|
|
@ -1042,7 +1042,7 @@ Returns nil if line starts inside a string, t if in a comment."
|
|||
(defun tcl-send-string (proc string)
|
||||
(with-current-buffer (process-buffer proc)
|
||||
(goto-char (process-mark proc))
|
||||
(beginning-of-line)
|
||||
(forward-line 0) ;Not (beginning-of-line) because of fields.
|
||||
(if (looking-at comint-prompt-regexp)
|
||||
(set-marker inferior-tcl-delete-prompt-marker (point))))
|
||||
(comint-send-string proc string))
|
||||
|
@ -1050,7 +1050,7 @@ Returns nil if line starts inside a string, t if in a comment."
|
|||
(defun tcl-send-region (proc start end)
|
||||
(with-current-buffer (process-buffer proc)
|
||||
(goto-char (process-mark proc))
|
||||
(beginning-of-line)
|
||||
(forward-line 0) ;Not (beginning-of-line) because of fields.
|
||||
(if (looking-at comint-prompt-regexp)
|
||||
(set-marker inferior-tcl-delete-prompt-marker (point))))
|
||||
(comint-send-region proc start end))
|
||||
|
@ -1080,7 +1080,11 @@ See variable `inferior-tcl-buffer'."
|
|||
Prefix argument means switch to the Tcl buffer afterwards."
|
||||
(interactive "r\nP")
|
||||
(let ((proc (inferior-tcl-proc)))
|
||||
(tcl-send-region proc start end)
|
||||
(tcl-send-region
|
||||
proc
|
||||
;; Strip leading and trailing whitespace.
|
||||
(save-excursion (goto-char start) (skip-chars-forward " \t\n") (point))
|
||||
(save-excursion (goto-char end) (skip-chars-backward " \t\n") (point)))
|
||||
(tcl-send-string proc "\n")
|
||||
(if and-go (switch-to-tcl t))))
|
||||
|
||||
|
@ -1149,7 +1153,12 @@ See documentation for function `inferior-tcl-mode' for more information."
|
|||
(unless (comint-check-proc "*inferior-tcl*")
|
||||
(set-buffer (apply (function make-comint) "inferior-tcl" cmd nil
|
||||
tcl-command-switches))
|
||||
(inferior-tcl-mode))
|
||||
(inferior-tcl-mode)
|
||||
;; Make tclsh display a prompt on ms-windows (or under Unix, when a tty
|
||||
;; wasn't used). Doesn't affect wish, unfortunately.
|
||||
(unless (process-tty-name (inferior-tcl-proc))
|
||||
(tcl-send-string (inferior-tcl-proc)
|
||||
"set ::tcl_interactive 1; concat\n")))
|
||||
(set (make-local-variable 'tcl-application) cmd)
|
||||
(setq inferior-tcl-buffer "*inferior-tcl*")
|
||||
(pop-to-buffer "*inferior-tcl*"))
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
;; Author: Carsten Dominik <dominik at science dot uva dot nl>
|
||||
;; Keywords: outlines, hypermedia, calendar, wp
|
||||
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
|
||||
;; Version: 4.23
|
||||
;; Version: 4.25
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
|
@ -81,6 +81,15 @@
|
|||
;;
|
||||
;; Changes since version 4.00:
|
||||
;; ---------------------------
|
||||
;; Version 4.25
|
||||
;; - Revision of the font-lock faces section, with better tty support.
|
||||
;; - TODO keywords in Agenda buffer are fontified.
|
||||
;; - Export converts links between .org files to links between .html files.
|
||||
;; - Better support for bold/italic/underline emphasis.
|
||||
;;
|
||||
;; Version 4.24
|
||||
;; - Bug fixes.
|
||||
;;
|
||||
;; Version 4.23
|
||||
;; - Bug fixes.
|
||||
;;
|
||||
|
@ -179,7 +188,7 @@
|
|||
|
||||
;;; Customization variables
|
||||
|
||||
(defvar org-version "4.23"
|
||||
(defvar org-version "4.25"
|
||||
"The version number of the file org.el.")
|
||||
(defun org-version ()
|
||||
(interactive)
|
||||
|
@ -189,7 +198,7 @@
|
|||
;; of outline.el.
|
||||
(defconst org-noutline-p (featurep 'noutline)
|
||||
"Are we using the new outline mode?")
|
||||
(defconst org-xemacs-p (featurep 'xemacs))
|
||||
(defconst org-xemacs-p (featurep 'xemacs)) ;; FIXME: used by external code?
|
||||
(defconst org-format-transports-properties-p
|
||||
(let ((x "a"))
|
||||
(add-text-properties 0 1 '(test t) x)
|
||||
|
@ -232,7 +241,11 @@ uninteresting. Also tables look terrible when wrapped."
|
|||
(defcustom org-startup-align-all-tables nil
|
||||
"Non-nil means, align all tables when visiting a file.
|
||||
This is useful when the column width in tables is forced with <N> cookies
|
||||
in table fields. Such tables will look correct only after the first re-align."
|
||||
in table fields. Such tables will look correct only after the first re-align.
|
||||
This can also be configured on a per-file basis by adding one of
|
||||
the following lines anywhere in the buffer:
|
||||
#+STARTUP: align
|
||||
#+STARTUP: noalign"
|
||||
:group 'org-startup
|
||||
:type 'boolean)
|
||||
|
||||
|
@ -242,7 +255,6 @@ This means, if you start editing an org file, you will get an
|
|||
immediate reminder of any due deadlines.
|
||||
This can also be configured on a per-file basis by adding one of
|
||||
the following lines anywhere in the buffer:
|
||||
|
||||
#+STARTUP: dlcheck
|
||||
#+STARTUP: nodlcheck"
|
||||
:group 'org-startup
|
||||
|
@ -396,7 +408,12 @@ This has the effect that two stars are being added/taken away in
|
|||
promotion/demotion commands. It also influences how levels are
|
||||
handled by the exporters.
|
||||
Changing it requires restart of `font-lock-mode' to become effective
|
||||
for fontification also in regions already fontified."
|
||||
for fontification also in regions already fontified.
|
||||
You may also set this on a per-file basis by adding one of the following
|
||||
lines to the buffer:
|
||||
|
||||
#+STARTUP: odd
|
||||
#+STARTUP: oddeven"
|
||||
:group 'org-edit-structure
|
||||
:group 'org-font-lock
|
||||
:type 'boolean)
|
||||
|
@ -1124,7 +1141,7 @@ closing date."
|
|||
:type 'boolean)
|
||||
|
||||
(defgroup org-priorities nil
|
||||
"Keywords in Org-mode."
|
||||
"Priorities in Org-mode."
|
||||
:tag "Org Priorities"
|
||||
:group 'org-todo)
|
||||
|
||||
|
@ -1179,7 +1196,7 @@ moved to the new date."
|
|||
:type 'boolean)
|
||||
|
||||
(defgroup org-tags nil
|
||||
"Options concerning startup of Org-mode."
|
||||
"Options concerning tags in Org-mode."
|
||||
:tag "Org Tags"
|
||||
:group 'org)
|
||||
|
||||
|
@ -1818,6 +1835,18 @@ you can \"misuse\" it to add arbitrary text to the header."
|
|||
:group 'org-export-html
|
||||
:type 'string)
|
||||
|
||||
(defcustom org-export-html-link-org-files-as-html t
|
||||
"Non-nil means, make file links to `file.org' point to `file.html'.
|
||||
When org-mode is exporting an org-mode file to HTML, links to
|
||||
non-html files are directly put into a href tag in HTML.
|
||||
However, links to other Org-mode files (recognized by the
|
||||
extension `.org.) should become links to the corresponding html
|
||||
file, assuming that the linked org-mode file will also be
|
||||
converted to HTML.
|
||||
When nil, the links still point to the plain `.org' file."
|
||||
:group 'org-export-html
|
||||
:type 'boolean)
|
||||
|
||||
(defcustom org-export-html-inline-images t
|
||||
"Non-nil means, inline images into exported HTML pages.
|
||||
The link will still be to the original location of the image file.
|
||||
|
@ -1903,7 +1932,12 @@ face is white for a light background, and black for a dark
|
|||
background. You may have to customize the face `org-hide' to
|
||||
make this work.
|
||||
Changing it requires restart of `font-lock-mode' to become effective
|
||||
also in regions already fontified."
|
||||
also in regions already fontified.
|
||||
You may also set this on a per-file basis by adding one of the following
|
||||
lines to the buffer:
|
||||
|
||||
#+STARTUP: hidestars
|
||||
#+STARTUP: showstars"
|
||||
:group 'org-font-lock
|
||||
:type 'boolean)
|
||||
|
||||
|
@ -1926,188 +1960,246 @@ Changing this variable requires a restart of Emacs to take effect."
|
|||
:tag "Org Faces"
|
||||
:group 'org-font-lock)
|
||||
|
||||
(defun org-compatible-face (specs)
|
||||
"Make a compatible face specification.
|
||||
XEmacs and Emacs 21 do not know about the `min-colors' attribute.
|
||||
For them we convert a (min-colors 8) entry to a `tty' entry and move it
|
||||
to the top of the list. The `min-colors' attribute will be removed from
|
||||
any other entries, and any resulting duplicates will be removed entirely."
|
||||
(if (or (featurep 'xemacs) (< emacs-major-version 22))
|
||||
(let (r e a)
|
||||
(while (setq e (pop specs))
|
||||
(cond
|
||||
((memq (car e) '(t default)) (push e r))
|
||||
((setq a (member '(min-colors 8) (car e)))
|
||||
(nconc r (list (cons (cons '(type tty) (delq (car a) (car e)))
|
||||
(cdr e)))))
|
||||
((setq a (assq 'min-colors (car e)))
|
||||
(setq e (cons (delq a (car e)) (cdr e)))
|
||||
(or (assoc (car e) r) (push e r)))
|
||||
(t (or (assoc (car e) r) (push e r)))))
|
||||
(nreverse r))
|
||||
specs))
|
||||
|
||||
(defface org-hide
|
||||
'(
|
||||
(((type tty) (class color)) (:foreground "white"))
|
||||
(((class color) (background light)) (:foreground "white"))
|
||||
(((class color) (background dark)) (:foreground "black"))
|
||||
(t (:inverse-video nil)))
|
||||
"Face used for level 1 headlines."
|
||||
'((((background light)) (:foreground "white"))
|
||||
(((background dark)) (:foreground "black")))
|
||||
"Face used to hide leading stars in headlines.
|
||||
The forground color of this face should be equal to the background
|
||||
color of the frame."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-level-1 ;; font-lock-function-name-face
|
||||
'((((type tty) (class color)) (:foreground "blue" :weight bold))
|
||||
(((class color) (background light)) (:foreground "Blue"))
|
||||
(((class color) (background dark)) (:foreground "LightSkyBlue"))
|
||||
(t (:inverse-video t :bold t)))
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
|
||||
(((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
|
||||
(((class color) (min-colors 16) (background light)) (:foreground "Blue"))
|
||||
(((class color) (min-colors 16) (background dark)) (:foreground "LightSkyBlue"))
|
||||
(((class color) (min-colors 8)) (:foreground "blue" :bold t))
|
||||
(t (:bold t))))
|
||||
"Face used for level 1 headlines."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-level-2 ;; font-lock-variable-name-face
|
||||
'((((type tty) (class color)) (:foreground "yellow" :weight light))
|
||||
(((class color) (background light)) (:foreground "DarkGoldenrod"))
|
||||
(((class color) (background dark)) (:foreground "LightGoldenrod"))
|
||||
(t (:bold t :italic t)))
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 16) (background light)) (:foreground "DarkGoldenrod"))
|
||||
(((class color) (min-colors 16) (background dark)) (:foreground "LightGoldenrod"))
|
||||
(((class color) (min-colors 8) (background light)) (:foreground "yellow"))
|
||||
(((class color) (min-colors 8) (background dark)) (:foreground "yellow" :bold t))
|
||||
(t (:bold t))))
|
||||
"Face used for level 2 headlines."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-level-3 ;; font-lock-keyword-face
|
||||
'((((type tty) (class color)) (:foreground "cyan" :weight bold))
|
||||
(((class color) (background light)) (:foreground "Purple"))
|
||||
(((class color) (background dark)) (:foreground "Cyan"))
|
||||
(t (:bold t)))
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 88) (background light)) (:foreground "Purple"))
|
||||
(((class color) (min-colors 88) (background dark)) (:foreground "Cyan1"))
|
||||
(((class color) (min-colors 16) (background light)) (:foreground "Purple"))
|
||||
(((class color) (min-colors 16) (background dark)) (:foreground "Cyan"))
|
||||
(((class color) (min-colors 8) (background light)) (:foreground "purple" :bold t))
|
||||
(((class color) (min-colors 8) (background dark)) (:foreground "cyan" :bold t))
|
||||
(t (:bold t))))
|
||||
"Face used for level 3 headlines."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-level-4 ;; font-lock-comment-face
|
||||
'((((type tty pc) (class color) (background light)) (:foreground "red"))
|
||||
(((type tty pc) (class color) (background dark)) (:foreground "red1"))
|
||||
(((class color) (background light)) (:foreground "Firebrick"))
|
||||
(((class color) (background dark)) (:foreground "chocolate1"))
|
||||
(t (:bold t :italic t)))
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
|
||||
(((class color) (min-colors 88) (background dark)) (:foreground "chocolate1"))
|
||||
(((class color) (min-colors 16) (background light)) (:foreground "red"))
|
||||
(((class color) (min-colors 16) (background dark)) (:foreground "red1"))
|
||||
(((class color) (min-colors 8) (background light)) (:foreground "red" :bold t))
|
||||
(((class color) (min-colors 8) (background dark)) (:foreground "red" :bold t))
|
||||
(t (:bold t))))
|
||||
"Face used for level 4 headlines."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-level-5 ;; font-lock-type-face
|
||||
'((((type tty) (class color)) (:foreground "green"))
|
||||
(((class color) (background light)) (:foreground "ForestGreen"))
|
||||
(((class color) (background dark)) (:foreground "PaleGreen"))
|
||||
(t (:bold t :underline t)))
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 16) (background light)) (:foreground "ForestGreen"))
|
||||
(((class color) (min-colors 16) (background dark)) (:foreground "PaleGreen"))
|
||||
(((class color) (min-colors 8)) (:foreground "green"))))
|
||||
"Face used for level 5 headlines."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-level-6 ;; font-lock-constant-face
|
||||
'((((type tty) (class color)) (:foreground "magenta"))
|
||||
(((class color) (background light)) (:foreground "CadetBlue"))
|
||||
(((class color) (background dark)) (:foreground "Aquamarine"))
|
||||
(t (:bold t :underline t)))
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 16) (background light)) (:foreground "CadetBlue"))
|
||||
(((class color) (min-colors 16) (background dark)) (:foreground "Aquamarine"))
|
||||
(((class color) (min-colors 8)) (:foreground "magenta"))))
|
||||
"Face used for level 6 headlines."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-level-7 ;; font-lock-builtin-face
|
||||
'((((type tty) (class color)) (:foreground "blue" :weight light))
|
||||
(((class color) (background light)) (:foreground "Orchid"))
|
||||
(((class color) (background dark)) (:foreground "LightSteelBlue"))
|
||||
(t (:bold t)))
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 16) (background light)) (:foreground "Orchid"))
|
||||
(((class color) (min-colors 16) (background dark)) (:foreground "LightSteelBlue"))
|
||||
(((class color) (min-colors 8)) (:foreground "blue")))) ;; FIXME: for dark bg?
|
||||
"Face used for level 7 headlines."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-level-8 ;; font-lock-string-face
|
||||
'((((type tty) (class color)) (:foreground "green"))
|
||||
(((class color) (background light)) (:foreground "RosyBrown"))
|
||||
(((class color) (background dark)) (:foreground "LightSalmon"))
|
||||
(t (:italic t)))
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
|
||||
(((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
|
||||
(((class color) (min-colors 8)) (:foreground "green"))))
|
||||
"Face used for level 8 headlines."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-special-keyword ;; font-lock-string-face
|
||||
'((((type tty) (class color)) (:foreground "green"))
|
||||
(((class color) (background light)) (:foreground "RosyBrown"))
|
||||
(((class color) (background dark)) (:foreground "LightSalmon"))
|
||||
(t (:italic t)))
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
|
||||
(((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
|
||||
(t (:italic t))))
|
||||
"Face used for special keywords."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-warning ;; font-lock-warning-face
|
||||
'((((type tty) (class color)) (:foreground "red"))
|
||||
(((class color) (background light)) (:foreground "Red" :bold t))
|
||||
(((class color) (background dark)) (:foreground "Red1" :bold t))
|
||||
; (((class color) (background dark)) (:foreground "Pink" :bold t))
|
||||
(t (:inverse-video t :bold t)))
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 16) (background light)) (:foreground "Red1" :bold t))
|
||||
(((class color) (min-colors 16) (background dark)) (:foreground "Pink" :bold t))
|
||||
(((class color) (min-colors 8) (background light)) (:foreground "red" :bold t))
|
||||
(((class color) (min-colors 8) (background dark)) (:foreground "red" :bold t))
|
||||
(t (:bold t))))
|
||||
"Face for deadlines and TODO keywords."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-headline-done ;; font-lock-string-face
|
||||
'((((type tty) (class color)) (:foreground "green"))
|
||||
(((class color) (background light)) (:foreground "RosyBrown"))
|
||||
(((class color) (background dark)) (:foreground "LightSalmon"))
|
||||
(t (:italic t)))
|
||||
"Face used to indicate that a headline is DONE. See also the variable
|
||||
`org-fontify-done-headline'."
|
||||
:group 'org-faces)
|
||||
|
||||
;; Inheritance does not work for xemacs. So we just copy...
|
||||
|
||||
(defface org-deadline-announce
|
||||
'((((type tty) (class color)) (:foreground "blue" :weight bold))
|
||||
(((class color) (background light)) (:foreground "Blue"))
|
||||
(((class color) (background dark)) (:foreground "LightSkyBlue"))
|
||||
(t (:inverse-video t :bold t)))
|
||||
"Face for upcoming deadlines."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-scheduled-today
|
||||
'((((type tty) (class color)) (:foreground "green"))
|
||||
(((class color) (background light)) (:foreground "DarkGreen"))
|
||||
(((class color) (background dark)) (:foreground "PaleGreen"))
|
||||
(t (:bold t :underline t)))
|
||||
"Face for items scheduled for a certain day."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-scheduled-previously
|
||||
'((((type tty pc) (class color) (background light)) (:foreground "red"))
|
||||
(((type tty pc) (class color) (background dark)) (:foreground "red1"))
|
||||
(((class color) (background light)) (:foreground "Firebrick"))
|
||||
(((class color) (background dark)) (:foreground "chocolate1"))
|
||||
(t (:bold t :italic t)))
|
||||
"Face for items scheduled previously, and not yet done."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-formula
|
||||
'((((type tty pc) (class color) (background light)) (:foreground "red"))
|
||||
(((type tty pc) (class color) (background dark)) (:foreground "red1"))
|
||||
(((class color) (background light)) (:foreground "Firebrick"))
|
||||
(((class color) (background dark)) (:foreground "chocolate1"))
|
||||
(t (:bold t :italic t)))
|
||||
"Face for formulas."
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
|
||||
(((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
|
||||
(((class color) (min-colors 8) (background light)) (:bold nil))))
|
||||
"Face used to indicate that a headline is DONE.
|
||||
This face is only used if `org-fontify-done-headline' is set."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-link
|
||||
'((((type tty) (class color)) (:foreground "cyan" :weight bold))
|
||||
(((class color) (background light)) (:foreground "Purple" :underline t))
|
||||
'((((class color) (background light)) (:foreground "Purple" :underline t))
|
||||
(((class color) (background dark)) (:foreground "Cyan" :underline t))
|
||||
(t (:bold t)))
|
||||
(t (:underline t)))
|
||||
"Face for links."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-date
|
||||
'((((class color) (background light)) (:foreground "Purple" :underline t))
|
||||
(((class color) (background dark)) (:foreground "Cyan" :underline t))
|
||||
(t (:underline t)))
|
||||
"Face for links."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-tag
|
||||
'((((type tty) (class color)) (:weight bold))
|
||||
(((class color) (background light)) (:weight bold))
|
||||
(((class color) (background dark)) (:weight bold))
|
||||
(t (:bold t)))
|
||||
'((t (:bold t)))
|
||||
"Face for tags."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-todo ;; font-lock-warning-face
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 16) (background light)) (:foreground "Red1" :bold t))
|
||||
(((class color) (min-colors 16) (background dark)) (:foreground "Pink" :bold t))
|
||||
(((class color) (min-colors 8) (background light)) (:foreground "red" :bold t))
|
||||
(((class color) (min-colors 8) (background dark)) (:foreground "red" :bold t))
|
||||
(t (:inverse-video t :bold t))))
|
||||
"Face for TODO keywords."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-done ;; font-lock-type-face
|
||||
'((((type tty) (class color)) (:foreground "green"))
|
||||
(((class color) (background light)) (:foreground "ForestGreen" :bold t))
|
||||
(((class color) (background dark)) (:foreground "PaleGreen" :bold t))
|
||||
(t (:bold t :underline t)))
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 16) (background light)) (:foreground "ForestGreen"))
|
||||
(((class color) (min-colors 16) (background dark)) (:foreground "PaleGreen"))
|
||||
(((class color) (min-colors 8)) (:foreground "green"))
|
||||
(t (:bold t))))
|
||||
"Face used for DONE."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-table ;; font-lock-function-name-face
|
||||
'((((type tty) (class color)) (:foreground "blue" :weight bold))
|
||||
(((class color) (background light)) (:foreground "Blue"))
|
||||
(((class color) (background dark)) (:foreground "LightSkyBlue"))
|
||||
(t (:inverse-video t :bold t)))
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
|
||||
(((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
|
||||
(((class color) (min-colors 16) (background light)) (:foreground "Blue"))
|
||||
(((class color) (min-colors 16) (background dark)) (:foreground "LightSkyBlue"))
|
||||
(((class color) (min-colors 8) (background light)) (:foreground "blue"))
|
||||
(((class color) (min-colors 8) (background dark)))))
|
||||
"Face used for tables."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-formula
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
|
||||
(((class color) (min-colors 88) (background dark)) (:foreground "chocolate1"))
|
||||
(((class color) (min-colors 8) (background light)) (:foreground "red"))
|
||||
(((class color) (min-colors 8) (background dark)) (:foreground "red"))
|
||||
(t (:bold t :italic t))))
|
||||
"Face for formulas."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-scheduled-today
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 88) (background light)) (:foreground "DarkGreen"))
|
||||
(((class color) (min-colors 88) (background dark)) (:foreground "PaleGreen"))
|
||||
(((class color) (min-colors 8)) (:foreground "green"))
|
||||
(t (:bold t :italic t))))
|
||||
"Face for items scheduled for a certain day."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-scheduled-previously
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
|
||||
(((class color) (min-colors 88) (background dark)) (:foreground "chocolate1"))
|
||||
(((class color) (min-colors 8) (background light)) (:foreground "red"))
|
||||
(((class color) (min-colors 8) (background dark)) (:foreground "red" :bold t))
|
||||
(t (:bold t))))
|
||||
"Face for items scheduled previously, and not yet done."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-time-grid ;; font-lock-variable-name-face
|
||||
'((((type tty) (class color)) (:foreground "yellow" :weight light))
|
||||
(((class color) (background light)) (:foreground "DarkGoldenrod"))
|
||||
(((class color) (background dark)) (:foreground "LightGoldenrod"))
|
||||
(t (:bold t :italic t)))
|
||||
(org-compatible-face
|
||||
'((((class color) (min-colors 16) (background light)) (:foreground "DarkGoldenrod"))
|
||||
(((class color) (min-colors 16) (background dark)) (:foreground "LightGoldenrod"))
|
||||
(((class color) (min-colors 8)) (:foreground "yellow" :weight light)))) ; FIXME: turn off???
|
||||
"Face used for time grids."
|
||||
:group 'org-faces)
|
||||
|
||||
(defvar org-level-faces
|
||||
(defconst org-level-faces
|
||||
'(org-level-1 org-level-2 org-level-3 org-level-4
|
||||
org-level-5 org-level-6 org-level-7 org-level-8
|
||||
))
|
||||
(defvar org-n-levels (length org-level-faces))
|
||||
(defconst org-n-levels (length org-level-faces))
|
||||
|
||||
(defconst org-bold-re
|
||||
(if (featurep 'xemacs)
|
||||
"\\([ ]\\|^\\)\\(\\*\\(\\w[a-zA-Z0-9-_ ]*?\\w\\)\\*\\)\\([ ,.]\\|$\\)"
|
||||
"\\([ ]\\|^\\)\\(\\*\\(\\w[[:word:] -_]*?\\w\\)\\*\\)\\([ ,.]\\|$\\)")
|
||||
"Regular expression for bold emphasis.")
|
||||
(defconst org-italic-re
|
||||
(if (featurep 'xemacs)
|
||||
"\\([ ]\\|^\\)\\(/\\(\\w[a-zA-Z0-9-_ ]*?\\w\\)/\\)\\([ ,.]\\|$\\)"
|
||||
"\\([ ]\\|^\\)\\(/\\(\\w[[:word:] -_]*?\\w\\)/\\)\\([ ,.]\\|$\\)")
|
||||
"Regular expression for italic emphasis.")
|
||||
(defconst org-underline-re
|
||||
(if (featurep 'xemacs)
|
||||
"\\([ ]\\|^\\)\\(_\\(\\w[a-zA-Z0-9-_ ]*?\\w\\)_\\)\\([ ,.]\\|$\\)"
|
||||
"\\([ ]\\|^\\)\\(_\\(\\w[[:word:] -_]*?\\w\\)_\\)\\([ ,.]\\|$\\)")
|
||||
"Regular expression for underline emphasis.")
|
||||
|
||||
;; Variables for pre-computed regular expressions, all buffer local
|
||||
(defvar org-done-string nil
|
||||
|
@ -2400,6 +2492,10 @@ The following commands are available:
|
|||
s)
|
||||
(match-string-no-properties num string)))
|
||||
|
||||
(defsubst org-no-properties (s)
|
||||
(remove-text-properties 0 (length s) org-rm-props s)
|
||||
s)
|
||||
|
||||
(defun org-current-time ()
|
||||
"Current time, possibly rounded to `org-time-stamp-rounding-minutes'."
|
||||
(if (> org-time-stamp-rounding-minutes 0)
|
||||
|
@ -2530,7 +2626,9 @@ that will be added to PLIST. Returns the string that was modified."
|
|||
(defun org-activate-bracket-links (limit)
|
||||
"Run through the buffer and add overlays to bracketed links."
|
||||
(if (re-search-forward org-bracket-link-regexp limit t)
|
||||
(let* ((help (concat "LINK: " (org-match-string-no-properties 1)))
|
||||
(let* ((help (concat "LINK: "
|
||||
(org-match-string-no-properties 1)))
|
||||
;; FIXME: above we should remove the escapes.
|
||||
(ip (list 'invisible 'org-link 'intangible t 'rear-nonsticky t
|
||||
'keymap org-mouse-map 'mouse-face 'highlight
|
||||
'help-echo help))
|
||||
|
@ -2678,20 +2776,23 @@ between words."
|
|||
(if (memq 'plain lk) '(org-activate-plain-links (0 'org-link t)))
|
||||
(if (memq 'bracket lk) '(org-activate-bracket-links (0 'org-link t)))
|
||||
(if (memq 'radio lk) '(org-activate-target-links (0 'org-link t)))
|
||||
(if (memq 'date lk) '(org-activate-dates (0 'org-link t)))
|
||||
(if (memq 'date lk) '(org-activate-dates (0 'org-date t)))
|
||||
(if (memq 'camel lk) '(org-activate-camels (0 'org-link t)))
|
||||
(if (memq 'tag lk) '(org-activate-tags (1 'org-tag prepend)))
|
||||
(if org-table-limit-column-width
|
||||
'(org-hide-wide-columns (0 nil append)))
|
||||
(list (concat "^\\*+[ \t]*" org-not-done-regexp)
|
||||
'(1 'org-warning t))
|
||||
'(1 'org-todo t))
|
||||
(list (concat "\\[#[A-Z]\\]") '(0 'org-special-keyword t))
|
||||
(list (concat "\\<" org-deadline-string) '(0 'org-special-keyword t))
|
||||
(list (concat "\\<" org-scheduled-string) '(0 'org-special-keyword t))
|
||||
(list (concat "\\<" org-closed-string) '(0 'org-special-keyword t))
|
||||
(if em '("\\(\\W\\|^\\)\\(\\*\\w+\\*\\)\\(\\W\\|$\\)" 2 'bold prepend))
|
||||
(if em '("\\(\\W\\|^\\)\\(/\\w+/\\)\\(\\W\\|$\\)" 2 'italic prepend))
|
||||
(if em '("\\(\\W\\|^\\)\\(_\\w+_\\)\\(\\W\\|$\\)" 2 'underline prepend))
|
||||
; (if em '("\\(\\W\\|^\\)\\(\\*\\w+\\*\\)\\(\\W\\|$\\)" 2 'bold prepend))
|
||||
; (if em '("\\(\\W\\|^\\)\\(/\\w+/\\)\\(\\W\\|$\\)" 2 'italic prepend))
|
||||
; (if em '("\\(\\W\\|^\\)\\(_\\w+_\\)\\(\\W\\|$\\)" 2 'underline prepend))
|
||||
(if em (list org-bold-re 2 ''bold 'prepend))
|
||||
(if em (list org-italic-re 2 ''italic 'prepend))
|
||||
(if em (list org-underline-re 2 ''underline 'prepend))
|
||||
(list (concat "^\\*+[ \t]*\\<\\(" org-comment-string
|
||||
"\\|" org-quote-string "\\)\\>")
|
||||
'(1 'org-special-keyword t))
|
||||
|
@ -2705,7 +2806,7 @@ between words."
|
|||
'("| *\\(:?=[^|\n]*\\)" (1 'org-formula t))
|
||||
'("^[ \t]*| *\\([#!$*_^]\\) *|" (1 'org-formula t))
|
||||
(if org-format-transports-properties-p
|
||||
'("| *\\(<[0-9]+>\\) *|" (1 'org-formula t)))
|
||||
'("| *\\(<[0-9]+>\\) *" (1 'org-formula t)))
|
||||
)))
|
||||
(setq org-font-lock-extra-keywords (delq nil org-font-lock-extra-keywords))
|
||||
;; Now set the full font-lock-keywords
|
||||
|
@ -3070,10 +3171,14 @@ or nil."
|
|||
(error (outline-next-heading)))
|
||||
(prog1 (match-string 0)
|
||||
(funcall outline-level)))))
|
||||
(unless (bolp) (newline))
|
||||
(cond
|
||||
((and (org-on-heading-p) (bolp)
|
||||
(save-excursion (backward-char 1) (not (org-invisible-p))))
|
||||
(open-line 1))
|
||||
((bolp) nil)
|
||||
(t (newline)))
|
||||
(insert head)
|
||||
(if (looking-at "[ \t]*")
|
||||
(replace-match " "))
|
||||
(just-one-space)
|
||||
(run-hooks 'org-insert-heading-hook))))
|
||||
|
||||
(defun org-insert-item ()
|
||||
|
@ -3086,8 +3191,20 @@ Return t when things worked, nil when we are not in an item."
|
|||
(org-at-item-p)
|
||||
t)
|
||||
(error nil)))
|
||||
(unless (bolp) (newline))
|
||||
(insert (match-string 0))
|
||||
(let* ((bul (match-string 0))
|
||||
(eow (save-excursion (beginning-of-line 1) (looking-at "[ \t]*")
|
||||
(match-end 0)))
|
||||
(eowcol (save-excursion (goto-char eow) (current-column))))
|
||||
(cond
|
||||
((and (org-at-item-p) (<= (point) eow))
|
||||
;; before the bullet
|
||||
(beginning-of-line 1)
|
||||
(open-line 1))
|
||||
((<= (point) eow)
|
||||
(beginning-of-line 1))
|
||||
(t (newline)))
|
||||
(insert bul)
|
||||
(just-one-space))
|
||||
(org-maybe-renumber-ordered-list)
|
||||
t))
|
||||
|
||||
|
@ -5293,7 +5410,8 @@ for a keyword. A numeric prefix directly selects the Nth keyword in
|
|||
(completion-ignore-case t)
|
||||
(org-select-this-todo-keyword
|
||||
(if (stringp arg) arg
|
||||
(and arg (integerp arg) (nth (1- arg) org-todo-keywords))))
|
||||
(and arg (integerp arg) (> arg 0)
|
||||
(nth (1- arg) org-todo-keywords))))
|
||||
rtn rtnall files file pos)
|
||||
(when (equal arg '(4))
|
||||
(setq org-select-this-todo-keyword
|
||||
|
@ -5893,6 +6011,7 @@ the documentation of `org-diary'."
|
|||
"Return the TODO information for agenda display."
|
||||
(let* ((props (list 'face nil
|
||||
'done-face 'org-done
|
||||
'org-not-done-regexp org-not-done-regexp
|
||||
'mouse-face 'highlight
|
||||
'keymap org-agenda-keymap
|
||||
'help-echo
|
||||
|
@ -5933,6 +6052,7 @@ the documentation of `org-diary'."
|
|||
(defun org-agenda-get-timestamps ()
|
||||
"Return the date stamp information for agenda display."
|
||||
(let* ((props (list 'face nil
|
||||
'org-not-done-regexp org-not-done-regexp
|
||||
'mouse-face 'highlight
|
||||
'keymap org-agenda-keymap
|
||||
'help-echo
|
||||
|
@ -5998,6 +6118,7 @@ the documentation of `org-diary'."
|
|||
(defun org-agenda-get-closed ()
|
||||
"Return the logged TODO entries for agenda display."
|
||||
(let* ((props (list 'mouse-face 'highlight
|
||||
'org-not-done-regexp org-not-done-regexp
|
||||
'keymap org-agenda-keymap
|
||||
'help-echo
|
||||
(format "mouse-2 or RET jump to org file %s"
|
||||
|
@ -6049,6 +6170,7 @@ the documentation of `org-diary'."
|
|||
"Return the deadline information for agenda display."
|
||||
(let* ((wdays org-deadline-warning-days)
|
||||
(props (list 'mouse-face 'highlight
|
||||
'org-not-done-regexp org-not-done-regexp
|
||||
'keymap org-agenda-keymap
|
||||
'help-echo
|
||||
(format "mouse-2 or RET jump to org file %s"
|
||||
|
@ -6104,6 +6226,7 @@ the documentation of `org-diary'."
|
|||
(defun org-agenda-get-scheduled ()
|
||||
"Return the scheduled information for agenda display."
|
||||
(let* ((props (list 'face 'org-scheduled-previously
|
||||
'org-not-done-regexp org-not-done-regexp
|
||||
'undone-face 'org-scheduled-previously
|
||||
'done-face 'org-done
|
||||
'mouse-face 'highlight
|
||||
|
@ -6153,6 +6276,7 @@ the documentation of `org-diary'."
|
|||
(defun org-agenda-get-blocks ()
|
||||
"Return the date-range information for agenda display."
|
||||
(let* ((props (list 'face nil
|
||||
'org-not-done-regexp org-not-done-regexp
|
||||
'mouse-face 'highlight
|
||||
'keymap org-agenda-keymap
|
||||
'help-echo
|
||||
|
@ -6251,7 +6375,6 @@ only the correctly processes TXT should be returned - this is used by
|
|||
(file-name-nondirectory buffer-file-name))
|
||||
"")))
|
||||
(tag (if tags (nth (1- (length tags)) tags) ""))
|
||||
;;(tag (or (nth (1- (or (length tags) 0)) tags) "")) FIXME: rm
|
||||
time ;; needed for the eval of the prefix format
|
||||
(ts (if dotime (concat (if (stringp dotime) dotime "") txt)))
|
||||
(time-of-day (and dotime (org-get-time-of-day ts)))
|
||||
|
@ -6389,8 +6512,25 @@ HH:MM."
|
|||
|
||||
(defun org-finalize-agenda-entries (list)
|
||||
"Sort and concatenate the agenda items."
|
||||
(setq list (mapcar 'org-agenda-highlight-todo list))
|
||||
(mapconcat 'identity (sort list 'org-entries-lessp) "\n"))
|
||||
|
||||
(defun org-agenda-highlight-todo (x)
|
||||
(let (re)
|
||||
(if (eq x 'line)
|
||||
(save-excursion
|
||||
(beginning-of-line 1)
|
||||
(setq re (get-text-property (point) 'org-not-done-regexp))
|
||||
(goto-char (+ (point) (get-text-property (point) 'prefix-length)))
|
||||
(and (looking-at (concat "[ \t]*" re))
|
||||
(add-text-properties (match-beginning 0) (match-end 0)
|
||||
'(face org-todo))))
|
||||
(setq re (get-text-property 0 'org-not-done-regexp x))
|
||||
(and re (string-match re x)
|
||||
(add-text-properties (match-beginning 0) (match-end 0)
|
||||
'(face org-todo) x))
|
||||
x)))
|
||||
|
||||
(defsubst org-cmp-priority (a b)
|
||||
"Compare the priorities of string A and B."
|
||||
(let ((pa (or (get-text-property 1 'priority a) 0))
|
||||
|
@ -6541,7 +6681,7 @@ the same tree node, and the headline of the tree node in the Org-mode file."
|
|||
(and (outline-next-heading)
|
||||
(org-flag-heading nil))) ; show the next heading
|
||||
(org-todo arg)
|
||||
(forward-char 1)
|
||||
(and (bolp) (forward-char 1))
|
||||
(setq newhead (org-get-heading))
|
||||
(save-excursion
|
||||
(org-back-to-heading)
|
||||
|
@ -6581,12 +6721,13 @@ the new TODO state."
|
|||
(replace-match new t t)
|
||||
(beginning-of-line 1)
|
||||
(add-text-properties (point-at-bol) (point-at-eol) props)
|
||||
(if fixface
|
||||
(add-text-properties
|
||||
(point-at-bol) (point-at-eol)
|
||||
(list 'face
|
||||
(if org-last-todo-state-is-todo
|
||||
undone-face done-face))))
|
||||
(when fixface
|
||||
(add-text-properties
|
||||
(point-at-bol) (point-at-eol)
|
||||
(list 'face
|
||||
(if org-last-todo-state-is-todo
|
||||
undone-face done-face)))
|
||||
(org-agenda-highlight-todo 'line))
|
||||
(beginning-of-line 1))
|
||||
(error "Line update did not work")))
|
||||
(beginning-of-line 0)))))
|
||||
|
@ -7306,7 +7447,10 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
|
|||
(format "Execute \"%s\" in shell? "
|
||||
(org-add-props cmd nil
|
||||
'face 'org-warning))))
|
||||
(shell-command cmd)
|
||||
(progn
|
||||
(message "Executing %s..." cmd)
|
||||
(shell-command cmd)
|
||||
(message "Executing %s...done" cmd))
|
||||
(error "Abort"))))
|
||||
|
||||
(t
|
||||
|
@ -7760,7 +7904,11 @@ If the file does not exist, an error is thrown."
|
|||
(setq cmd 'emacs))))
|
||||
(cond
|
||||
((and (stringp cmd) (not (string-match "^\\s-*$" cmd)))
|
||||
(setq cmd (format cmd (concat "\"" file "\"")))
|
||||
; (setq cmd (format cmd (concat "\"" file "\"")))
|
||||
;; FIXME: normalize use of quotes
|
||||
(if (string-match "['\"]%s['\"]" cmd)
|
||||
(setq cmd (replace-match "'%s'" t t cmd)))
|
||||
(setq cmd (format cmd file))
|
||||
(save-window-excursion
|
||||
(shell-command (concat cmd " &"))))
|
||||
((or (stringp cmd)
|
||||
|
@ -8154,12 +8302,16 @@ is in the current directory or below."
|
|||
(complete-file
|
||||
;; Completing read for file names.
|
||||
(setq file (read-file-name "File: "))
|
||||
(let ((pwd (file-name-as-directory (expand-file-name "."))))
|
||||
(let ((pwd (file-name-as-directory (expand-file-name ".")))
|
||||
(pwd1 (file-name-as-directory (abbreviate-file-name
|
||||
(expand-file-name ".")))))
|
||||
(cond
|
||||
((equal complete-file '(16))
|
||||
(setq link (org-make-link
|
||||
"file:"
|
||||
(abbreviate-file-name (expand-file-name file)))))
|
||||
((string-match (concat "^" (regexp-quote pwd1) "\\(.+\\)") file)
|
||||
(setq link (org-make-link "file:" (match-string 1 file))))
|
||||
((string-match (concat "^" (regexp-quote pwd) "\\(.+\\)")
|
||||
(expand-file-name file))
|
||||
(setq link (org-make-link
|
||||
|
@ -8665,7 +8817,7 @@ This is being used to correctly align a single field after TAB or RET.")
|
|||
(> (org-string-width xx) fmax))
|
||||
(org-add-props xx nil
|
||||
'help-echo
|
||||
(concat "Clipped table field, use C-c ` to edit. Full value is:\n" (copy-sequence xx)))
|
||||
(concat "Clipped table field, use C-c ` to edit. Full value is:\n" (org-no-properties (copy-sequence xx))))
|
||||
(setq f1 (min fmax (or (string-match org-bracket-link-regexp xx) fmax)))
|
||||
(unless (> f1 1)
|
||||
(error "Cannot narrow field starting with wide link \"%s\""
|
||||
|
@ -11752,21 +11904,35 @@ headlines. The default is 3. Lower levels will become bulleted lists."
|
|||
;; FILE link
|
||||
(let* ((filename path)
|
||||
(abs-p (file-name-absolute-p filename))
|
||||
(thefile (if abs-p (expand-file-name filename) filename))
|
||||
(thefile (save-match-data
|
||||
(if (string-match ":[0-9]+$" thefile)
|
||||
(replace-match "" t t thefile)
|
||||
thefile)))
|
||||
(file-is-image-p
|
||||
(save-match-data
|
||||
(string-match (org-image-file-name-regexp) thefile))))
|
||||
thefile file-is-image-p search)
|
||||
(save-match-data
|
||||
(if (string-match "::\\(.*\\)" filename)
|
||||
(setq search (match-string 1 filename)
|
||||
filename (replace-match "" nil nil filename)))
|
||||
(setq file-is-image-p
|
||||
(string-match (org-image-file-name-regexp) filename))
|
||||
(setq thefile (if abs-p (expand-file-name filename) filename))
|
||||
(when (and org-export-html-link-org-files-as-html
|
||||
(string-match "\\.org$" thefile))
|
||||
(setq thefile (concat (substring thefile 0
|
||||
(match-beginning 0))
|
||||
".html"))
|
||||
(if (and search
|
||||
;; make sure this is can be used as target search
|
||||
(not (string-match "^[0-9]*$" search))
|
||||
(not (string-match "^\\*" search))
|
||||
(not (string-match "^/.*/$" search)))
|
||||
(setq thefile (concat thefile "#"
|
||||
(org-solidify-link-text
|
||||
(org-link-unescape search)))))))
|
||||
(setq rpl (if (and org-export-html-inline-images
|
||||
file-is-image-p)
|
||||
(concat "<img src=\"" thefile "\"/>")
|
||||
(concat "<a href=\"" thefile "\">" desc "</a>")))))
|
||||
((member type '("bbdb" "vm" "wl" "mhe" "rmail" "gnus" "shell"))
|
||||
(setq rpl (concat "<i><" type ":" path "></i>"))))
|
||||
;; FIXME: We get to see the escaped links!!!!!
|
||||
(setq rpl (concat "<i><" type ":"
|
||||
(save-match-data (org-link-unescape path))
|
||||
"></i>"))))
|
||||
(setq line (replace-match rpl t t line)
|
||||
start (+ start (length rpl))))
|
||||
;; TODO items
|
||||
|
@ -12111,15 +12277,24 @@ stacked delimiters is N. Escaping delimiters is not possible."
|
|||
(setq string (replace-match (match-string 1 string) t t string))))
|
||||
string)
|
||||
|
||||
;(defun org-export-html-convert-emphasize (string)
|
||||
; (let (c (s 0))
|
||||
; (while (string-match "\\(\\W\\|^\\)\\([*/_]\\)\\(\\w+\\)\\2\\(\\W\\|$\\)" string s)
|
||||
; (setq c (cdr (assoc (match-string 2 string)
|
||||
; '(("*" . "b") ("/" . "i") ("_" . "u"))))
|
||||
; s (+ (match-end 0) 3)
|
||||
; string (replace-match
|
||||
; (concat "\\1<" c ">\\3</" c ">\\4") t nil string)))
|
||||
; string))
|
||||
|
||||
(defun org-export-html-convert-emphasize (string)
|
||||
(let (c (s 0))
|
||||
(while (string-match "\\(\\W\\|^\\)\\([*/_]\\)\\(\\w+\\)\\2\\(\\W\\|$\\)" string s)
|
||||
(setq c (cdr (assoc (match-string 2 string)
|
||||
'(("*" . "b") ("/" . "i") ("_" . "u"))))
|
||||
s (+ (match-end 0) 3)
|
||||
string (replace-match
|
||||
(concat "\\1<" c ">\\3</" c ">\\4") t nil string)))
|
||||
string))
|
||||
(while (string-match org-italic-re string)
|
||||
(setq string (replace-match "\\1<i>\\3</i>\\4" t nil string)))
|
||||
(while (string-match org-bold-re string)
|
||||
(setq string (replace-match "\\1<b>\\3</b>\\4" t nil string)))
|
||||
(while (string-match org-underline-re string)
|
||||
(setq string (replace-match "\\1<u>\\3</u>\\4" t nil string)))
|
||||
string)
|
||||
|
||||
(defun org-parse-key-lines ()
|
||||
"Find the special key lines with the information for exporters."
|
||||
|
|
|
@ -594,20 +594,24 @@ An alternative value is \" . \", if you use a font with a narrow period."
|
|||
'(face subscript display (raise -0.3))
|
||||
'(face superscript display (raise +0.3)))))
|
||||
|
||||
(defun tex-font-lock-match-suscript (limit)
|
||||
"Match subscript and superscript patterns up to LIMIT."
|
||||
(when (re-search-forward "[_^] *\\([^\n\\{}]\\|\
|
||||
\\\\\\([a-zA-Z@]+\\|[^ \t\n]\\)\\|{[^\\{]*}\\|\\({\\)\\)" limit t)
|
||||
(when (match-end 3)
|
||||
(let ((beg (match-beginning 3))
|
||||
(end (save-restriction
|
||||
(narrow-to-region (point-min) limit)
|
||||
(condition-case nil (scan-lists (point) 1 1) (error nil)))))
|
||||
(store-match-data (if end
|
||||
(list (match-beginning 0) end beg end)
|
||||
(list beg beg beg beg)))))
|
||||
t))
|
||||
|
||||
(defconst tex-font-lock-keywords-3
|
||||
(append tex-font-lock-keywords-2
|
||||
(eval-when-compile
|
||||
(let ((general "\\([a-zA-Z@]+\\|[^ \t\n]\\)")
|
||||
(slash "\\\\")
|
||||
;; This is not the same regexp as before: it has a `+' removed.
|
||||
;; The + makes the matching faster in the above cases (where we can
|
||||
;; exit as soon as the match fails) but would make this matching
|
||||
;; degenerate to nasty complexity (because we try to match the
|
||||
;; closing brace, which forces trying all matching combinations).
|
||||
(arg "{\\(?:[^{}\\]\\|\\\\.\\|{[^}]*}\\)*"))
|
||||
`((,(concat "[_^] *\\([^\n\\{}#]\\|" slash general "\\|#[0-9]\\|" arg "}\\)")
|
||||
(1 (tex-font-lock-suscript (match-beginning 0))
|
||||
append))))))
|
||||
'((tex-font-lock-match-suscript
|
||||
(1 (tex-font-lock-suscript (match-beginning 0)) append))))
|
||||
"Experimental expressions to highlight in TeX modes.")
|
||||
|
||||
(defvar tex-font-lock-keywords tex-font-lock-keywords-1
|
||||
|
|
|
@ -47,11 +47,15 @@
|
|||
;; would be accompanied by a full redisplay.
|
||||
|
||||
(define-minor-mode tooltip-mode
|
||||
"Toggle Tooltip display.
|
||||
With ARG, turn tooltip mode on if and only if ARG is positive.
|
||||
"Toggle Tooltip mode.
|
||||
With ARG, turn Tooltip mode on if and only if ARG is positive.
|
||||
When this minor mode is enabled, Emacs displays help text
|
||||
in a pop-up window on mouse-over. When it is disabled,
|
||||
Emacs displays the help text in the echo area instead."
|
||||
in a pop-up window for buttons and menu items that you put the mouse on.
|
||||
\(However, if `tooltip-use-echo-area' is non-nil, this and
|
||||
all pop-up help appears in the echo area.)
|
||||
|
||||
When Tooltip mode is disabled, Emacs displays one line of
|
||||
the help text in the echo area, and does not make a pop-up window."
|
||||
:global t
|
||||
:init-value (not (or noninteractive
|
||||
emacs-basic-display
|
||||
|
@ -142,7 +146,9 @@ position to pop up the tooltip."
|
|||
:group 'basic-faces)
|
||||
|
||||
(defcustom tooltip-use-echo-area nil
|
||||
"Use the echo area instead of tooltip frames for help and GUD tooltips."
|
||||
"Use the echo area instead of tooltip frames for help and GUD tooltips.
|
||||
To display multi-line help text in the echo area, set this to t
|
||||
and enable `tooltip-mode'."
|
||||
:type 'boolean
|
||||
:group 'tooltip)
|
||||
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
2006-04-18 Richard Stallman <rms@gnu.org>
|
||||
|
||||
* tips.texi (Coding Conventions): Explain when the package's
|
||||
prefix should appear later on (not at the start of the name).
|
||||
|
||||
* searching.texi (String Search): Clarify effect of NOERROR.
|
||||
|
||||
* modes.texi (Imenu): Clarify what special items do.
|
||||
|
||||
* hooks.texi (Standard Hooks): Delete text about old hook names.
|
||||
|
||||
2006-04-17 Romain Francoise <romain@orebokech.com>
|
||||
|
||||
* variables.texi (Local Variables): Update the default value of
|
||||
`max-specpdl-size'.
|
||||
|
||||
2006-04-15 Michael Olson <mwolson@gnu.org>
|
||||
|
||||
* processes.texi (Transaction Queues): Mention the new optional
|
||||
|
@ -59,8 +75,7 @@
|
|||
|
||||
2006-03-19 Alan Mackenzie <acm@muc.de>
|
||||
|
||||
* text.texi (Special Properties): Clarify the definition of
|
||||
'fontified.
|
||||
* text.texi (Special Properties): Clarify `fontified' property.
|
||||
|
||||
2006-03-16 Richard Stallman <rms@gnu.org>
|
||||
|
||||
|
|
|
@ -31,11 +31,6 @@ these functions are called in a special way (they are passed arguments,
|
|||
or their values are used). The variables whose names end in
|
||||
@samp{-function} have single functions as their values.
|
||||
|
||||
(In older Emacs versions, some normal hooks had names ending in
|
||||
@samp{-hooks} or @samp{-functions}, and some abnormal hooks had names
|
||||
ending in @samp{-hook}. We have renamed all of these to conform to
|
||||
the above conventions.)
|
||||
|
||||
@c We need to xref to where each hook is documented or else document
|
||||
@c it here.
|
||||
|
||||
|
|
|
@ -2174,10 +2174,9 @@ An element can also look like this:
|
|||
(@var{menu-title} @var{regexp} @var{index} @var{function} @var{arguments}@dots{})
|
||||
@end example
|
||||
|
||||
Like in the previous case, each match for this element creates an
|
||||
index item. However, if this index item is selected by the user, it
|
||||
calls @var{function} with arguments consisting of the item name, the
|
||||
buffer position, and @var{arguments}.
|
||||
Each match for this element creates an index item, and when the index
|
||||
item is selected by the user, it calls @var{function} with arguments
|
||||
consisting of the item name, the buffer position, and @var{arguments}.
|
||||
|
||||
For Emacs Lisp mode, @code{imenu-generic-expression} could look like
|
||||
this:
|
||||
|
|
|
@ -86,6 +86,10 @@ upper bound and returns @code{nil}. (It would be more consistent now to
|
|||
return the new position of point in that case, but some existing
|
||||
programs may depend on a value of @code{nil}.)
|
||||
|
||||
The argument @var{noerror} only affects valid searches which fail to
|
||||
find a match. Invalid arguments cause errors regardless of
|
||||
@var{noerror}.
|
||||
|
||||
If @var{repeat} is supplied (it must be a positive number), then the
|
||||
search is repeated that many times (each time starting at the end of the
|
||||
previous time's match). If these successive searches succeed, the
|
||||
|
|
|
@ -56,9 +56,13 @@ distinguish your program from other Lisp programs.@footnote{The
|
|||
benefits of a Common Lisp-style package system are considered not to
|
||||
outweigh the costs.} Then take care to begin the names of all global
|
||||
variables, constants, and functions in your program with the chosen
|
||||
prefix. This helps avoid name conflicts. (Occasionally, for a command
|
||||
name intended for users to use, it is cleaner if some words come
|
||||
before the package name prefix.)
|
||||
prefix. This helps avoid name conflicts.
|
||||
|
||||
Occasionally, for a command name intended for users to use, it is more
|
||||
convenient if some words come before the package's name prefix. And
|
||||
constructs that define functions, variables, etc., work better if they
|
||||
start with @samp{defun} or @samp{defvar}, so put the name prefix later
|
||||
on in the name.
|
||||
|
||||
This recommendation applies even to names for traditional Lisp
|
||||
primitives that are not primitives in Emacs Lisp---such as
|
||||
|
|
|
@ -276,7 +276,7 @@ that Lisp avoids infinite recursion on an ill-defined function.
|
|||
@code{max-lisp-eval-depth} provides another limit on depth of nesting.
|
||||
@xref{Definition of max-lisp-eval-depth,, Eval}.
|
||||
|
||||
The default value is 600. Entry to the Lisp debugger increases the
|
||||
The default value is 1000. Entry to the Lisp debugger increases the
|
||||
value, if there is little room left, to make sure the debugger itself
|
||||
has room to execute.
|
||||
@end defvar
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue