Merge from trunk.
This commit is contained in:
commit
59361254a6
72 changed files with 4371 additions and 1709 deletions
|
@ -1,4 +1,4 @@
|
|||
2011-07-05 Paul Eggert <eggert@cs.ucla.edu>
|
||||
2011-07-06 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Assume support for memcmp, memcpy, memmove, memset.
|
||||
This simplifies the code a bit. All current platforms have these,
|
||||
|
@ -6,6 +6,10 @@
|
|||
can add the gnulib modules for these (a 1-line change to Makefile.in).
|
||||
* configure.in: Don't check for memcmp, memcpy, memmove, memset.
|
||||
|
||||
2011-07-05 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* configure.in (HAVE_GCONF): Allow both HAVE_GCONF and HAVE_GSETTINGS.
|
||||
|
||||
2011-07-01 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in (SETTINGS_CFLAGS, SETTINGS_LIBS) [HAVE_GCONF]: Fix typo.
|
||||
|
|
6
autogen/configure
vendored
6
autogen/configure
vendored
|
@ -11166,7 +11166,7 @@ $as_echo "#define HAVE_GSETTINGS 1" >>confdefs.h
|
|||
fi
|
||||
|
||||
HAVE_GCONF=no
|
||||
if test "${HAVE_GSETTINGS}" = "no" && test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
|
||||
if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
|
||||
|
||||
succeeded=no
|
||||
|
||||
|
@ -11265,8 +11265,8 @@ $as_echo "no" >&6; }
|
|||
|
||||
$as_echo "#define HAVE_GCONF 1" >>confdefs.h
|
||||
|
||||
SETTINGS_CFLAGS="$GCONF_CFLAGS"
|
||||
SETTINGS_LIBS="$GCONF_LIBS"
|
||||
SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GCONF_CFLAGS"
|
||||
SETTINGS_LIBS="$SETTINGS_LIBS $GCONF_LIBS"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
@ -1996,13 +1996,13 @@ fi
|
|||
dnl GConf has been tested under GNU/Linux only.
|
||||
dnl The version is really arbitrary, it is about the same age as Gtk+ 2.6.
|
||||
HAVE_GCONF=no
|
||||
if test "${HAVE_GSETTINGS}" = "no" && test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
|
||||
if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
|
||||
PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.13, HAVE_GCONF=yes, HAVE_GCONF=no)
|
||||
if test "$HAVE_GCONF" = yes; then
|
||||
AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.])
|
||||
dnl Newer GConf doesn't link with g_objects, so this is not defined.
|
||||
SETTINGS_CFLAGS="$GCONF_CFLAGS"
|
||||
SETTINGS_LIBS="$GCONF_LIBS"
|
||||
SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GCONF_CFLAGS"
|
||||
SETTINGS_LIBS="$SETTINGS_LIBS $GCONF_LIBS"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
@ -1,3 +1,18 @@
|
|||
2011-07-06 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* functions.texi (Calling Functions): Link to the "Interactive
|
||||
Call" node (bug#1001).
|
||||
|
||||
2011-07-06 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* customize.texi (Composite Types): Move alist and plist to here
|
||||
from Simple Types (Bug#7545).
|
||||
|
||||
* elisp.texi (Top): Update menu description.
|
||||
|
||||
* display.texi (Face Attributes): Document negative line widths
|
||||
(Bug#6113).
|
||||
|
||||
2011-07-03 Tobias C. Rittweiler <tcr@freebits.de> (tiny change)
|
||||
|
||||
* searching.texi (Match Data): Note that match data can be
|
||||
|
|
|
@ -513,8 +513,7 @@ equivalent to @code{(string)}.
|
|||
Introduction, widget, The Emacs Widget Library}, for details.
|
||||
|
||||
@menu
|
||||
* Simple Types:: Simple customization types: sexp, integer, number,
|
||||
string, file, directory, alist.
|
||||
* Simple Types:: Simple customization types: sexp, integer, etc.
|
||||
* Composite Types:: Build new types from other types or data.
|
||||
* Splicing into Lists:: Splice elements into list with @code{:inline}.
|
||||
* Type Keywords:: Keyword-argument pairs in a customization type.
|
||||
|
@ -577,22 +576,103 @@ You can use the @code{:options} keyword in a hook variable's
|
|||
@code{defcustom} to specify a list of functions recommended for use in
|
||||
the hook; see @ref{Variable Definitions}.
|
||||
|
||||
@item alist
|
||||
The value must be a list of cons-cells, the @sc{car} of each cell
|
||||
representing a key, and the @sc{cdr} of the same cell representing an
|
||||
associated value. The user can add and delete key/value pairs, and
|
||||
edit both the key and the value of each pair.
|
||||
@item symbol
|
||||
The value must be a symbol. It appears in the customization buffer as
|
||||
the name of the symbol.
|
||||
|
||||
You can specify the key and value types like this:
|
||||
@item function
|
||||
The value must be either a lambda expression or a function name. When
|
||||
it is a function name, you can do completion with @kbd{M-@key{TAB}}.
|
||||
|
||||
@smallexample
|
||||
(alist :key-type @var{key-type} :value-type @var{value-type})
|
||||
@end smallexample
|
||||
@item variable
|
||||
The value must be a variable name, and you can do completion with
|
||||
@kbd{M-@key{TAB}}.
|
||||
|
||||
@item face
|
||||
The value must be a symbol which is a face name, and you can do
|
||||
completion with @kbd{M-@key{TAB}}.
|
||||
|
||||
@item boolean
|
||||
The value is boolean---either @code{nil} or @code{t}. Note that by
|
||||
using @code{choice} and @code{const} together (see the next section),
|
||||
you can specify that the value must be @code{nil} or @code{t}, but also
|
||||
specify the text to describe each value in a way that fits the specific
|
||||
meaning of the alternative.
|
||||
|
||||
@item coding-system
|
||||
The value must be a coding-system name, and you can do completion with
|
||||
@kbd{M-@key{TAB}}.
|
||||
|
||||
@item color
|
||||
The value must be a valid color name, and you can do completion with
|
||||
@kbd{M-@key{TAB}}. A sample is provided.
|
||||
@end table
|
||||
|
||||
@node Composite Types
|
||||
@subsection Composite Types
|
||||
@cindex composite types (customization)
|
||||
|
||||
When none of the simple types is appropriate, you can use composite
|
||||
types, which build new types from other types or from specified data.
|
||||
The specified types or data are called the @dfn{arguments} of the
|
||||
composite type. The composite type normally looks like this:
|
||||
|
||||
@example
|
||||
(@var{constructor} @var{arguments}@dots{})
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
where @var{key-type} and @var{value-type} are customization type
|
||||
specifications. The default key type is @code{sexp}, and the default
|
||||
value type is @code{sexp}.
|
||||
but you can also add keyword-value pairs before the arguments, like
|
||||
this:
|
||||
|
||||
@example
|
||||
(@var{constructor} @r{@{}@var{keyword} @var{value}@r{@}}@dots{} @var{arguments}@dots{})
|
||||
@end example
|
||||
|
||||
Here is a table of constructors and how to use them to write
|
||||
composite types:
|
||||
|
||||
@table @code
|
||||
@item (cons @var{car-type} @var{cdr-type})
|
||||
The value must be a cons cell, its @sc{car} must fit @var{car-type}, and
|
||||
its @sc{cdr} must fit @var{cdr-type}. For example, @code{(cons string
|
||||
symbol)} is a customization type which matches values such as
|
||||
@code{("foo" . foo)}.
|
||||
|
||||
In the customization buffer, the @sc{car} and the @sc{cdr} are
|
||||
displayed and edited separately, each according to the type
|
||||
that you specify for it.
|
||||
|
||||
@item (list @var{element-types}@dots{})
|
||||
The value must be a list with exactly as many elements as the
|
||||
@var{element-types} given; and each element must fit the
|
||||
corresponding @var{element-type}.
|
||||
|
||||
For example, @code{(list integer string function)} describes a list of
|
||||
three elements; the first element must be an integer, the second a
|
||||
string, and the third a function.
|
||||
|
||||
In the customization buffer, each element is displayed and edited
|
||||
separately, according to the type specified for it.
|
||||
|
||||
@item (group @var{element-types}@dots{})
|
||||
This works like @code{list} except for the formatting
|
||||
of text in the Custom buffer. @code{list} labels each
|
||||
element value with its tag; @code{group} does not.
|
||||
|
||||
@item (vector @var{element-types}@dots{})
|
||||
Like @code{list} except that the value must be a vector instead of a
|
||||
list. The elements work the same as in @code{list}.
|
||||
|
||||
@item (alist :key-type @var{key-type} :value-type @var{value-type})
|
||||
The value must be a list of cons-cells, the @sc{car} of each cell
|
||||
representing a key of customization type @var{key-type}, and the
|
||||
@sc{cdr} of the same cell representing a value of customization type
|
||||
@var{value-type}. The user can add and delete key/value pairs, and
|
||||
edit both the key and the value of each pair.
|
||||
|
||||
If omitted, @var{key-type} and @var{value-type} default to
|
||||
@code{sexp}.
|
||||
|
||||
The user can add any key matching the specified key type, but you can
|
||||
give some keys a preferential treatment by specifying them with the
|
||||
|
@ -687,105 +767,11 @@ and the VALUE is a list of that person's pets."
|
|||
:type '(alist :value-type (repeat string)))
|
||||
@end smallexample
|
||||
|
||||
@item plist
|
||||
The @code{plist} custom type is similar to the @code{alist} (see above),
|
||||
except that the information is stored as a property list, i.e. a list of
|
||||
this form:
|
||||
|
||||
@smallexample
|
||||
(@var{key} @var{value} @var{key} @var{value} @var{key} @var{value} @dots{})
|
||||
@end smallexample
|
||||
|
||||
The default @code{:key-type} for @code{plist} is @code{symbol},
|
||||
rather than @code{sexp}.
|
||||
|
||||
@item symbol
|
||||
The value must be a symbol. It appears in the customization buffer as
|
||||
the name of the symbol.
|
||||
|
||||
@item function
|
||||
The value must be either a lambda expression or a function name. When
|
||||
it is a function name, you can do completion with @kbd{M-@key{TAB}}.
|
||||
|
||||
@item variable
|
||||
The value must be a variable name, and you can do completion with
|
||||
@kbd{M-@key{TAB}}.
|
||||
|
||||
@item face
|
||||
The value must be a symbol which is a face name, and you can do
|
||||
completion with @kbd{M-@key{TAB}}.
|
||||
|
||||
@item boolean
|
||||
The value is boolean---either @code{nil} or @code{t}. Note that by
|
||||
using @code{choice} and @code{const} together (see the next section),
|
||||
you can specify that the value must be @code{nil} or @code{t}, but also
|
||||
specify the text to describe each value in a way that fits the specific
|
||||
meaning of the alternative.
|
||||
|
||||
@item coding-system
|
||||
The value must be a coding-system name, and you can do completion with
|
||||
@kbd{M-@key{TAB}}.
|
||||
|
||||
@item color
|
||||
The value must be a valid color name, and you can do completion with
|
||||
@kbd{M-@key{TAB}}. A sample is provided.
|
||||
@end table
|
||||
|
||||
@node Composite Types
|
||||
@subsection Composite Types
|
||||
@cindex composite types (customization)
|
||||
|
||||
When none of the simple types is appropriate, you can use composite
|
||||
types, which build new types from other types or from specified data.
|
||||
The specified types or data are called the @dfn{arguments} of the
|
||||
composite type. The composite type normally looks like this:
|
||||
|
||||
@example
|
||||
(@var{constructor} @var{arguments}@dots{})
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
but you can also add keyword-value pairs before the arguments, like
|
||||
this:
|
||||
|
||||
@example
|
||||
(@var{constructor} @r{@{}@var{keyword} @var{value}@r{@}}@dots{} @var{arguments}@dots{})
|
||||
@end example
|
||||
|
||||
Here is a table of constructors and how to use them to write
|
||||
composite types:
|
||||
|
||||
@table @code
|
||||
@item (cons @var{car-type} @var{cdr-type})
|
||||
The value must be a cons cell, its @sc{car} must fit @var{car-type}, and
|
||||
its @sc{cdr} must fit @var{cdr-type}. For example, @code{(cons string
|
||||
symbol)} is a customization type which matches values such as
|
||||
@code{("foo" . foo)}.
|
||||
|
||||
In the customization buffer, the @sc{car} and the @sc{cdr} are
|
||||
displayed and edited separately, each according to the type
|
||||
that you specify for it.
|
||||
|
||||
@item (list @var{element-types}@dots{})
|
||||
The value must be a list with exactly as many elements as the
|
||||
@var{element-types} given; and each element must fit the
|
||||
corresponding @var{element-type}.
|
||||
|
||||
For example, @code{(list integer string function)} describes a list of
|
||||
three elements; the first element must be an integer, the second a
|
||||
string, and the third a function.
|
||||
|
||||
In the customization buffer, each element is displayed and edited
|
||||
separately, according to the type specified for it.
|
||||
|
||||
@item (group @var{element-types}@dots{})
|
||||
This works like @code{list} except for the formatting
|
||||
of text in the Custom buffer. @code{list} labels each
|
||||
element value with its tag; @code{group} does not.
|
||||
|
||||
@item (vector @var{element-types}@dots{})
|
||||
Like @code{list} except that the value must be a vector instead of a
|
||||
list. The elements work the same as in @code{list}.
|
||||
@item (plist :key-type @var{key-type} :value-type @var{value-type})
|
||||
This customization type is similar to @code{alist} (see above), except
|
||||
that (i) the information is stored as a property list,
|
||||
(@pxref{Property Lists}), and (ii) @var{key-type}, if omitted,
|
||||
defaults to @code{symbol} rather than @code{sexp}.
|
||||
|
||||
@item (choice @var{alternative-types}@dots{})
|
||||
The value must fit at least one of @var{alternative-types}.
|
||||
|
|
|
@ -2092,7 +2092,10 @@ Draw a box with lines of width 1, in color @var{color}.
|
|||
|
||||
@item @code{(:line-width @var{width} :color @var{color} :style @var{style})}
|
||||
This way you can explicitly specify all aspects of the box. The value
|
||||
@var{width} specifies the width of the lines to draw; it defaults to 1.
|
||||
@var{width} specifies the width of the lines to draw; it defaults to
|
||||
1. A negative width @var{-n} means to draw a line of width @var{n}
|
||||
that occupies the space of the underlying text, thus avoiding any
|
||||
increase in the character height or width.
|
||||
|
||||
The value @var{color} specifies the color to draw with. The default is
|
||||
the foreground color of the face for simple boxes, and the background
|
||||
|
|
|
@ -508,8 +508,7 @@ Writing Customization Definitions
|
|||
|
||||
Customization Types
|
||||
|
||||
* Simple Types:: Simple customization types: sexp, integer, number,
|
||||
string, file, directory, alist.
|
||||
* Simple Types:: Simple customization types: sexp, integer, etc.
|
||||
* Composite Types:: Build new types from other types or data.
|
||||
* Splicing into Lists:: Splice elements into list with @code{:inline}.
|
||||
* Type Keywords:: Keyword-argument pairs in a customization type.
|
||||
|
|
|
@ -790,6 +790,12 @@ This function returns @var{arg} and has no side effects.
|
|||
This function ignores any arguments and returns @code{nil}.
|
||||
@end defun
|
||||
|
||||
Emacs Lisp functions can also be user-visible @dfn{commands}. A
|
||||
command is a function that has an @dfn{interactive} specification.
|
||||
You may want to call these functions as if they were called
|
||||
interactively. See @ref{Interactive Call} for details on how to do
|
||||
that.
|
||||
|
||||
@node Mapping Functions
|
||||
@section Mapping Functions
|
||||
@cindex mapping functions
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
2011-07-05 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* gnus.texi (Expiring Mail): Document gnus-auto-expirable-marks.
|
||||
(Filtering New Groups): Clarify how simple the "options -n" format is.
|
||||
(Agent Expiry): Remove mention of `gnus-request-expire-articles', which
|
||||
is internal.
|
||||
|
||||
2011-07-04 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* tramp.texi (Cleanup remote connections): Add
|
||||
|
|
|
@ -1302,6 +1302,10 @@ subscribing these groups.
|
|||
@code{gnus-subscribe-options-newsgroup-method} is used instead. This
|
||||
variable defaults to @code{gnus-subscribe-alphabetically}.
|
||||
|
||||
The ``options -n'' format is very simplistic. The syntax above is all
|
||||
that is supports -- you can force-subscribe hierarchies, or you can
|
||||
deny hierarchies, and that's it.
|
||||
|
||||
@vindex gnus-options-not-subscribe
|
||||
@vindex gnus-options-subscribe
|
||||
If you don't want to mess with your @file{.newsrc} file, you can just
|
||||
|
@ -15648,14 +15652,16 @@ will remain on your system until hell freezes over. This bears
|
|||
repeating one more time, with some spurious capitalizations: IF you do
|
||||
NOT mark articles as EXPIRABLE, Gnus will NEVER delete those ARTICLES.
|
||||
|
||||
@vindex gnus-auto-expirable-marks
|
||||
You do not have to mark articles as expirable by hand. Gnus provides
|
||||
two features, called ``auto-expire'' and ``total-expire'', that can help you
|
||||
with this. In a nutshell, ``auto-expire'' means that Gnus hits @kbd{E}
|
||||
for you when you select an article. And ``total-expire'' means that Gnus
|
||||
considers all articles as expirable that are read. So, in addition to
|
||||
the articles marked @samp{E}, also the articles marked @samp{r},
|
||||
@samp{R}, @samp{O}, @samp{K}, @samp{Y} and so on are considered
|
||||
expirable.
|
||||
@samp{R}, @samp{O}, @samp{K}, @samp{Y} (and so on) are considered
|
||||
expirable. @code{gnus-auto-expirable-marks} has the full list of
|
||||
these marks.
|
||||
|
||||
When should either auto-expire or total-expire be used? Most people
|
||||
who are subscribed to mailing lists split each list into its own group
|
||||
|
@ -19004,9 +19010,8 @@ that you're running out of space. Neither are particularly fast or
|
|||
efficient, and it's not a particularly good idea to interrupt them (with
|
||||
@kbd{C-g} or anything else) once you've started one of them.
|
||||
|
||||
Note that other functions, e.g. @code{gnus-request-expire-articles},
|
||||
might run @code{gnus-agent-expire} for you to keep the agent
|
||||
synchronized with the group.
|
||||
Note that other functions might run @code{gnus-agent-expire} for you
|
||||
to keep the agent synchronized with the group.
|
||||
|
||||
The agent parameter @code{agent-enable-expiration} may be used to
|
||||
prevent expiration in selected groups.
|
||||
|
|
|
@ -1,3 +1,15 @@
|
|||
2011-07-06 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* NEWS: Clarify that `smtpmail-starttls-credentials' doesn't exist.
|
||||
|
||||
2011-07-05 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* NEWS: Document new emacs-lock.el and renaming of old one.
|
||||
|
||||
2011-07-05 Manoj Srivastava <srivasta@ieee.org>
|
||||
|
||||
* themes/manoj-dark-theme.el (manoj-dark): New file.
|
||||
|
||||
2011-03-29 Kevin Ryde <user42@zip.com.au>
|
||||
|
||||
* compilation.txt (perl-Test2): New samples.
|
||||
|
|
16
etc/NEWS
16
etc/NEWS
|
@ -130,8 +130,8 @@ difference), but if it were a direct list of user names and passwords,
|
|||
you will be prompted for the user name and the password instead, and
|
||||
they will then be saved to ~/.authinfo.
|
||||
|
||||
** Similarly, if you had `smtpmail-starttls-credentials' set, then
|
||||
then you need to put
|
||||
** Similarly, `smtpmail-starttls-credentials' no longer exists. If
|
||||
you had thet set, then then you need to put
|
||||
|
||||
machine smtp.whatever.foo port 25 key "~/.my_smtp_tls.key" cert "~/.my_smtp_tls.cert"
|
||||
|
||||
|
@ -475,6 +475,11 @@ Just set shell-dir-cookie-re to an appropriate regexp.
|
|||
|
||||
** BibTeX mode
|
||||
|
||||
*** BibTeX mode now supports biblatex.
|
||||
Use the variable bibtex-dialect to select support for different BibTeX dialects.
|
||||
bibtex-entry-field-alist is now an obsolete alias for
|
||||
bibtex-BibTeX-entry-alist.
|
||||
|
||||
*** New command `bibtex-search-entries' bound to C-c C-a.
|
||||
|
||||
*** New `bibtex-entry-format' option `sort-fields', disabled by default.
|
||||
|
@ -857,6 +862,13 @@ soap-inspect.el is an interactive inspector for SOAP WSDL structures.
|
|||
|
||||
** xmodmap-generic-mode for xmodmap files.
|
||||
|
||||
** New emacs-lock.el package.
|
||||
(The pre-existing one has been renamed to old-emacs-lock.el and moved
|
||||
to obsolete/.) Now, Emacs Lock is a proper minor mode
|
||||
`emacs-lock-mode'. Protection against exiting Emacs and killing the
|
||||
buffer can be set separately. The mechanism for auto turning off
|
||||
protection for buffers with inferior processes has been generalized.
|
||||
|
||||
|
||||
* Incompatible Lisp Changes in Emacs 24.1
|
||||
|
||||
|
|
700
etc/themes/manoj-dark-theme.el
Normal file
700
etc/themes/manoj-dark-theme.el
Normal file
|
@ -0,0 +1,700 @@
|
|||
;;; manoj-dark.el --- A dark theme from Manoj
|
||||
|
||||
;; Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Manoj Srivastava <srivasta@ieee.org>
|
||||
;; Keywords: lisp, faces
|
||||
|
||||
;; This program 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 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
|
||||
;; This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; I spend a lot of time workin in front of a screen (many hours in a
|
||||
;; dimly lit room) and eye fatigue is an issue. This is a dark color
|
||||
;; theme for emacs, which is easier on the eyes than light themes.
|
||||
|
||||
;; It does not help that I am blue-green color blind, so subtle
|
||||
;; variations are often lost on me. I do want to use color contrast to
|
||||
;; increase productivity, but I also want to avoid the jarring angry
|
||||
;; fruit salad look, and so I am in the process of crafting a logical
|
||||
;; color scheme that is high contrast enough for me, without being too
|
||||
;; unpleasing.
|
||||
|
||||
;; In circumstances where there a lot of related faces that can be
|
||||
;; viewed, for example, the Gnus group buffer, consistent and logical
|
||||
;; color choices are the only sane option. Gnus groups can be newa
|
||||
;; (blueish) or mail (greenish), have states (large number of under
|
||||
;; messages, normal, and empty). The large number unread groups have
|
||||
;; highest luminance (appear brighter), and the empty one have lower
|
||||
;; luminance (appear greyer), but have the same chroma and saturation.
|
||||
;; Sub states and group priorities are rendered using a color series
|
||||
;; which has constant luminance and saturation, and vary in hue by a
|
||||
;; constant separation -- so all the related groups have the same
|
||||
;; brightness ({mail,news}/{unread,normal,empty}), and a graded
|
||||
;; selection of foreground colors. It sounds more complicated that it
|
||||
;; looks. The eye is drawn naturally to the unread groups, and first
|
||||
;; to the mail, then USENET groups (which is my preference).
|
||||
|
||||
;; Similar color variations occur for individual messages in a group;
|
||||
;; high scoring messages bubble to the top, and have a higher
|
||||
;; luminance. This color schema has made me slightly faster at
|
||||
;; reading mail/USENET.
|
||||
|
||||
;; In the message itself, quoted mail messages from different people
|
||||
;; are color coordinated, with high contrast beteen citations that are
|
||||
;; close to each other in the heirarchy, so it is less likely that one
|
||||
;; misunderstands who said what in a long conversation.
|
||||
|
||||
;; The following scheme covers programming languages, Gnus, Erc, mail,
|
||||
;; org-mode, CUA-mode, apt-utils, bbdb, compilation buffers, changelog
|
||||
;; mode, diff and ediff, eshell, and more. You need emacs-goodies
|
||||
;; package on Debian to use this. See the wiki page at
|
||||
;; http://www.emacswiki.org/cgi-bin/wiki?ColorTheme for details. The
|
||||
;; project home page is at https://gna.org/projects/color-theme.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(deftheme manoj-dark
|
||||
"Very high contrast faces with a black background.
|
||||
This theme avoids subtle color variations, while avoiding the
|
||||
jarring angry fruit salad look to reduce eye fatigue.")
|
||||
|
||||
(custom-theme-set-faces
|
||||
'manoj-dark
|
||||
'(default ((t (:background "black" :foreground "WhiteSmoke"))))
|
||||
;; Font lock faces
|
||||
'(font-lock-builtin-face ((t (:foreground "LightSteelBlue"))))
|
||||
'(font-lock-constant-face ((t (:foreground "LightSlateBlue" :bold t))))
|
||||
'(font-lock-preprocessor-face ((t (:foreground "CornFlowerBlue" :italic t))))
|
||||
'(font-lock-keyword-face ((t (:foreground "cyan1"))))
|
||||
'(font-lock-type-face ((t (:foreground "SteelBlue1"))))
|
||||
'(font-lock-regexp-grouping-backslash ((t (:bold t :weight bold))))
|
||||
'(font-lock-regexp-grouping-construct ((t (:bold t :weight bold))))
|
||||
'(font-lock-variable-name-face ((t (:foreground "Aquamarine"))))
|
||||
'(font-lock-function-name-face ((t (:foreground "mediumspringgreen"
|
||||
:weight bold :height 1.1))))
|
||||
'(font-lock-string-face ((t (:foreground "RosyBrown1"))))
|
||||
'(font-lock-comment-face ((t (:italic t :slant oblique :foreground "chocolate1"))))
|
||||
'(font-lock-comment-delimiter-face ((t (:foreground "Salmon"))))
|
||||
'(font-lock-doc-face ((t (:italic t :slant oblique :foreground "LightCoral"))))
|
||||
'(font-lock-doc-string-face ((t (:foreground "Plum"))))
|
||||
'(font-lock-warning-face ((t (:bold t :foreground "Pink" :weight bold))))
|
||||
|
||||
'(cperl-array-face ((t (:foreground "LawnGreen" :background "B;ack" :bold t))))
|
||||
'(cperl-hash-face ((t (:foreground "SpringGreen" :background "B;ack" :bold t :italic t))))
|
||||
'(cperl-nonoverridable-face ((t (:foreground "chartreuse3"))))
|
||||
|
||||
'(gnus-button ((t (:bold t :weight bold :background "#191932" :box (:line-width 2 :style released-button)))))
|
||||
'(gnus-cite-attribution-face ((t (:italic t))))
|
||||
'(gnus-cite-face-1 ((t (:foreground "CornflowerBlue"))))
|
||||
'(gnus-cite-face-2 ((t (:foreground "PaleGreen"))))
|
||||
'(gnus-cite-face-3 ((t (:foreground "LightGoldenrod"))))
|
||||
'(gnus-cite-face-4 ((t (:foreground "LightPink"))))
|
||||
'(gnus-cite-face-5 ((t (:foreground "turquoise"))))
|
||||
'(gnus-cite-face-6 ((t (:foreground "khaki"))))
|
||||
'(gnus-cite-face-7 ((t (:foreground "plum"))))
|
||||
'(gnus-cite-face-8 ((t (:foreground "DeepSkyBlue1"))))
|
||||
'(gnus-cite-face-9 ((t (:foreground "chartreuse1"))))
|
||||
'(gnus-cite-face-10 ((t (:foreground "thistle1"))))
|
||||
'(gnus-cite-face-11 ((t (:foreground "LightYellow1"))))
|
||||
'(gnus-emphasis-bold ((t (:bold t :weight bold))))
|
||||
'(gnus-emphasis-bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
|
||||
'(gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
|
||||
'(gnus-emphasis-italic ((t (:italic t :slant italic))))
|
||||
'(gnus-emphasis-strikethru ((t (:strike-through t))))
|
||||
'(gnus-emphasis-underline ((t (:underline t))))
|
||||
'(gnus-emphasis-underline-bold ((t (:bold t :underline t :weight bold))))
|
||||
'(gnus-emphasis-underline-bold-italic ((t (:italic t :bold t :underline t :slant italic :weight bold))))
|
||||
'(gnus-emphasis-underline-italic ((t (:italic t :underline t :slant italic))))
|
||||
|
||||
'(gnus-header-content ((t (:italic t :foreground "DarkKhaki" :slant italic))))
|
||||
'(gnus-header-content-face ((t (:italic t :foreground "DarkKhaki" :slant italic))))
|
||||
'(gnus-header-from ((t (:foreground "PaleGreen1"))))
|
||||
'(gnus-header-from-face ((t (:foreground "PaleGreen1"))))
|
||||
'(gnus-header-name ((t (:bold t :foreground "BlanchedAlmond" :weight bold))))
|
||||
'(gnus-header-name-face ((t (:bold t :foreground "BlanchedAlmond" :weight bold))))
|
||||
'(gnus-header-newsgroups ((t (:italic t :foreground "yellow" :slant italic))))
|
||||
'(gnus-header-newsgroups-face ((t (:italic t :foreground "yellow" :slant italic))))
|
||||
'(gnus-header-subject ((t (:foreground "coral1"))))
|
||||
'(gnus-header-subject-face ((t (:foreground "coral1"))))
|
||||
'(gnus-signature ((t (:italic t :slant italic))))
|
||||
'(gnus-signature-face ((t (:italic t :slant italic))))
|
||||
'(gnus-splash ((t (:foreground "#cccccc"))))
|
||||
'(gnus-summary-cancelled ((t (:background "black" :foreground "yellow"))))
|
||||
'(gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
|
||||
'(gnus-summary-high-ancient ((t (:bold t :foreground "CornflowerBlue" :weight bold))))
|
||||
'(gnus-summary-high-ancient-face ((t (:bold t :foreground "CornflowerBlue" :weight bold))))
|
||||
'(gnus-summary-normal-ancient ((t (:foreground "SkyBlue"))))
|
||||
'(gnus-summary-normal-ancient-face ((t (:foreground "SkyBlue"))))
|
||||
'(gnus-summary-low-ancient ((t (:italic t :foreground "LightSteelBlue" :slant italic))))
|
||||
'(gnus-summary-low-ancien-facet ((t (:italic t :foreground "LightSteelBlue" :slant italic))))
|
||||
|
||||
'(gnus-summary-high-read ((t (:bold t :foreground "grey60" :weight bold))))
|
||||
'(gnus-summary-high-read-face ((t (:bold t :foreground "grey60" :weight bold))))
|
||||
'(gnus-summary-normal-read ((t (:foreground "grey50"))))
|
||||
'(gnus-summary-normal-read-face ((t (:foreground "grey50"))))
|
||||
'(gnus-summary-low-read ((t (:italic t :foreground "LightSlateGray" :slant italic))))
|
||||
'(gnus-summary-low-read-face ((t (:italic t :foreground "LightSlateGray" :slant italic))))
|
||||
|
||||
'(gnus-summary-high-ticked ((t (:bold t :foreground "RosyBrown" :weight bold))))
|
||||
'(gnus-summary-high-ticked-face ((t (:bold t :foreground "RosyBrown" :weight bold))))
|
||||
'(gnus-summary-normal-ticked ((t (:foreground "LightSalmon"))))
|
||||
'(gnus-summary-normal-ticked-face ((t (:foreground "LightSalmon"))))
|
||||
'(gnus-summary-low-ticked ((t (:italic t :foreground "pink" :slant italic))))
|
||||
'(gnus-summary-low-ticked-face ((t (:italic t :foreground "pink" :slant italic))))
|
||||
|
||||
'(gnus-summary-high-undownloaded ((t (:bold t :foreground "ivory3" :weight bold))))
|
||||
'(gnus-summary-normal-undownloaded ((t (:foreground "LightGray" :weight normal))))
|
||||
'(gnus-summary-low-undownloaded ((t (:italic t :foreground "grey75" :slant italic :weight normal))))
|
||||
|
||||
'(gnus-summary-high-unread ((t (:bold t :foreground "PaleGreen" :weight bold))))
|
||||
'(gnus-summary-high-unread-face ((t (:bold t :foreground "PaleGreen" :weight bold))))
|
||||
'(gnus-summary-normal-unread ((t (:foreground "YellowGreen"))))
|
||||
'(gnus-summary-normal-unread-face ((t (:foreground "YellowGreen"))))
|
||||
'(gnus-summary-low-unread ((t (:italic t :foreground "MediumSeaGreen" :slant italic))))
|
||||
'(gnus-summary-low-unread-face ((t (:italic t :foreground "MediumSeaGreen" :slant italic))))
|
||||
'(gnus-summary-root-face ((t (:bold t :foreground "Red" :weight bold))))
|
||||
'(gnus-summary-selected ((t (:underline t :foreground "LemonChiffon"))))
|
||||
'(gnus-summary-selected-face ((t (:underline t :foreground "LemonChiffon"))))
|
||||
'(gnus-user-agent-bad-face ((t (:bold t :background "black" :foreground "red" :weight bold))))
|
||||
'(gnus-user-agent-good-face ((t (:background "black" :foreground "green"))))
|
||||
'(gnus-user-agent-unknown-face ((t (:bold t :background "black" :foreground "orange" :weight bold))))
|
||||
'(gnus-x-face ((t (:background "white" :foreground "black"))))
|
||||
|
||||
'(gnus-group-mail-1 ((t (:bold t :foreground "#3BFF00" :weight normal))))
|
||||
'(gnus-group-mail-1-face ((t (:bold t :foreground "#3BFF00" :weight normal))))
|
||||
'(gnus-group-mail-2 ((t (:bold t :foreground "#5EFF00" :weight normal))))
|
||||
'(gnus-group-mail-2-face ((t (:bold t :foreground "#5EFF00" :weight normal))))
|
||||
'(gnus-group-mail-3 ((t (:bold t :foreground "#80FF00" :weight normal))))
|
||||
'(gnus-group-mail-3-face ((t (:bold t :foreground "#A1FF00" :weight normal))))
|
||||
|
||||
|
||||
'(gnus-group-mail-1-empty ((t (:foreground "#249900"))))
|
||||
'(gnus-group-mail-1-empty-face ((t (:foreground "#249900"))))
|
||||
'(gnus-group-mail-2-empty ((t (:foreground "#389900"))))
|
||||
'(gnus-group-mail-2-empty-face ((t (:foreground "#389900"))))
|
||||
'(gnus-group-mail-3-empty ((t (:foreground "#4D9900"))))
|
||||
'(gnus-group-mail-3-empty-face ((t (:foreground "#4D9900"))))
|
||||
|
||||
'(gnus-group-mail-low ((t (:bold t :foreground "aquamarine2" :weight bold))))
|
||||
'(gnus-group-mail-low-face ((t (:bold t :foreground "aquamarine2" :weight bold))))
|
||||
'(gnus-group-mail-low-empty ((t (:foreground "aquamarine2"))))
|
||||
'(gnus-group-mail-low-empty-face ((t (:foreground "aquamarine2"))))
|
||||
|
||||
'(gnus-group-news-1 ((t (:bold t :foreground "#8480FF" :weight bold))))
|
||||
'(gnus-group-news-1-face ((t (:bold t :foreground "#8480FF" :weight bold))))
|
||||
'(gnus-group-news-2 ((t (:bold t :foreground "#8088FF" :weight bold))))
|
||||
'(gnus-group-news-2-face ((t (:bold t :foreground "#8088FF" :weight bold))))
|
||||
'(gnus-group-news-3 ((t (:bold t :foreground "#8095FF" :weight bold))))
|
||||
'(gnus-group-news-3-face ((t (:bold t :foreground "#8095FF" :weight bold))))
|
||||
'(gnus-group-news-4 ((t (:bold t :foreground "#80A1FF" :weight bold))))
|
||||
'(gnus-group-news-4-face ((t (:bold t :foreground "#80A1FF" :weight bold))))
|
||||
'(gnus-group-news-5 ((t (:bold t :foreground "#80AEFF" :weight bold))))
|
||||
'(gnus-group-news-5-face ((t (:bold t :foreground "#80AEFF" :weight bold))))
|
||||
'(gnus-group-news-6 ((t (:bold t :foreground "#80BBFF" :weight bold))))
|
||||
'(gnus-group-news-6-face ((t (:bold t :foreground "#80BBFF" :weight bold))))
|
||||
|
||||
'(gnus-group-news-1-empty ((t (:foreground "#524DFF"))))
|
||||
'(gnus-group-news-1-empty-face ((t (:foreground "#524DFF"))))
|
||||
'(gnus-group-news-2-empty ((t (:foreground "#4D58FF"))))
|
||||
'(gnus-group-news-2-empty-face ((t (:foreground "#4D58FF"))))
|
||||
'(gnus-group-news-3-empty ((t (:foreground "#4D6AFF"))))
|
||||
'(gnus-group-news-3-empty-face ((t (:foreground "#4D6AFF"))))
|
||||
'(gnus-group-news-4-empty ((t (:foreground "#4D7CFF"))))
|
||||
'(gnus-group-news-4-empty-face ((t (:foreground "#4D7CFF"))))
|
||||
'(gnus-group-news-5-empty ((t (:foreground "#4D8EFF"))))
|
||||
'(gnus-group-news-5-empty-face ((t (:foreground "#4D8EFF"))))
|
||||
'(gnus-group-news-6-empty ((t (:foreground "#4DA0FF"))))
|
||||
'(gnus-group-news-6-empty-face ((t (:foreground "#4DA0FF"))))
|
||||
|
||||
'(gnus-group-news-low ((t (:bold t :foreground "DarkTurquoise" :weight bold))))
|
||||
'(gnus-group-news-low-face ((t (:bold t :foreground "DarkTurquoise" :weight bold))))
|
||||
'(gnus-group-news-low-empty ((t (:foreground "DarkTurquoise"))))
|
||||
'(gnus-group-news-low-empty-face ((t (:foreground "DarkTurquoise"))))
|
||||
|
||||
;;message faces
|
||||
'(message-cited-text ((t (:foreground "red3"))))
|
||||
'(message-header-cc ((t (:bold t :foreground "chartreuse1" :weight bold))))
|
||||
'(message-header-cc-face ((t (:bold t :foreground "chartreuse1" :weight bold))))
|
||||
'(message-header-name ((t (:foreground "green"))))
|
||||
'(message-header-name-face ((t (:foreground "green"))))
|
||||
'(message-header-newsgroups ((t (:italic t :bold t :foreground "papaya whip" :slant italic :weight bold))))
|
||||
'(message-header-newsgroups-face ((t (:italic t :bold t :foreground "papaya whip" :slant italic :weight bold))))
|
||||
'(message-header-other ((t (:foreground "ivory"))))
|
||||
'(message-header-other-face ((t (:foreground "ivory"))))
|
||||
'(message-header-subject ((t (:foreground "OliveDrab1"))))
|
||||
'(message-header-subject-face ((t (:foreground "OliveDrab1"))))
|
||||
'(message-header-to ((t (:bold t :foreground "floral white" :weight bold))))
|
||||
'(message-header-to-face ((t (:bold t :foreground "floral white" :weight bold))))
|
||||
'(message-header-xheader ((t (:foreground "DeepSkyBlue1"))))
|
||||
'(message-header-xheader-face ((t (:foreground "DeepSkyBlue1"))))
|
||||
'(message-mml ((t (:foreground "MediumSpringGreen"))))
|
||||
'(message-mml-face ((t (:foreground "MediumSpringGreen"))))
|
||||
'(message-separator ((t (:foreground "LightSkyBlue1"))))
|
||||
'(message-separator-face ((t (:foreground "LightSkyBlue1"))))
|
||||
'(message-url ((t (:bold t :foreground "blue" :weight bold))))
|
||||
|
||||
'(bg:erc-color-face0 ((t (:background "saddle brown"))))
|
||||
'(bg:erc-color-face1 ((t (:background "black"))))
|
||||
'(bg:erc-color-face10 ((t (:background "DodgerBlue4"))))
|
||||
'(bg:erc-color-face11 ((t (:background "cyan4"))))
|
||||
'(bg:erc-color-face12 ((t (:background "blue"))))
|
||||
'(bg:erc-color-face13 ((t (:background "deeppink"))))
|
||||
'(bg:erc-color-face14 ((t (:background "gray50"))))
|
||||
'(bg:erc-color-face15 ((t (:background "grey15"))))
|
||||
'(bg:erc-color-face2 ((t (:background "blue4"))))
|
||||
'(bg:erc-color-face3 ((t (:background "green4"))))
|
||||
'(bg:erc-color-face4 ((t (:background "red"))))
|
||||
'(bg:erc-color-face5 ((t (:background "brown"))))
|
||||
'(bg:erc-color-face6 ((t (:background "purple"))))
|
||||
'(bg:erc-color-face7 ((t (:background "orange"))))
|
||||
'(bg:erc-color-face8 ((t (:background "yellow4"))))
|
||||
'(bg:erc-color-face9 ((t (:background "green"))))
|
||||
'(erc-action-face ((t (:bold t :weight bold :foreground "turquoise1"))))
|
||||
'(erc-bold-face ((t (:bold t :weight bold))))
|
||||
'(erc-button ((t (:bold t :weight bold :foreground "RoyalBlue1" :box (:line-width 2 :style released-button)))))
|
||||
'(erc-button-face ((t (:bold t :weight bold :foreground "RoyalBlue1" :box (:line-width 2 :style released-button)))))
|
||||
'(erc-command-indicator-face ((t (:bold t :weight bold))))
|
||||
'(erc-current-nick-face ((t (:bold t :foreground "DarkTurquoise" :weight bold))))
|
||||
'(erc-dangerous-host-face ((t (:foreground "red"))))
|
||||
'(erc-direct-msg-face ((t (:foreground "sandybrown"))))
|
||||
'(erc-error-face ((t (:foreground "red"))))
|
||||
'(erc-fool-face ((t (:foreground "dim gray"))))
|
||||
'(erc-header-line ((t (:background "grey95" :foreground "ConFlowerBlue"))))
|
||||
'(erc-input-face ((t (:foreground "brown"))))
|
||||
'(erc-inverse-face ((t (:background "Black" :foreground "White"))))
|
||||
'(erc-keyword-face ((t (:bold t :foreground "pale green" :weight bold))))
|
||||
'(erc-my-nick-face ((t (:bold t :foreground "brown" :weight bold))))
|
||||
'(erc-nick-default-face ((t (:bold t :weight bold :foreground "DodgerBlue1"))))
|
||||
'(erc-button-nickname-face ((t (:bold t :weight bold :background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button) ))))
|
||||
'(erc-nick-msg-face ((t (:bold t :foreground "IndianRed" :weight bold))))
|
||||
'(erc-notice-face ((t (:bold t :foreground "SlateBlue" :weight bold))))
|
||||
'(erc-pal-face ((t (:bold t :foreground "Magenta" :weight bold))))
|
||||
'(erc-prompt-face ((t (:bold t :background "Navy" :foreground "lightBlue2" :weight bold))))
|
||||
'(erc-timestamp-face ((t (:bold t :foreground "SeaGreen1" :weight bold))))
|
||||
'(erc-underline-face ((t (:underline t))))
|
||||
'(fg:erc-color-face0 ((t (:foreground "BlanchedAlmond"))))
|
||||
'(fg:erc-color-face1 ((t (:foreground "beige"))))
|
||||
'(fg:erc-color-face10 ((t (:foreground "pale goldenrod"))))
|
||||
'(fg:erc-color-face11 ((t (:foreground "cyan"))))
|
||||
'(fg:erc-color-face12 ((t (:foreground "lightblue1"))))
|
||||
'(fg:erc-color-face13 ((t (:foreground "deeppink"))))
|
||||
'(fg:erc-color-face14 ((t (:foreground "gray50"))))
|
||||
'(fg:erc-color-face15 ((t (:foreground "gray90"))))
|
||||
'(fg:erc-color-face2 ((t (:foreground "blue4"))))
|
||||
'(fg:erc-color-face3 ((t (:foreground "green4"))))
|
||||
'(fg:erc-color-face4 ((t (:foreground "red"))))
|
||||
'(fg:erc-color-face5 ((t (:foreground "brown"))))
|
||||
'(fg:erc-color-face6 ((t (:foreground "purple"))))
|
||||
'(fg:erc-color-face7 ((t (:foreground "orange"))))
|
||||
'(fg:erc-color-face8 ((t (:foreground "yellow"))))
|
||||
'(fg:erc-color-face9 ((t (:foreground "green"))))
|
||||
|
||||
'(org-agenda-date ((t (:foreground "LightSkyBlue"))))
|
||||
'(org-agenda-date-weekend ((t (:bold t :foreground "LightSkyBlue" :weight bold))))
|
||||
'(org-agenda-restriction-lock ((t (:background "skyblue4"))))
|
||||
'(org-agenda-structure ((t (:foreground "LightSkyBlue"))))
|
||||
'(org-archived ((t (:foreground "grey70"))))
|
||||
'(org-code ((t (:foreground "grey70"))))
|
||||
'(org-column ((t (:background "grey30" :slant normal :weight normal :height 81 :family "unknown-DejaVu Sans Mono"))))
|
||||
'(org-column-title ((t (:bold t :background "grey30" :underline t :weight bold))))
|
||||
'(org-date ((t (:foreground "Cyan" :underline t))))
|
||||
'(org-done ((t (:bold t :foreground "PaleGreen" :weight bold))))
|
||||
'(org-drawer ((t (:foreground "LightSkyBlue"))))
|
||||
'(org-ellipsis ((t (:foreground "LightGoldenrod" :underline t))))
|
||||
'(org-formula ((t (:foreground "chocolate1"))))
|
||||
'(org-headline-done ((t (:foreground "LightSalmon"))))
|
||||
'(org-hide ((t (:foreground "black"))))
|
||||
'(org-latex-and-export-specials ((t (:foreground "burlywood"))))
|
||||
'(org-level-1 ((t (:foreground "LightSkyBlue"))))
|
||||
'(org-level-2 ((t (:foreground "LightGoldenrod"))))
|
||||
'(org-level-3 ((t (:foreground "Cyan1"))))
|
||||
'(org-level-4 ((t (:foreground "chocolate1"))))
|
||||
'(org-level-5 ((t (:foreground "PaleGreen"))))
|
||||
'(org-level-6 ((t (:foreground "Aquamarine"))))
|
||||
'(org-level-7 ((t (:foreground "LightSteelBlue"))))
|
||||
'(org-level-8 ((t (:foreground "LightSalmon"))))
|
||||
'(org-link ((t (:foreground "Cyan" :underline t))))
|
||||
'(org-mode-line-clock ((t (:foreground "DarkGreen" :underline t))))
|
||||
'(org-scheduled-previously ((t (:foreground "chocolate1"))))
|
||||
'(org-scheduled-today ((t (:foreground "PaleGreen"))))
|
||||
'(org-sexp-date ((t (:foreground "Cyan"))))
|
||||
'(org-special-keyword ((t (:foreground "LightSalmon"))))
|
||||
'(org-table ((t (:foreground "LightSkyBlue"))))
|
||||
'(org-tag ((t (:bold t :weight bold))))
|
||||
'(org-target ((t (:underline t))))
|
||||
'(org-time-grid ((t (:foreground "LightGoldenrod"))))
|
||||
'(org-todo ((t (:bold t :foreground "Pink" :weight bold))))
|
||||
'(org-upcoming-deadline ((t (:foreground "chocolate1"))))
|
||||
'(org-verbatim ((t (:foreground "grey70" :underline t))))
|
||||
'(org-warning ((t (:bold t :weight bold :foreground "Pink"))))
|
||||
'(outline-1 ((t (:foreground "LightSkyBlue"))))
|
||||
'(outline-2 ((t (:foreground "LightGoldenrod"))))
|
||||
'(outline-3 ((t (:foreground "Cyan1"))))
|
||||
'(outline-4 ((t (:foreground "chocolate1"))))
|
||||
'(outline-5 ((t (:foreground "PaleGreen"))))
|
||||
'(outline-6 ((t (:foreground "Aquamarine"))))
|
||||
'(outline-7 ((t (:foreground "LightSteelBlue"))))
|
||||
'(outline-8 ((t (:foreground "LightSalmon"))))
|
||||
|
||||
|
||||
'(CUA-global-mark-face ((t (:background "cyan" :foreground "black"))))
|
||||
'(CUA-rectangle-face ((t (:background "maroon" :foreground "white"))))
|
||||
'(CUA-rectangle-noselect-face ((t (:background "dimgray" :foreground "white"))))
|
||||
'(Info-title-1-face ((t (:bold t :weight bold :family "helv" :height 1.728))))
|
||||
'(Info-title-2-face ((t (:bold t :family "helv" :weight bold :height 1.44))))
|
||||
'(Info-title-3-face ((t (:bold t :weight bold :family "helv" :height 1.2))))
|
||||
'(Info-title-4-face ((t (:bold t :family "helv" :weight bold))))
|
||||
'(align-highlight-nochange-face ((t (:background "SkyBlue4"))))
|
||||
|
||||
'(antlr-font-lock-keyword-face ((t (:foreground "SteelBlue")))) ;%
|
||||
'(antlr-font-lock-literal-face ((t (:foreground "PaleVioletRed"))))
|
||||
'(antlr-font-lock-ruledef-face ((t (:foreground "DarkGreen"))))
|
||||
'(antlr-font-lock-ruleref-face ((t (:foreground "SteelBlue"))))
|
||||
'(antlr-font-lock-tokendef-face ((t (:foreground "khaki"))))
|
||||
'(antlr-font-lock-tokenref-face ((t (:foreground "LightSteelBlue4"))))
|
||||
|
||||
'(bbdb-company ((t (:italic t :slant italic :foreground "indian red"))))
|
||||
'(bbdb-field-name ((t (:bold t :weight bold :foreground "steel blue"))))
|
||||
'(bbdb-field-value ((t (:foreground "AntiqueWhite2"))))
|
||||
'(bbdb-name ((t (:underline t :foreground "cadet blue"))))
|
||||
|
||||
'(bold ((t (:bold t :weight bold))))
|
||||
'(bold-italic ((t (:bold t :italic t :slant italic :weight bold))))
|
||||
'(border ((t (:background "gold" :foreground "black" ))))
|
||||
'(buffer-menu-buffer ((t (:bold t :weight bold))))
|
||||
'(button ((t (:underline t :box (:line-width 2 :color "grey"
|
||||
:style released-button)
|
||||
:foreground "black" :background "grey"
|
||||
:weight bold ))))
|
||||
'(calendar-today-face ((t (:underline t :bold t :foreground "cornsilk"))))
|
||||
'(change-log-acknowledgement-face ((t (:italic t :slant oblique :foreground "AntiqueWhite3"))))
|
||||
'(change-log-conditionals-face ((t (:foreground "Aquamarine"))))
|
||||
'(change-log-date-face ((t (:italic t :slant oblique :foreground "BurlyWood"))))
|
||||
'(change-log-email-face ((t (:foreground "Aquamarine"))))
|
||||
'(change-log-file-face ((t (:bold t :family "Verdana" :weight bold :foreground "LightSkyBlue" :height 0.9))))
|
||||
'(change-log-function-face ((t (:foreground "Aquamarine"))))
|
||||
'(change-log-list-face ((t (:foreground "LightSkyBlue"))))
|
||||
'(change-log-name-face ((t (:bold t :weight bold :foreground "Gold"))))
|
||||
|
||||
'(comint-highlight-input ((t (:bold t :weight bold))))
|
||||
'(comint-highlight-prompt ((t (:foreground "cyan1"))))
|
||||
'(compilation-column-number ((t (:foreground "PaleGreen"))))
|
||||
'(compilation-error ((t (:bold t :weight bold :foreground "Brown1"))))
|
||||
'(compilation-info ((t (:bold t :foreground "LightPink1" :weight bold))))
|
||||
'(compilation-line-number ((t (:foreground "LightGoldenrod"))))
|
||||
'(compilation-message-face ((t (:underline t))))
|
||||
'(compilation-warning ((t (:bold t :foreground "Orange" :weight bold))))
|
||||
'(compilation-warning-face ((t (:bold t :foreground "Orange" :weight bold))))
|
||||
'(completions-common-part ((t (:family "unknown-DejaVu Sans Mono"
|
||||
:width normal :weight normal
|
||||
:slant normal :foreground "WhiteSmoke"
|
||||
:background "black" :height 81))))
|
||||
'(completions-first-difference ((t (:bold t :weight bold))))
|
||||
|
||||
'(css-selector ((t (:foreground "LightSteelBlue"))))
|
||||
'(css-property ((t (:foreground "light sea green"))))
|
||||
|
||||
'(cursor ((t (:background "orchid"))))
|
||||
'(custom-button-face ((t (:background "lightgrey" :foreground "black"
|
||||
:box '(:line-width 2 :style released-button)))))
|
||||
'(custom-button-pressed-face ((t (:background "lightgrey"
|
||||
:foreground "black"
|
||||
:box '(:line-width 2 :style pressed-button)))))
|
||||
'(custom-changed-face ((t (:foreground "wheat" :background "blue"))))
|
||||
'(custom-comment-face ((t (:background "dim gray"))))
|
||||
'(custom-comment-tag-face ((t (:foreground "gray80"))))
|
||||
'(custom-face-tag-face ((t (:bold t :family "helv" :weight bold :height 1.1))))
|
||||
'(custom-group-tag-face ((t (:bold t :family "helv" :foreground "light blue" :weight bold :height 1.1))))
|
||||
'(custom-group-tag-face-1 ((t (:bold t :family "helv" :foreground "pink" :weight bold :height 1.1))))
|
||||
'(custom-invalid-face ((t (:background "red" :foreground "yellow"))))
|
||||
'(custom-modified-face ((t (:background "blue" :foreground "white"))))
|
||||
'(custom-rogue-face ((t (:background "black" :foreground "pink"))))
|
||||
'(custom-saved-face ((t (:underline t))))
|
||||
'(custom-set-face ((t (:background "white" :foreground "blue"))))
|
||||
'(custom-state-face ((t (:foreground "lime green"))))
|
||||
'(custom-variable-button-face ((t (:bold t :underline t :weight bold
|
||||
:background "lightgrey"
|
||||
:foreground "black"
|
||||
:box '(:line-width 2 :style released-button)))))
|
||||
'(custom-variable-tag-face ((t (:bold t :family "helv"
|
||||
:foreground "light blue"
|
||||
:weight bold :height 1.2))))
|
||||
|
||||
'(diary ((t (:foreground "IndianRed"))))
|
||||
'(diary-anniversary ((t (:foreground "Cyan1"))))
|
||||
'(diary-button ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button)))))
|
||||
'(diary-face ((t (:foreground "IndianRed"))))
|
||||
'(diary-time ((t (:foreground "LightGoldenrod"))))
|
||||
'(diff-added ((t (:foreground "Green"))))
|
||||
'(diff-added-face ((t (:foreground "Green"))))
|
||||
'(diff-changed-face ((t (:foreground "Khaki"))))
|
||||
'(diff-context-face ((t (:foreground "grey70"))))
|
||||
'(diff-file-header ((t (:bold t :background "grey20" :foreground "ivory1" :weight bold))))
|
||||
'(diff-file-header-face ((t (:bold t :background "grey20" :foreground "ivory1" :weight bold))))
|
||||
'(diff-function-face ((t (:foreground "SpringGreen1"))))
|
||||
'(diff-header-face ((t (:background "SlateBlue4"))))
|
||||
'(diff-hunk-header ((t (:slant italic :background "DodgerBlue4"))))
|
||||
'(diff-hunk-header-face ((t (:slant italic :background "DodgerBlue4"))))
|
||||
'(diff-index-face ((t (:bold t :weight bold :background "SteelBlue4" :foreground "linen" ))))
|
||||
'(diff-nonexistent ((t (:bold t :weight bold :background "Black" :foreground "Wheat1"))))
|
||||
'(diff-nonexistent-face ((t (:bold t :weight bold :background "Black" :foreground "Wheat1"))))
|
||||
'(diff-removed ((t (:foreground "salmon1"))))
|
||||
'(diff-removed-face ((t (:foreground "salmon1"))))
|
||||
'(diff-refine-change-face ((t (:background "MidnightBlue"))))
|
||||
'(diff-refine-change ((t (:background "MidnightBlue"))))
|
||||
|
||||
'(ediff-current-diff-face-A ((t (:foreground "firebrick" :background "pale green"))))
|
||||
'(ediff-current-diff-face-Ancestor ((t (:foreground "Black" :background "VioletRed"))))
|
||||
'(ediff-current-diff-face-B ((t (:foreground "DarkOrchid" :background "Yellow"))))
|
||||
'(ediff-current-diff-face-C ((t (:foreground "Navy" :background "Pink"))))
|
||||
'(ediff-even-diff-face-A ((t (:foreground "Black" :background "light grey"))))
|
||||
'(ediff-even-diff-face-Ancestor ((t (:foreground "White" :background "Grey"))))
|
||||
'(ediff-even-diff-face-B ((t (:foreground "White" :background "Grey"))))
|
||||
'(ediff-even-diff-face-C ((t (:foreground "Black" :background "light grey"))))
|
||||
'(ediff-fine-diff-face-A ((t (:foreground "Navy" :background "sky blue"))))
|
||||
'(ediff-fine-diff-face-Ancestor ((t (:foreground "Black" :background "Green"))))
|
||||
'(ediff-fine-diff-face-B ((t (:foreground "Black" :background "cyan"))))
|
||||
'(ediff-fine-diff-face-C ((t (:foreground "Black" :background "Turquoise"))))
|
||||
'(ediff-odd-diff-face-A ((t (:foreground "White" :background "Grey"))))
|
||||
'(ediff-odd-diff-face-Ancestor ((t (:foreground "Black" :background "light grey"))))
|
||||
'(ediff-odd-diff-face-B ((t (:foreground "Black" :background "light grey"))))
|
||||
'(ediff-odd-diff-face-C ((t (:foreground "White" :background "Grey"))))
|
||||
|
||||
'(eieio-custom-slot-tag-face ((t (:foreground "light blue"))))
|
||||
'(eldoc-highlight-function-argument ((t (:bold t :weight bold))))
|
||||
'(epa-field-body ((t (:italic t :foreground "turquoise" :slant italic))))
|
||||
'(epa-field-name ((t (:bold t :foreground "PaleTurquoise" :weight bold))))
|
||||
'(epa-mark ((t (:bold t :foreground "orange" :weight bold))))
|
||||
'(epa-string ((t (:foreground "lightyellow"))))
|
||||
'(epa-validity-disabled ((t (:italic t :slant italic))))
|
||||
'(epa-validity-high ((t (:bold t :foreground "PaleTurquoise" :weight bold))))
|
||||
'(epa-validity-low ((t (:italic t :slant italic))))
|
||||
'(epa-validity-medium ((t (:italic t :foreground "PaleTurquoise" :slant italic))))
|
||||
|
||||
'(escape-glyph ((t (:foreground "cyan"))))
|
||||
|
||||
'(eshell-ls-archive-face ((t (:bold t :foreground "IndianRed"))))
|
||||
'(eshell-ls-backup-face ((t (:foreground "Grey"))))
|
||||
'(eshell-ls-clutter-face ((t (:foreground "DimGray"))))
|
||||
'(eshell-ls-directory-face ((t (:bold t :foreground "MediumSlateBlue"))))
|
||||
'(eshell-ls-executable-face ((t (:foreground "Coral"))))
|
||||
'(eshell-ls-missing-face ((t (:foreground "black"))))
|
||||
'(eshell-ls-picture-face ((t (:foreground "Violet"))))
|
||||
'(eshell-ls-product-face ((t (:foreground "sandybrown"))))
|
||||
'(eshell-ls-readonly-face ((t (:foreground "Aquamarine"))))
|
||||
'(eshell-ls-special-face ((t (:foreground "Gold"))))
|
||||
'(eshell-ls-symlink-face ((t (:foreground "DarkCyan" :bold t))))
|
||||
'(eshell-ls-symlink-face ((t (:foreground "White"))))
|
||||
'(eshell-ls-unreadable-face ((t (:foreground "DimGray"))))
|
||||
'(eshell-prompt-face ((t (:foreground "MediumAquamarine"))))
|
||||
'(eshell-test-failed-face ((t (:foreground "OrangeRed" :bold t))))
|
||||
'(eshell-test-ok-face ((t (:foreground "Green" :bold t))))
|
||||
|
||||
'(excerpt ((t (:italic t))))
|
||||
'(file-name-shadow ((t (:foreground "grey70"))))
|
||||
'(fixed ((t (:bold t))))
|
||||
'(fixed-pitch ((t (:family "courier"))))
|
||||
'(flyspell-duplicate-face ((t (:foreground "IndianRed" :bold t :underline t))))
|
||||
'(flyspell-incorrect-face ((t (:foreground "Pink" :bold t :underline t))))
|
||||
|
||||
'(fringe ((t (:background "grey30" :foreground "Wheat"))))
|
||||
'(header-line ((t (:box (:line-width -1 :color "grey20" :style released-button) :background "grey20" :foreground "grey90" :height 0.9))))
|
||||
'(help-argument-name ((t (:italic t :slant italic))))
|
||||
'(highlight ((t (:background "gray10" :foreground "Old Lace"))))
|
||||
'(hl-line ((t (:background "grey10" :foreground "Old Lace"))))
|
||||
'(gnus-mouse-face ((t (:background "darkseagreen2" :foreground "blue"))))
|
||||
'(erc-button-mouse-face ((t (:background "darkseagreen2" :foreground "blue"))))
|
||||
'(align-highlight-change-face ((t (:background "darkseagreen2" :foreground "blue"))))
|
||||
'(goto-address-url-mouse-face ((t (:background "darkseagreen2" :foreground "blue"))))
|
||||
'(goto-address-url-mouse-face ((t (:background "darkseagreen2" :foreground "blue"))))
|
||||
'(ispell-highlight-face ((t (:background "darkseagreen2" :foreground "blue"))))
|
||||
'(ispell-highlight-face ((t (:background "darkseagreen2" :foreground "blue"))))
|
||||
'(widget-mouse-face ((t (:background "darkseagreen2" :foreground "blue"))))
|
||||
|
||||
'(highlight-beyond-fill-column-face ((t (:underline t))))
|
||||
'(highlight-changes ((t (:foreground nil :background "#382f2f"))))
|
||||
'(highlight-changes-delete ((t (:foreground nil :background "#916868"))))
|
||||
|
||||
'(holiday ((t (:background "chocolate4"))))
|
||||
'(holiday-face ((t (:background "chocolate4"))))
|
||||
|
||||
'(ibuffer-dired-buffer-face ((t (:foreground "mediumspringgreen" :weight bold :height 1.1))))
|
||||
'(ibuffer-help-buffer-face ((t (:italic t :slant oblique :foreground "chocolate1"))))
|
||||
'(ibuffer-hidden-buffer-face ((t (:bold t :foreground "Pink" :weight bold))))
|
||||
'(ibuffer-occur-match-face ((t (:bold t :foreground "Pink" :weight bold))))
|
||||
'(ibuffer-read-only-buffer-face ((t (:foreground "SteelBlue1"))))
|
||||
'(ibuffer-special-buffer-face ((t (:foreground "SteelBlue1"))))
|
||||
|
||||
'(ido-first-match ((t (:bold t :weight bold))))
|
||||
'(ido-incomplete-regexp ((t (:bold t :weight bold :foreground "Pink"))))
|
||||
'(ido-indicator ((t (:background "red1" :foreground "yellow1" :width condensed))))
|
||||
'(ido-only-match ((t (:foreground "ForestGreen"))))
|
||||
'(ido-subdir ((t (:foreground "red1"))))
|
||||
'(info-menu-5 ((t (:underline t))))
|
||||
'(info-menu-header ((t (:bold t :family "helv" :weight bold))))
|
||||
'(info-node ((t (:bold t :italic t :foreground "yellow"))))
|
||||
'(info-node ((t (:italic t :bold t :foreground "white" :slant italic :weight bold))))
|
||||
'(info-xref ((t (:bold t :foreground "DodgerBlue1"))))
|
||||
'(info-xref ((t (:bold t :foreground "cyan" :weight bold))))
|
||||
'(isearch ((t (:background "palevioletred2" :foreground "brown4"))))
|
||||
'(isearch-fail ((t (:background "red4"))))
|
||||
'(isearch-lazy-highlight-face ((t (:background "paleturquoise4"))))
|
||||
'(isearch-secondary ((t (:foreground "red3"))))
|
||||
'(italic ((t (:italic t))))
|
||||
|
||||
'(js2-builtin-face ((t (:foreground "sandy brown"))))
|
||||
'(js2-comment-face ((t (:foreground "dark orchid"))))
|
||||
'(js2-constant-face ((t (:foreground "pale violet red"))))
|
||||
'(js2-error-face ((t (:background "indian red" :foreground "green" :bold t))))
|
||||
'(js2-function-name-face ((t (:foreground "cadet blue"))))
|
||||
'(js2-function-param-face ((t (:foreground "IndianRed1"))))
|
||||
'(js2-instance-member-face ((t (:foreground "IndianRed1"))))
|
||||
'(js2-jsdoc-tag-face ((t (:foreground "medium orchid"))))
|
||||
'(js2-jsdoc-type-face ((t (:foreground "medium orchid"))))
|
||||
'(js2-jsdoc-value-face ((t (:foreground "medium orchid"))))
|
||||
'(js2-keyword-face ((t (:foreground "steel blue"))))
|
||||
'(js2-private-function-call-face ((t (:foreground "cadet blue"))))
|
||||
'(js2-private-member-face ((t (:foreground "IndianRed1"))))
|
||||
'(js2-regexp-face ((t (:foreground "khaki"))))
|
||||
'(js2-string-face ((t (:foreground "lemon chiffon"))))
|
||||
'(js2-type-face ((t (:foreground "medium sea green"))))
|
||||
'(js2-variable-name-face ((t (:foreground "IndianRed1"))))
|
||||
'(js2-warning-face ((t (:background "indian red" :foreground "green"))))
|
||||
|
||||
'(lazy-highlight ((t (:background "paleturquoise4"))))
|
||||
'(link ((t (:foreground "cyan1" :underline t))))
|
||||
'(link-visited ((t (:underline t :foreground "violet"))))
|
||||
|
||||
'(makefile-space ((t (:background "hotpink"))))
|
||||
'(man-bold ((t (:bold t))))
|
||||
'(man-heading ((t (:bold t))))
|
||||
'(man-italic ((t (:foreground "yellow"))))
|
||||
'(man-xref ((t (:underline t))))
|
||||
'(match ((t (:background "RoyalBlue3"))))
|
||||
'(minibuffer-prompt ((t (:foreground "cyan"))))
|
||||
'(mode-line ((t (:background "grey75" :foreground "Blue"
|
||||
:box '(:line-width -1 :style released-button)
|
||||
:height 0.9))))
|
||||
'(mode-line-buffer-id ((t (:background "grey65" :foreground "red"
|
||||
:bold t :weight bold :height 0.9))))
|
||||
'(mode-line-emphasis ((t (:bold t :weight bold))))
|
||||
'(mode-line-highlight ((t (:box (:line-width 2 :color "grey40"
|
||||
:style released-button :height 0.9)))))
|
||||
'(mode-line-inactive ((t (:background "grey30" :foreground "grey80"
|
||||
:box '(:line-width -1 :color "grey40")
|
||||
:weight light :height 0.9))))
|
||||
'(mouse ((t (:background "OrangeRed"))))
|
||||
|
||||
'(next-error ((t (:background "blue3"))))
|
||||
'(nobreak-space ((t (:foreground "cyan" :underline t))))
|
||||
'(paren-blink-off ((t (:foreground "black"))))
|
||||
'(paren-mismatch-face ((t (:bold t :background "white" :foreground "red"))))
|
||||
'(paren-no-match-face ((t (:bold t :background "white" :foreground "red"))))
|
||||
'(query-replace ((t (:foreground "brown4" :background "palevioletred2"))))
|
||||
'(region ((t (:background "blue3"))))
|
||||
'(scroll-bar ((t (:background "grey75" :foreground "WhiteSmoke"))))
|
||||
'(secondary-selection ((t (:background "SkyBlue4"))))
|
||||
'(semantic-dirty-token-face ((t (:background "lightyellow"))))
|
||||
'(semantic-highlight-edits-face ((t (:background "gray20"))))
|
||||
'(semantic-unmatched-syntax-face ((t (:underline "red"))))
|
||||
'(senator-intangible-face ((t (:foreground "gray75"))))
|
||||
'(senator-momentary-highlight-face ((t (:background "gray30"))))
|
||||
'(senator-read-only-face ((t (:background "#664444"))))
|
||||
'(sgml-doctype-face ((t (:foreground "orange"))))
|
||||
'(sgml-end-tag-face ((t (:foreground "greenyellow"))))
|
||||
'(sgml-entity-face ((t (:foreground "gold"))))
|
||||
'(sgml-ignored-face ((t (:foreground "gray20" :background "gray60"))))
|
||||
'(sgml-sgml-face ((t (:foreground "yellow"))))
|
||||
'(sgml-start-tag-face ((t (:foreground "mediumspringgreen"))))
|
||||
'(shadow ((t (:foreground "grey70"))))
|
||||
|
||||
'(show-paren-match ((t (:background "steelblue3"))))
|
||||
'(show-paren-match-face ((t (:background "steelblue3"))))
|
||||
'(show-paren-mismatch ((t (:background "purple" :foreground "white"))))
|
||||
'(smerge-base ((t (:foreground "orange"))))
|
||||
'(smerge-markers ((t (:background "grey30"))))
|
||||
'(smerge-mine ((t (:foreground "cyan"))))
|
||||
'(smerge-other ((t (:foreground "lightgreen"))))
|
||||
'(smerge-refined-change ((t (:background "blue4"))))
|
||||
'(speedbar-button-face ((t (:foreground "green3"))))
|
||||
'(speedbar-directory-face ((t (:foreground "light blue"))))
|
||||
'(speedbar-file-face ((t (:foreground "cyan"))))
|
||||
'(speedbar-highlight-face ((t (:background "sea green"))))
|
||||
'(speedbar-selected-face ((t (:foreground "red" :underline t))))
|
||||
'(speedbar-separator-face ((t (:background "blue" :foreground "white" :overline "gray"))))
|
||||
'(speedbar-tag-face ((t (:foreground "yellow"))))
|
||||
'(table-cell ((t (:background "blue1" :foreground "gray90"))))
|
||||
|
||||
'(tool-bar ((t (:background "grey75" :foreground "black" :box (:line-width 1 :style released-button)))))
|
||||
'(tooltip ((t (:family "helv" :background "lightyellow" :foreground "black"))))
|
||||
'(trailing-whitespace ((t (:background "red1"))))
|
||||
'(underline ((t (:underline t))))
|
||||
'(variable-pitch ((t (:family "helv"))))
|
||||
'(vcursor ((t (:foreground "blue" :background "cyan" :underline t))))
|
||||
'(vertical-border ((t (:background "dim gray"))))
|
||||
'(vhdl-font-lock-attribute-face ((t (:foreground "Orchid"))))
|
||||
'(vhdl-font-lock-directive-face ((t (:foreground "CadetBlue"))))
|
||||
'(vhdl-font-lock-enumvalue-face ((t (:foreground "Gold4"))))
|
||||
'(vhdl-font-lock-function-face ((t (:foreground "Orchid4"))))
|
||||
'(vhdl-font-lock-prompt-face ((t (:foreground "Red" :bold t))))
|
||||
'(vhdl-font-lock-reserved-words-face ((t (:foreground "Orange" :bold t))))
|
||||
'(vhdl-font-lock-translate-off-face ((t (:background "LightGray"))))
|
||||
'(vhdl-speedbar-architecture-face ((t (:foreground "Blue"))))
|
||||
'(vhdl-speedbar-architecture-selected-face ((t (:foreground "Blue" :underline t))))
|
||||
'(vhdl-speedbar-configuration-face ((t (:foreground "DarkGoldenrod"))))
|
||||
'(vhdl-speedbar-configuration-selected-face ((t (:foreground "DarkGoldenrod" :underline t))))
|
||||
'(vhdl-speedbar-entity-face ((t (:foreground "ForestGreen"))))
|
||||
'(vhdl-speedbar-entity-selected-face ((t (:foreground "ForestGreen" :underline t))))
|
||||
'(vhdl-speedbar-instantiation-face ((t (:foreground "Brown"))))
|
||||
'(vhdl-speedbar-instantiation-selected-face ((t (:foreground "Brown" :underline t))))
|
||||
'(vhdl-speedbar-package-face ((t (:foreground "Grey50"))))
|
||||
'(vhdl-speedbar-package-selected-face ((t (:foreground "Grey50" :underline t))))
|
||||
|
||||
'(viper-minibuffer-emacs-face ((t (:foreground "Black" :background "darkseagreen2"))))
|
||||
'(viper-minibuffer-insert-face ((t (:foreground "Black" :background "pink"))))
|
||||
'(viper-minibuffer-vi-face ((t (:foreground "DarkGreen" :background "grey"))))
|
||||
'(viper-replace-overlay-face ((t (:foreground "Black" :background "darkseagreen2"))))
|
||||
'(viper-search-face ((t (:foreground "Black" :background "khaki"))))
|
||||
'(vm-highlight-url-face ((t (:bold t :italic t :slant italic :weight bold))))
|
||||
'(vm-highlighted-header-face ((t (:bold t :weight bold))))
|
||||
'(vm-mime-button-face ((t (:background "grey75" :foreground "black" :box (:line-width 2 :style released-button)))))
|
||||
'(vm-summary-highlight-face ((t (:bold t :weight bold))))
|
||||
'(vm-xface ((t (:background "white" :foreground "black"))))
|
||||
|
||||
'(which-func ((t (:foreground "Blue1"))))
|
||||
'(widget ((t (:height 1.2 :background "Gray80" :foreground "black"))))
|
||||
'(widget-button ((t (:bold t :weight bold :box (:line-width 2 :style released-button)))))
|
||||
'(widget-button-face ((t (:bold t :weight bold :box (:line-width 2 :style released-button)))))
|
||||
'(widget-button-pressed ((t (:foreground "red1" :background "lightgrey" :box (:line-width 2 :style pressed-button)))))
|
||||
'(widget-button-pressed-face ((t (:foreground "red1" :background "lightgrey" :box (:line-width 2 :style pressed-button)))))
|
||||
'(widget-documentation ((t (:foreground "lime green"))))
|
||||
'(widget-documentation-face ((t (:foreground "lime green"))))
|
||||
'(widget-field ((t (:background "dim gray"))))
|
||||
'(widget-field-face ((t (:background "dim gray"))))
|
||||
'(widget-inactive ((t (:foreground "grey70"))))
|
||||
'(widget-inactive-face ((t (:foreground "grey70"))))
|
||||
'(widget-single-line-field ((t (:background "dim gray"))))
|
||||
'(widget-single-line-field-face ((t (:background "dim gray"))))
|
||||
'(woman-bold-face ((t (:bold t))))
|
||||
'(woman-italic-face ((t (:foreground "beige"))))
|
||||
'(woman-unknown-face ((t (:foreground "LightSalmon")))))
|
||||
|
||||
(provide-theme 'manoj-dark)
|
||||
|
||||
;; Local Variables:
|
||||
;; no-byte-compile: t
|
||||
;; End:
|
||||
|
||||
;;; manoj-dark.el ends here
|
|
@ -1,4 +1,4 @@
|
|||
2011-07-05 Paul Eggert <eggert@cs.ucla.edu>
|
||||
2011-07-06 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Assume support for memcmp, memcpy, memmove, memset.
|
||||
* etags.c (absolute_filename): Assume memmove exists.
|
||||
|
|
220
lisp/ChangeLog
220
lisp/ChangeLog
|
@ -1,3 +1,219 @@
|
|||
2011-07-06 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* mail/smtpmail.el (smtpmail-default-smtp-server): Made into a
|
||||
defcustom again for backwards compatibility.
|
||||
|
||||
* simple.el (shell-command-on-region): Fill.
|
||||
|
||||
* dired-aux.el (dired-kill-line): Add a doc string.
|
||||
|
||||
* dabbrev.el (dabbrev-abbrev-char-regexp): Note that nil defaults
|
||||
to "\\sw\\|\\s_" (bug#358).
|
||||
|
||||
* dired.el (dired-mode): Clarify "unmark or unflag" (bug#8770).
|
||||
(dired-unmark-backward): Ditto.
|
||||
(dired-flag-backup-files): Ditto.
|
||||
|
||||
* dired-x.el (dired-mark-sexp): Ditto.
|
||||
|
||||
2011-07-06 Richard Stallman <rms@gnu.org>
|
||||
|
||||
* mail/rmailmm.el: Give entity a new slot, TRUNCATED.
|
||||
(rmail-mime-entity): New arg TRUNCATED.
|
||||
(rmail-mime-entity-truncated, rmail-mime-entity-set-truncated):
|
||||
New functions.
|
||||
(rmail-mime-save): Warn if entity is truncated.
|
||||
(rmail-mime-toggle-hidden): Likewise, for showing.
|
||||
(rmail-mime-process-multipart): Record when an entity is truncated.
|
||||
|
||||
* mail/rmailmm.el (rmail-search-mime-message): Don't get confused
|
||||
if ENTITY is a string.
|
||||
|
||||
2011-07-06 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* emacs-lisp/lisp-mode.el (eval-defun-1): Update the documentation
|
||||
of faces when `M-C-x'-ing their definitions (bug#8378). Also
|
||||
clean up the code slightly.
|
||||
|
||||
* progmodes/grep.el (rgrep): Don't bind `process-connection-type',
|
||||
because that makes the colours go away.
|
||||
|
||||
* mail/sendmail.el (send-mail-function): Change the default to
|
||||
`sendmail-query-once'.
|
||||
(sendmail-query-once): Add an autoload cookie.
|
||||
|
||||
* net/network-stream.el (network-stream-open-starttls): Try using
|
||||
a plain connection even if the server offered STARTTLS, and we
|
||||
kinda wanted to use it, if Emacs doesn't have any STARTTLS
|
||||
capability. This should make smtpmail.el work in slightly more
|
||||
configurations.
|
||||
|
||||
2011-07-06 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* net/tramp-compat.el (tramp-compat-pop-to-buffer-same-window):
|
||||
New defun.
|
||||
* net/tramp-cmds.el (tramp-append-tramp-buffers): Use it.
|
||||
|
||||
2011-07-06 Michael R. Mauger <mmaug@yahoo.com>
|
||||
|
||||
* progmodes/sql.el: Version 3.0
|
||||
(sql-product-alist): Added product :completion-object,
|
||||
:completion-column, and :statement attributes.
|
||||
(sql-mode-menu, sql-interactive-mode-map): Fixed List entries.
|
||||
(sql-mode-syntax-table): Mark all punctuation.
|
||||
(sql-font-lock-keywords-builder): Temporarily removed fallback on
|
||||
ansi keywords.
|
||||
(sql-regexp-abbrev, sql-regexp-abbrev-list): New functions.
|
||||
(sql-mode-oracle-font-lock-keywords): Improved.
|
||||
(sql-oracle-show-reserved-words): New function for development.
|
||||
(sql-product-font-lock): Simplify for source code buffers.
|
||||
(sql-product-syntax-table, sql-product-font-lock-syntax-alist):
|
||||
New functions.
|
||||
(sql-highlight-product): Set product specific syntax table.
|
||||
(sql-mode-map): Added statement movement functions.
|
||||
(sql-ansi-statement-starters, sql-oracle-statement-starters): New
|
||||
variable.
|
||||
(sql-statement-regexp, sql-beginning-of-statement)
|
||||
(sql-end-of-statement, sql-signum): New functions.
|
||||
(sql-buffer-live-p, sql=find-sqli-buffer): Added CONNECTION
|
||||
parameter.
|
||||
(sql-show-sqli-buffer): Bug fix.
|
||||
(sql-interactive-mode): Store connection data as buffer local.
|
||||
(sql-connect): Added NEW-NAME parameter. Redesigned interaction
|
||||
with sql-interactive-mode.
|
||||
(sql-save-connection): Save buffer local settings.
|
||||
(sql-connection-menu-filter): Changed menu entry name.
|
||||
(sql-product-interactive): Bug fix.
|
||||
(sql-preoutput-hold): New variable.
|
||||
(sql-interactive-remove-continuation-prompt): Bug fixes.
|
||||
(sql-debug-redirect): New variable.
|
||||
(sql-str-literal): New function.
|
||||
(sql-redirect, sql-redirect-one, sql-redirect-value, sql-execute):
|
||||
Redesigned.
|
||||
(sql-oracle-save-settings, sql-oracle-restore-settings)
|
||||
(sql-oracle-list-all, sql-oracle-list-table): New functions.
|
||||
(sql-completion-object, sql-completion-column)
|
||||
(sql-completion-sqlbuf): New variables.
|
||||
(sql-build-completions-1, sql-build-completions)
|
||||
(sql-try-completion): New functions.
|
||||
(sql-read-table-name): Use them.
|
||||
(sql-contains-names): New buffer local variable.
|
||||
(sql-list-all, sql-list-table): Use it.
|
||||
(sql-oracle-completion-types): New variable.
|
||||
(sql-oracle-completion-object, sql-sqlite-completion-object)
|
||||
(sql-postgres-completion-object): New functions.
|
||||
|
||||
2011-07-06 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* window.el (pop-to-buffer): Doc fix.
|
||||
|
||||
2011-07-06 Markus Heiser <markus.heiser@darmarit.de> (tiny change)
|
||||
|
||||
* progmodes/gud.el (gud-pdb-marker-regexp): Accept \r char (Bug#5653).
|
||||
|
||||
2011-07-06 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* window.el (special-display-popup-frame): Doc fix (Bug#8853).
|
||||
|
||||
* info.el (Info-directory-toc-nodes): Minor doc fix (Bug#8833).
|
||||
|
||||
2011-07-05 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* button.el (button): Inherit from link face. Suggested by Dan
|
||||
Nicolaescu.
|
||||
|
||||
2011-07-05 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* progmodes/gdb-mi.el: Fit in 80 columns.
|
||||
(gdb-setup-windows, gdb-restore-windows): Avoid other-window and
|
||||
switch-to-buffer.
|
||||
|
||||
* progmodes/which-func.el (which-func-ff-hook): Don't output a message
|
||||
if imenu is simply not configured (bug#8941).
|
||||
|
||||
2011-07-05 Ken Manheimer <ken.manheimer@gmail.com>
|
||||
|
||||
* allout.el (allout-post-undo-hook): New allout outline-change
|
||||
event hook to signal undo activity.
|
||||
(allout-post-command-business): Run allout-post-undo-hook if an
|
||||
undo just occurred.
|
||||
(allout-after-copy-or-kill-hook, allout-mode): Minor docstring changes.
|
||||
* allout-widgets.el (allout-widgets-after-undo-function):
|
||||
Ensure the integrity of the current item's decoration after it has been
|
||||
in the vicinity of an undo.
|
||||
(allout-widgets-mode): Include allout-widgets-after-undo-function
|
||||
on the new allout-post-undo-hook.
|
||||
|
||||
2011-07-05 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* emacs-lisp/lisp-mode.el (lisp-interaction-mode-abbrev-table):
|
||||
Let define-derived-mode define it.
|
||||
* emacs-lisp/derived.el (define-derived-mode): Try to avoid creating
|
||||
cycles of abbrev-table inheritance (bug#8998).
|
||||
|
||||
2011-07-05 Roland Winkler <winkler@gnu.org>
|
||||
|
||||
* textmodes/bibtex.el: Add support for biblatex.
|
||||
(bibtex-BibTeX-entry-alist, bibtex-biblatex-entry-alist)
|
||||
(bibtex-BibTeX-field-alist, bibtex-biblatex-field-alist)
|
||||
(bibtex-dialect-list, bibtex-dialect, bibtex-no-opt-remove-re)
|
||||
(bibtex-entry-alist, bibtex-field-alist): New variables.
|
||||
(bibtex-entry-field-alist): Obsolete alias for
|
||||
bibtex-BibTeX-entry-alist.
|
||||
(bibtex-entry-alist, bibtex-field-alist): New widgets.
|
||||
(bibtex-set-dialect): New command.
|
||||
(bibtex-entry-type, bibtex-entry-head)
|
||||
(bibtex-entry-maybe-empty-head, bibtex-any-valid-entry-type):
|
||||
Bind via bibtex-set-dialect.
|
||||
(bibtex-Article, bibtex-Book, bibtex-Booklet, bibtex-InBook)
|
||||
(bibtex-InCollection, bibtex-InProceedings, bibtex-Manual)
|
||||
(bibtex-MastersThesis, bibtex-Misc, bibtex-PhdThesis)
|
||||
(bibtex-Proceedings, bibtex-TechReport, bibtex-Unpublished):
|
||||
Define via bibtex-set-dialect.
|
||||
(bibtex-name-in-field, bibtex-remove-OPT-or-ALT):
|
||||
Obey bibtex-no-opt-remove-re.
|
||||
(bibtex-vec-push, bibtex-vec-incr): New functions.
|
||||
(bibtex-format-entry, bibtex-field-list)
|
||||
(bibtex-print-help-message, bibtex-validate)
|
||||
(bibtex-search-entries): Use new format of bibtex-entry-alist.
|
||||
|
||||
2011-07-05 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* progmodes/compile.el (compilation-goto-locus):
|
||||
* net/tramp-cmds.el (tramp-append-tramp-buffers):
|
||||
* bs.el (bs-cycle-next, bs-cycle-previous):
|
||||
* bookmark.el (bookmark-bmenu-list, bookmark-bmenu-2-window):
|
||||
* bindings.el (mode-line-other-buffer):
|
||||
* autoinsert.el (auto-insert):
|
||||
* arc-mode.el (archive-extract):
|
||||
* abbrev.el (edit-abbrevs): Fix some uses of switch-to-buffer.
|
||||
|
||||
2011-07-05 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* emacs-lock.el (emacs-lock-mode): Fix typo in variable name.
|
||||
Fix check of `emacs-lock-unlockable-modes'.
|
||||
Coerce true values of `emacs-lock--try-unlocking' to t.
|
||||
|
||||
2011-07-05 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* obsolete/old-emacs-lock.el: Rename from emacs-lock.el.
|
||||
* emacs-lock.el: New file.
|
||||
|
||||
2011-07-05 Julien Danjou <julien@danjou.info>
|
||||
|
||||
* textmodes/rst.el (rst-define-level-faces): Use `facep' rather
|
||||
than `boundp' to check if face is set.
|
||||
|
||||
2011-07-05 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* register.el (registerv-make):
|
||||
* window.el (window-min-height): Fix typos in docstrings.
|
||||
|
||||
2011-07-05 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* dynamic-setting.el (dynamic-setting-handle-config-changed-event):
|
||||
Update doc string.
|
||||
|
||||
2011-07-04 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* server.el (server-execute): Catch quit and call
|
||||
|
@ -38,8 +254,8 @@
|
|||
according to whether there are or aren't any plain-text topics
|
||||
pending encryption.
|
||||
|
||||
(allout-inhibit-auto-save-info-for-decryption): Adjust
|
||||
buffer-saved-size and some allout state to inhibit auto-saves if
|
||||
(allout-inhibit-auto-save-info-for-decryption):
|
||||
Adjust buffer-saved-size and some allout state to inhibit auto-saves if
|
||||
there are plain-text topics pending encryption.
|
||||
|
||||
(allout-maybe-resume-auto-save-info-after-encryption): Adjust
|
||||
|
|
|
@ -159,7 +159,7 @@ where NAME and EXPANSION are strings with quotes,
|
|||
USECOUNT is an integer, and HOOK is any valid function
|
||||
or may be omitted (it is usually omitted)."
|
||||
(interactive)
|
||||
(switch-to-buffer (prepare-abbrev-list-buffer)))
|
||||
(pop-to-buffer-same-window (prepare-abbrev-list-buffer)))
|
||||
|
||||
(defun edit-abbrevs-redefine ()
|
||||
"Redefine abbrevs according to current buffer contents."
|
||||
|
|
|
@ -561,6 +561,8 @@ outline hot-spot navigation \(see `allout-mode')."
|
|||
'allout-widgets-shifts-recorder nil 'local)
|
||||
(add-hook 'allout-after-copy-or-kill-hook
|
||||
'allout-widgets-after-copy-or-kill-function nil 'local)
|
||||
(add-hook 'allout-post-undo-hook
|
||||
'allout-widgets-after-undo-function nil 'local)
|
||||
|
||||
(add-hook 'before-change-functions 'allout-widgets-before-change-handler
|
||||
nil 'local)
|
||||
|
@ -1130,6 +1132,14 @@ Dispatched by `allout-widgets-post-command-business' in response to
|
|||
Intended for use on allout-after-copy-or-kill-hook."
|
||||
(if (car kill-ring)
|
||||
(setcar kill-ring (allout-widgets-undecorate-text (car kill-ring)))))
|
||||
;;;_ > allout-widgets-after-undo-function ()
|
||||
(defun allout-widgets-after-undo-function ()
|
||||
"Do allout-widgets processing of text after an undo.
|
||||
|
||||
Intended for use on allout-post-undo-hook."
|
||||
(save-excursion
|
||||
(if (allout-goto-prefix)
|
||||
(allout-redecorate-item (allout-get-or-create-item-widget)))))
|
||||
|
||||
;;;_ > allout-widgets-exposure-undo-recorder (widget from-state)
|
||||
(defun allout-widgets-exposure-undo-recorder (widget)
|
||||
|
|
|
@ -1461,7 +1461,15 @@ This hook might be invoked multiple times by a single command.")
|
|||
(defvar allout-after-copy-or-kill-hook nil
|
||||
"*Hook that's run after copying outline text.
|
||||
|
||||
Functions on the hook should not take any arguments.")
|
||||
Functions on the hook should not require any arguments.")
|
||||
;;;_ = allout-post-undo-hook
|
||||
(defvar allout-post-undo-hook nil
|
||||
"*Hook that's run after undo activity.
|
||||
|
||||
The item that's current when the hook is run *may* be the one
|
||||
that was affected by the undo.
|
||||
|
||||
Functions on the hook should not require any arguments.")
|
||||
;;;_ = allout-outside-normal-auto-fill-function
|
||||
(defvar allout-outside-normal-auto-fill-function nil
|
||||
"Value of normal-auto-fill-function outside of allout mode.
|
||||
|
@ -1874,6 +1882,7 @@ without changes to the allout core. Here are key ones:
|
|||
`allout-structure-deleted-hook'
|
||||
`allout-structure-shifted-hook'
|
||||
`allout-after-copy-or-kill-hook'
|
||||
`allout-post-undo-hook'
|
||||
|
||||
Terminology
|
||||
|
||||
|
@ -3313,6 +3322,7 @@ coordinating with allout activity.")
|
|||
|
||||
(when allout-just-did-undo
|
||||
(setq allout-just-did-undo nil)
|
||||
(run-hooks 'allout-post-undo-hook)
|
||||
(cond ((and (= buffer-saved-size -1)
|
||||
allout-auto-save-temporarily-disabled)
|
||||
;; user possibly undid a decryption, deinhibit auto-save:
|
||||
|
|
|
@ -1083,7 +1083,7 @@ using `make-temp-file', and the generated name is returned."
|
|||
(view-buffer buffer (and just-created 'kill-buffer-if-not-modified)))
|
||||
((eq other-window-p 'display) (display-buffer buffer))
|
||||
(other-window-p (switch-to-buffer-other-window buffer))
|
||||
(t (switch-to-buffer buffer))))))
|
||||
(t (pop-to-buffer-same-window buffer))))))
|
||||
|
||||
(defun archive-*-extract (archive name command)
|
||||
(let* ((default-directory (file-name-as-directory archive-tmpdir))
|
||||
|
|
|
@ -360,7 +360,7 @@ Matches the visited file name against the elements of `auto-insert-alist'."
|
|||
(save-window-excursion
|
||||
;; make buffer visible before skeleton or function
|
||||
;; which might ask the user for something
|
||||
(switch-to-buffer (current-buffer))
|
||||
(pop-to-buffer-same-window (current-buffer))
|
||||
(if (and (consp action)
|
||||
(not (eq (car action) 'lambda)))
|
||||
(skeleton-insert action)
|
||||
|
|
|
@ -471,7 +471,8 @@ Like `bury-buffer', but temporarily select EVENT's window."
|
|||
(defun mode-line-other-buffer () "\
|
||||
Switch to the most recently selected buffer other than the current one."
|
||||
(interactive)
|
||||
(switch-to-buffer (other-buffer)))
|
||||
(with-no-warnings ; We really do want to call `switch-to-buffer' here.
|
||||
(switch-to-buffer (other-buffer))))
|
||||
|
||||
(defun mode-line-next-buffer (event)
|
||||
"Like `next-buffer', but temporarily select EVENT's window."
|
||||
|
|
|
@ -1539,9 +1539,7 @@ deletion, or > if it is flagged for displaying."
|
|||
(bookmark-maybe-load-default-file)
|
||||
(let ((buf (get-buffer-create "*Bookmark List*")))
|
||||
(if (called-interactively-p 'interactive)
|
||||
(if (or (window-dedicated-p) (window-minibuffer-p))
|
||||
(pop-to-buffer buf)
|
||||
(switch-to-buffer buf))
|
||||
(pop-to-buffer-same-window buf)
|
||||
(set-buffer buf)))
|
||||
(let ((inhibit-read-only t))
|
||||
(erase-buffer)
|
||||
|
@ -1843,7 +1841,8 @@ With a prefix arg, prompts for a file to save them in."
|
|||
(menu (current-buffer))
|
||||
(pop-up-windows t))
|
||||
(delete-other-windows)
|
||||
(switch-to-buffer (other-buffer))
|
||||
(with-no-warnings ; We really do want to call `switch-to-buffer' here.
|
||||
(switch-to-buffer (other-buffer)))
|
||||
(bookmark--jump-via bmrk 'pop-to-buffer)
|
||||
(bury-buffer menu)))
|
||||
|
||||
|
|
|
@ -1215,7 +1215,8 @@ by buffer configuration `bs-cycle-configuration-name'."
|
|||
;; We don't want the frame iconified if the only window in the frame
|
||||
;; happens to be dedicated.
|
||||
(bury-buffer (current-buffer))
|
||||
(switch-to-buffer next)
|
||||
(with-no-warnings ; We really do want to call `switch-to-buffer' here.
|
||||
(switch-to-buffer next))
|
||||
(setq bs--cycle-list (append (cdr cycle-list)
|
||||
(list (car cycle-list))))
|
||||
(bs-message-without-log "Next buffers: %s"
|
||||
|
@ -1244,7 +1245,8 @@ by buffer configuration `bs-cycle-configuration-name'."
|
|||
bs--cycle-list)))
|
||||
(prev-buffer (car tupel))
|
||||
(cycle-list (cdr tupel)))
|
||||
(switch-to-buffer prev-buffer)
|
||||
(with-no-warnings ; We really do want to call `switch-to-buffer' here.
|
||||
(switch-to-buffer prev-buffer))
|
||||
(setq bs--cycle-list (append (last cycle-list)
|
||||
(reverse (cdr (reverse cycle-list)))))
|
||||
(bs-message-without-log "Previous buffers: %s"
|
||||
|
|
|
@ -54,10 +54,7 @@
|
|||
;; Use color for the MS-DOS port because it doesn't support underline.
|
||||
;; FIXME if MS-DOS correctly answers the (supports) question, it need
|
||||
;; no longer be a special case.
|
||||
(defface button '((((type pc) (class color))
|
||||
(:foreground "lightblue"))
|
||||
(((supports :underline t)) :underline t)
|
||||
(t (:foreground "lightblue")))
|
||||
(defface button '((t :inherit link))
|
||||
"Default face used for buttons."
|
||||
:group 'basic-faces)
|
||||
|
||||
|
|
|
@ -1407,7 +1407,7 @@ This function returns nil if no custom theme specifies a value for VARIABLE."
|
|||
(face-spec-recalc face frame)))
|
||||
|
||||
|
||||
;;; XEmacs compability functions
|
||||
;;; XEmacs compatibility functions
|
||||
|
||||
;; In XEmacs, when you reset a Custom Theme, you have to specify the
|
||||
;; theme to reset it to. We just apply the next available theme, so
|
||||
|
|
|
@ -206,7 +206,8 @@ starting with or containing `no-'. If you set this variable to
|
|||
expanding `yes-or-no-' signals an error because `-' is not part of a word;
|
||||
but expanding `yes-or-no' looks for a word starting with `no'.
|
||||
|
||||
The recommended value is \"\\\\sw\\\\|\\\\s_\"."
|
||||
The recommended value is nil, which will make dabbrev default to
|
||||
using \"\\\\sw\\\\|\\\\s_\"."
|
||||
:type '(choice (const nil)
|
||||
regexp)
|
||||
:group 'dabbrev)
|
||||
|
|
|
@ -699,6 +699,9 @@ can be produced by `dired-get-marked-files', for example."
|
|||
;; Commands that delete or redisplay part of the dired buffer.
|
||||
|
||||
(defun dired-kill-line (&optional arg)
|
||||
"Kill the current line (not the files).
|
||||
With a prefix argument, kill that many lines starting with the current line.
|
||||
\(A negative argument kills backward.)"
|
||||
(interactive "P")
|
||||
(setq arg (prefix-numeric-value arg))
|
||||
(let (buffer-read-only file)
|
||||
|
@ -1008,7 +1011,7 @@ See Info node `(emacs)Subdir switches' for more details."
|
|||
(dired-uncache
|
||||
(if (consp dired-directory) (car dired-directory) dired-directory))
|
||||
(dired-map-over-marks (let ((fname (dired-get-filename))
|
||||
;; Postphone readin hook till we map
|
||||
;; Postpone readin hook till we map
|
||||
;; over all marked files (Bug#6810).
|
||||
(dired-after-readin-hook nil))
|
||||
(message "Redisplaying... %s" fname)
|
||||
|
|
|
@ -1406,7 +1406,7 @@ Considers buffers closer to the car of `buffer-list' to be more recent."
|
|||
|
||||
(defun dired-mark-sexp (predicate &optional unflag-p)
|
||||
"Mark files for which PREDICATE returns non-nil.
|
||||
With a prefix arg, unflag those files instead.
|
||||
With a prefix arg, unmark or unflag those files instead.
|
||||
|
||||
PREDICATE is a lisp expression that can refer to the following symbols:
|
||||
|
||||
|
|
|
@ -1812,7 +1812,7 @@ Type \\[dired-mark] to Mark a file or subdirectory for later commands.
|
|||
Mark-using commands display a list of failures afterwards. Type \\[dired-summary]
|
||||
to see why something went wrong.
|
||||
Type \\[dired-unmark] to Unmark a file or all files of an inserted subdirectory.
|
||||
Type \\[dired-unmark-backward] to back up one line and unflag.
|
||||
Type \\[dired-unmark-backward] to back up one line and unmark or unflag.
|
||||
Type \\[dired-do-flagged-delete] to delete (eXecute) the files flagged `D'.
|
||||
Type \\[dired-find-file] to Find the current line's file
|
||||
(or dired it in another buffer, if it is a directory).
|
||||
|
@ -3028,8 +3028,9 @@ If on a subdir headerline, mark all its files except `.' and `..'."
|
|||
(dired-mark arg)))
|
||||
|
||||
(defun dired-unmark-backward (arg)
|
||||
"In Dired, move up lines and remove deletion flag there.
|
||||
Optional prefix ARG says how many lines to unflag; default is one line."
|
||||
"In Dired, move up lines and remove marks or deletion flags there.
|
||||
Optional prefix ARG says how many lines to unmark/unflag; default
|
||||
is one line."
|
||||
(interactive "p")
|
||||
(dired-unmark (- arg)))
|
||||
|
||||
|
@ -3123,14 +3124,14 @@ The match is against the non-directory part of the filename. Use `^'
|
|||
|
||||
(defun dired-mark-symlinks (unflag-p)
|
||||
"Mark all symbolic links.
|
||||
With prefix argument, unflag all those files."
|
||||
With prefix argument, unmark or unflag all those files."
|
||||
(interactive "P")
|
||||
(let ((dired-marker-char (if unflag-p ?\040 dired-marker-char)))
|
||||
(dired-mark-if (looking-at dired-re-sym) "symbolic link")))
|
||||
|
||||
(defun dired-mark-directories (unflag-p)
|
||||
"Mark all directory file lines except `.' and `..'.
|
||||
With prefix argument, unflag all those files."
|
||||
With prefix argument, unmark or unflag all those files."
|
||||
(interactive "P")
|
||||
(let ((dired-marker-char (if unflag-p ?\040 dired-marker-char)))
|
||||
(dired-mark-if (and (looking-at dired-re-dir)
|
||||
|
@ -3139,7 +3140,7 @@ With prefix argument, unflag all those files."
|
|||
|
||||
(defun dired-mark-executables (unflag-p)
|
||||
"Mark all executable files.
|
||||
With prefix argument, unflag all those files."
|
||||
With prefix argument, unmark or unflag all those files."
|
||||
(interactive "P")
|
||||
(let ((dired-marker-char (if unflag-p ?\040 dired-marker-char)))
|
||||
(dired-mark-if (looking-at dired-re-exe) "executable file")))
|
||||
|
@ -3149,7 +3150,7 @@ With prefix argument, unflag all those files."
|
|||
|
||||
(defun dired-flag-auto-save-files (&optional unflag-p)
|
||||
"Flag for deletion files whose names suggest they are auto save files.
|
||||
A prefix argument says to unflag those files instead."
|
||||
A prefix argument says to unmark or unflag those files instead."
|
||||
(interactive "P")
|
||||
(let ((dired-marker-char (if unflag-p ?\040 dired-del-marker)))
|
||||
(dired-mark-if
|
||||
|
@ -3189,7 +3190,7 @@ A prefix argument says to unflag those files instead."
|
|||
|
||||
(defun dired-flag-backup-files (&optional unflag-p)
|
||||
"Flag all backup files (names ending with `~') for deletion.
|
||||
With prefix argument, unflag these files."
|
||||
With prefix argument, unmark or unflag these files."
|
||||
(interactive "P")
|
||||
(let ((dired-marker-char (if unflag-p ?\s dired-del-marker)))
|
||||
(dired-mark-if
|
||||
|
@ -3642,7 +3643,7 @@ Ask means pop up a menu for the user to select one of copy, move or link."
|
|||
;;;;;; dired-run-shell-command dired-do-shell-command dired-do-async-shell-command
|
||||
;;;;;; dired-clean-directory dired-do-print dired-do-touch dired-do-chown
|
||||
;;;;;; dired-do-chgrp dired-do-chmod dired-compare-directories dired-backup-diff
|
||||
;;;;;; dired-diff) "dired-aux" "dired-aux.el" "65e65633e08c3e4b4a4b1c735f2f48b8")
|
||||
;;;;;; dired-diff) "dired-aux" "dired-aux.el" "d7b197829c8d456cc5bc6c5fdab7c4b0")
|
||||
;;; Generated autoloads from dired-aux.el
|
||||
|
||||
(autoload 'dired-diff "dired-aux" "\
|
||||
|
|
|
@ -86,7 +86,9 @@ current form for the frame (i.e. hinting or somesuch changed)."
|
|||
Changes can be
|
||||
The monospace font. If `font-use-system-font' is nil, the font
|
||||
is not changed.
|
||||
The normal font.
|
||||
Xft parameters, like DPI and hinting.
|
||||
The Gtk+ theme name.
|
||||
The tool bar style."
|
||||
(interactive "e")
|
||||
(let ((type (nth 1 event))
|
||||
|
|
|
@ -255,7 +255,10 @@ No problems result if this variable is not bound.
|
|||
(not (eq parent (standard-syntax-table))))
|
||||
(set-char-table-parent ,syntax (syntax-table)))))
|
||||
,(when declare-abbrev
|
||||
`(unless (abbrev-table-get ,abbrev :parents)
|
||||
`(unless (or (abbrev-table-get ,abbrev :parents)
|
||||
;; This can happen if the major mode defines
|
||||
;; the abbrev-table to be its parent's.
|
||||
(eq ,abbrev local-abbrev-table))
|
||||
(abbrev-table-put ,abbrev :parents
|
||||
(list local-abbrev-table))))))
|
||||
(use-local-map ,map)
|
||||
|
|
|
@ -525,7 +525,6 @@ if that value is non-nil."
|
|||
"Keymap for Lisp Interaction mode.
|
||||
All commands in `lisp-mode-shared-map' are inherited by this map.")
|
||||
|
||||
(defvar lisp-interaction-mode-abbrev-table lisp-mode-abbrev-table)
|
||||
(define-derived-mode lisp-interaction-mode emacs-lisp-mode "Lisp Interaction"
|
||||
"Major mode for typing and evaluating Lisp forms.
|
||||
Like Lisp mode except that \\[eval-print-last-sexp] evals the Lisp expression
|
||||
|
@ -790,25 +789,25 @@ Reinitialize the face according to the `defface' specification."
|
|||
;; `defface' is macroexpanded to `custom-declare-face'.
|
||||
((eq (car form) 'custom-declare-face)
|
||||
;; Reset the face.
|
||||
(setq face-new-frame-defaults
|
||||
(assq-delete-all (eval (nth 1 form) lexical-binding)
|
||||
face-new-frame-defaults))
|
||||
(put (eval (nth 1 form) lexical-binding) 'face-defface-spec nil)
|
||||
;; Setting `customized-face' to the new spec after calling
|
||||
;; the form, but preserving the old saved spec in `saved-face',
|
||||
;; imitates the situation when the new face spec is set
|
||||
;; temporarily for the current session in the customize
|
||||
;; buffer, thus allowing `face-user-default-spec' to use the
|
||||
;; new customized spec instead of the saved spec.
|
||||
;; Resetting `saved-face' temporarily to nil is needed to let
|
||||
;; `defface' change the spec, regardless of a saved spec.
|
||||
(prog1 `(prog1 ,form
|
||||
(put ,(nth 1 form) 'saved-face
|
||||
',(get (eval (nth 1 form) lexical-binding)
|
||||
'saved-face))
|
||||
(put ,(nth 1 form) 'customized-face
|
||||
,(nth 2 form)))
|
||||
(put (eval (nth 1 form) lexical-binding) 'saved-face nil)))
|
||||
(let ((face-symbol (eval (nth 1 form) lexical-binding)))
|
||||
(setq face-new-frame-defaults
|
||||
(assq-delete-all face-symbol face-new-frame-defaults))
|
||||
(put face-symbol 'face-defface-spec nil)
|
||||
(put face-symbol 'face-documentation (nth 3 form))
|
||||
;; Setting `customized-face' to the new spec after calling
|
||||
;; the form, but preserving the old saved spec in `saved-face',
|
||||
;; imitates the situation when the new face spec is set
|
||||
;; temporarily for the current session in the customize
|
||||
;; buffer, thus allowing `face-user-default-spec' to use the
|
||||
;; new customized spec instead of the saved spec.
|
||||
;; Resetting `saved-face' temporarily to nil is needed to let
|
||||
;; `defface' change the spec, regardless of a saved spec.
|
||||
(prog1 `(prog1 ,form
|
||||
(put ,(nth 1 form) 'saved-face
|
||||
',(get face-symbol 'saved-face))
|
||||
(put ,(nth 1 form) 'customized-face
|
||||
,(nth 2 form)))
|
||||
(put face-symbol 'saved-face nil))))
|
||||
((eq (car form) 'progn)
|
||||
(cons 'progn (mapcar 'eval-defun-1 (cdr form))))
|
||||
(t form)))
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
;;; emacs-lock.el --- prevents you from exiting Emacs if a buffer is locked
|
||||
;;; emacs-lock.el --- protect buffers against killing or exiting -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (C) 1994, 1997, 2001-2011 Free Software Foundation, Inc
|
||||
;; Copyright (C) 2011 Free Software Foundation, Inc
|
||||
|
||||
;; Author: Tom Wurgler <twurgler@goodyear.com>
|
||||
;; Created: 12/8/94
|
||||
;; Author: Juanma Barranquero <lekktu@gmail.com>
|
||||
;; Inspired by emacs-lock.el by Tom Wurgler <twurgler@goodyear.com>
|
||||
;; Maintainer: FSF
|
||||
;; Keywords: extensions, processes
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
@ -23,78 +24,220 @@
|
|||
|
||||
;;; Commentary:
|
||||
|
||||
;; This code sets a buffer-local variable to t if toggle-emacs-lock is run,
|
||||
;; then if the user attempts to exit Emacs, the locked buffer name will be
|
||||
;; displayed and the exit aborted. This is just a way of protecting
|
||||
;; yourself from yourself. For example, if you have a shell running a big
|
||||
;; program and exiting Emacs would abort that program, you may want to lock
|
||||
;; that buffer, then if you forget about it after a while, you won't
|
||||
;; accidentally exit Emacs. To unlock the buffer, just goto the buffer and
|
||||
;; run toggle-emacs-lock again.
|
||||
;; This package defines a minor mode Emacs Lock to mark a buffer as
|
||||
;; protected against accidental killing, or exiting Emacs, or both.
|
||||
;; Buffers associated with inferior modes, like shell or telnet, can
|
||||
;; be treated specially, by auto-unlocking them if their interior
|
||||
;; processes are dead.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(defvar emacs-lock-from-exiting nil
|
||||
"Whether Emacs is locked to prevent exiting. See `check-emacs-lock'.")
|
||||
(make-variable-buffer-local 'emacs-lock-from-exiting)
|
||||
(defgroup emacs-lock nil
|
||||
"Emacs-Lock mode."
|
||||
:version "24.1"
|
||||
:group 'convenience)
|
||||
|
||||
(defvar emacs-lock-buffer-locked nil
|
||||
"Whether a shell or telnet buffer was locked when its process was killed.")
|
||||
(make-variable-buffer-local 'emacs-lock-buffer-locked)
|
||||
(put 'emacs-lock-buffer-locked 'permanent-local t)
|
||||
(defcustom emacs-lock-default-locking-mode 'all
|
||||
"Default locking mode of Emacs-Locked buffers.
|
||||
|
||||
(defun check-emacs-lock ()
|
||||
"Check if variable `emacs-lock-from-exiting' is t for any buffer.
|
||||
If any locked buffer is found, signal error and display the buffer's name."
|
||||
(save-excursion
|
||||
(dolist (buffer (buffer-list))
|
||||
(set-buffer buffer)
|
||||
(when emacs-lock-from-exiting
|
||||
(error "Emacs is locked from exit due to buffer: %s" (buffer-name))))))
|
||||
Its value is used as the default for `emacs-lock-mode' (which
|
||||
see) the first time that Emacs Lock mode is turned on in a buffer
|
||||
without passing an explicit locking mode.
|
||||
|
||||
(defun toggle-emacs-lock ()
|
||||
"Toggle `emacs-lock-from-exiting' for the current buffer.
|
||||
See `check-emacs-lock'."
|
||||
(interactive)
|
||||
(setq emacs-lock-from-exiting (not emacs-lock-from-exiting))
|
||||
(if emacs-lock-from-exiting
|
||||
(message "Buffer is now locked")
|
||||
(message "Buffer is now unlocked")))
|
||||
Possible values are:
|
||||
exit -- Emacs cannot exit while the buffer is locked
|
||||
kill -- the buffer cannot be killed, but Emacs can exit as usual
|
||||
all -- the buffer is locked against both actions
|
||||
nil -- the buffer is not locked"
|
||||
:type '(choice
|
||||
(const :tag "Do not allow Emacs to exit" exit)
|
||||
(const :tag "Do not allow killing the buffer" kill)
|
||||
(const :tag "Do not allow killing the buffer or exiting Emacs" all)
|
||||
(const :tag "Do not lock the buffer" nil))
|
||||
:group 'emacs-lock
|
||||
:version "24.1")
|
||||
|
||||
(defun emacs-lock-check-buffer-lock ()
|
||||
"Check if variable `emacs-lock-from-exiting' is t for a buffer.
|
||||
If the buffer is locked, signal error and display its name."
|
||||
(when emacs-lock-from-exiting
|
||||
(error "Buffer `%s' is locked, can't delete it" (buffer-name))))
|
||||
;; Note: as auto-unlocking can lead to data loss, it would be better
|
||||
;; to default to nil; but the value below is for compatibility with
|
||||
;; the old emacs-lock.el.
|
||||
(defcustom emacs-lock-unlockable-modes '((shell-mode . all)
|
||||
(telnet-mode . all))
|
||||
"Alist of auto-unlockable modes.
|
||||
Each element is a pair (MAJOR-MODE . ACTION), where ACTION is
|
||||
one of `kill', `exit' or `all'. Buffers with matching major
|
||||
modes are auto-unlocked for the specific action if their
|
||||
inferior processes are not alive. If this variable is t, all
|
||||
buffers associated to inferior processes are auto-unlockable
|
||||
for both actions (NOT RECOMMENDED)."
|
||||
:type '(choice
|
||||
(const :tag "All buffers with inferior processes" t)
|
||||
(repeat :tag "Selected modes"
|
||||
(cons :tag "Set auto-unlock for"
|
||||
(symbol :tag "Major mode")
|
||||
(radio
|
||||
(const :tag "Allow exiting" exit)
|
||||
(const :tag "Allow killing" kill)
|
||||
(const :tag "Allow both" all)))))
|
||||
:group 'emacs-lock
|
||||
:version "24.1")
|
||||
|
||||
; These next defuns make it so if you exit a shell that is locked, the lock
|
||||
; is shut off for that shell so you can exit Emacs. Same for telnet.
|
||||
; Also, if a shell or a telnet buffer was locked and the process killed,
|
||||
; turn the lock back on again if the process is restarted.
|
||||
(defvar emacs-lock-mode nil
|
||||
"If non-nil, the current buffer is locked.
|
||||
It can be one of the following values:
|
||||
exit -- Emacs cannot exit while the buffer is locked
|
||||
kill -- the buffer cannot be killed, but Emacs can exit as usual
|
||||
all -- the buffer is locked against both actions
|
||||
nil -- the buffer is not locked")
|
||||
(make-variable-buffer-local 'emacs-lock-mode)
|
||||
(put 'emacs-lock-mode 'permanent-local t)
|
||||
|
||||
(defun emacs-lock-shell-sentinel ()
|
||||
(set-process-sentinel
|
||||
(get-buffer-process (buffer-name)) (function emacs-lock-clear-sentinel)))
|
||||
(defvar emacs-lock--old-mode nil
|
||||
"Most recent locking mode set on the buffer.
|
||||
Internal use only.")
|
||||
(make-variable-buffer-local 'emacs-lock--old-mode)
|
||||
(put 'emacs-lock--old-mode 'permanent-local t)
|
||||
|
||||
(defun emacs-lock-clear-sentinel (_proc _str)
|
||||
(if emacs-lock-from-exiting
|
||||
(defvar emacs-lock--try-unlocking nil
|
||||
"Non-nil if current buffer should be checked for auto-unlocking.
|
||||
Internal use only.")
|
||||
(make-variable-buffer-local 'emacs-lock--try-unlocking)
|
||||
(put 'emacs-lock--try-unlocking 'permanent-local t)
|
||||
|
||||
(defun emacs-lock-live-process-p (buffer-or-name)
|
||||
"Return t if BUFFER-OR-NAME is associated with a live process."
|
||||
(let ((proc (get-buffer-process buffer-or-name)))
|
||||
(and proc (process-live-p proc))))
|
||||
|
||||
(defun emacs-lock--can-auto-unlock (action)
|
||||
"Return t if the current buffer can auto-unlock for ACTION.
|
||||
ACTION must be one of `kill' or `exit'.
|
||||
See `emacs-lock-unlockable-modes'."
|
||||
(and emacs-lock--try-unlocking
|
||||
(not (emacs-lock-live-process-p (current-buffer)))
|
||||
(or (eq emacs-lock-unlockable-modes t)
|
||||
(let ((unlock (cdr (assq major-mode emacs-lock-unlockable-modes))))
|
||||
(or (eq unlock 'all) (eq unlock action))))))
|
||||
|
||||
(defun emacs-lock--exit-locked-buffer ()
|
||||
"Return the name of the first exit-locked buffer found."
|
||||
(save-current-buffer
|
||||
(catch :found
|
||||
(dolist (buffer (buffer-list))
|
||||
(set-buffer buffer)
|
||||
(unless (or (emacs-lock--can-auto-unlock 'exit)
|
||||
(memq emacs-lock-mode '(nil kill)))
|
||||
(throw :found (buffer-name))))
|
||||
nil)))
|
||||
|
||||
(defun emacs-lock--kill-emacs-hook ()
|
||||
"Signal an error if any buffer is exit-locked.
|
||||
Used from `kill-emacs-hook' (which see)."
|
||||
(let ((buffer-name (emacs-lock--exit-locked-buffer)))
|
||||
(when buffer-name
|
||||
(error "Emacs cannot exit because buffer %S is locked" buffer-name))))
|
||||
|
||||
(defun emacs-lock--kill-emacs-query-functions ()
|
||||
"Display a message if any buffer is exit-locked.
|
||||
Return a value appropriate for `kill-emacs-query-functions' (which see)."
|
||||
(let ((locked (emacs-lock--exit-locked-buffer)))
|
||||
(or (not locked)
|
||||
(progn
|
||||
(message "Emacs cannot exit because buffer %S is locked" locked)
|
||||
nil))))
|
||||
|
||||
(defun emacs-lock--kill-buffer-query-functions ()
|
||||
"Display a message if the current buffer is kill-locked.
|
||||
Return a value appropriate for `kill-buffer-query-functions' (which see)."
|
||||
(or (emacs-lock--can-auto-unlock 'kill)
|
||||
(memq emacs-lock-mode '(nil exit))
|
||||
(progn
|
||||
(setq emacs-lock-from-exiting nil)
|
||||
(setq emacs-lock-buffer-locked t)
|
||||
(message "Buffer is now unlocked"))
|
||||
(setq emacs-lock-buffer-locked nil)))
|
||||
(message "Buffer %S is locked and cannot be killed" (buffer-name))
|
||||
nil)))
|
||||
|
||||
(defun emacs-lock-was-buffer-locked ()
|
||||
(if emacs-lock-buffer-locked
|
||||
(setq emacs-lock-from-exiting t)))
|
||||
(defun emacs-lock--set-mode (mode arg)
|
||||
"Setter function for `emacs-lock-mode'."
|
||||
(setq emacs-lock-mode
|
||||
(cond ((memq arg '(all exit kill))
|
||||
;; explicit locking mode arg, use it
|
||||
arg)
|
||||
((and (eq arg current-prefix-arg) (consp current-prefix-arg))
|
||||
;; called with C-u M-x emacs-lock-mode, so ask the user
|
||||
(intern (completing-read "Locking mode: "
|
||||
'("all" "exit" "kill")
|
||||
nil t nil nil
|
||||
(symbol-name
|
||||
emacs-lock-default-locking-mode))))
|
||||
((eq mode t)
|
||||
;; turn on, so use previous setting, or customized default
|
||||
(or emacs-lock--old-mode emacs-lock-default-locking-mode))
|
||||
(t
|
||||
;; anything else (turn off)
|
||||
mode))))
|
||||
|
||||
;;;###autoload
|
||||
(define-minor-mode emacs-lock-mode
|
||||
"Toggle Emacs Lock mode in the current buffer.
|
||||
|
||||
With \\[universal-argument], ask for the locking mode to be used.
|
||||
With other prefix ARG, turn mode on if ARG is positive, off otherwise.
|
||||
|
||||
Initially, if the user does not pass an explicit locking mode, it defaults
|
||||
to `emacs-lock-default-locking-mode' (which see); afterwards, the locking
|
||||
mode most recently set on the buffer is used instead.
|
||||
|
||||
When called from Elisp code, ARG can be any locking mode:
|
||||
|
||||
exit -- Emacs cannot exit while the buffer is locked
|
||||
kill -- the buffer cannot be killed, but Emacs can exit as usual
|
||||
all -- the buffer is locked against both actions
|
||||
|
||||
Other values are interpreted as usual."
|
||||
:init-value nil
|
||||
:lighter (""
|
||||
(emacs-lock--try-unlocking " locked:" " Locked:")
|
||||
(:eval (symbol-name emacs-lock-mode)))
|
||||
:group 'emacs-lock
|
||||
:variable (emacs-lock-mode .
|
||||
(lambda (mode)
|
||||
(emacs-lock--set-mode mode arg)))
|
||||
(when emacs-lock-mode
|
||||
(setq emacs-lock--old-mode emacs-lock-mode)
|
||||
(setq emacs-lock--try-unlocking
|
||||
(and (if (eq emacs-lock-unlockable-modes t)
|
||||
(emacs-lock-live-process-p (current-buffer))
|
||||
(assq major-mode emacs-lock-unlockable-modes))
|
||||
t))))
|
||||
|
||||
(unless noninteractive
|
||||
(add-hook 'kill-emacs-hook 'check-emacs-lock))
|
||||
(add-hook 'kill-buffer-hook 'emacs-lock-check-buffer-lock)
|
||||
(add-hook 'shell-mode-hook 'emacs-lock-was-buffer-locked)
|
||||
(add-hook 'shell-mode-hook 'emacs-lock-shell-sentinel)
|
||||
(add-hook 'telnet-mode-hook 'emacs-lock-was-buffer-locked)
|
||||
(add-hook 'telnet-mode-hook 'emacs-lock-shell-sentinel)
|
||||
(add-hook 'kill-buffer-query-functions 'emacs-lock--kill-buffer-query-functions)
|
||||
;; We set a hook in both kill-emacs-hook and kill-emacs-query-functions because
|
||||
;; we really want to use k-e-q-f to stop as soon as possible, but don't want to
|
||||
;; be caught by surprise if someone calls `kill-emacs' instead.
|
||||
(add-hook 'kill-emacs-hook 'emacs-lock--kill-emacs-hook)
|
||||
(add-hook 'kill-emacs-query-functions 'emacs-lock--kill-emacs-query-functions))
|
||||
|
||||
(defun emacs-lock-unload-function ()
|
||||
"Unload the Emacs Lock library."
|
||||
(catch :continue
|
||||
(dolist (buffer (buffer-list))
|
||||
(set-buffer buffer)
|
||||
(when emacs-lock-mode
|
||||
(if (y-or-n-p (format "Buffer %S is locked, unlock it? " (buffer-name)))
|
||||
(emacs-lock-mode -1)
|
||||
(message "Unloading of feature `emacs-lock' aborted.")
|
||||
(throw :continue t))))
|
||||
;; continue standard unloading
|
||||
nil))
|
||||
|
||||
;;; Compatibility
|
||||
|
||||
(define-obsolete-variable-alias 'emacs-lock-from-exiting 'emacs-lock-mode "24.1")
|
||||
|
||||
(defun toggle-emacs-lock ()
|
||||
"Toggle `emacs-lock-from-exiting' for the current buffer."
|
||||
(interactive)
|
||||
(call-interactively 'emacs-lock-mode))
|
||||
(make-obsolete 'toggle-emacs-lock 'emacs-lock-mode "24.1")
|
||||
|
||||
(provide 'emacs-lock)
|
||||
|
||||
|
|
|
@ -1,3 +1,37 @@
|
|||
2011-07-06 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* gnus-group.el (gnus-read-ephemeral-emacs-bug-group): Silence compiler.
|
||||
|
||||
2011-07-05 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* gnus.el (gnus-refer-article-method): Remove mention of nnspool, which
|
||||
no longer is much used.
|
||||
(gnus-summary-line-format): Link to "Marking Articles" instead of "Read
|
||||
Articles".
|
||||
|
||||
2011-04-03 Kan-Ru Chen <kanru@kanru.info>
|
||||
|
||||
* nnir.el (nnir-notmuch-program, nnir-notmuch-additional-switches)
|
||||
(nnir-notmuch-remove-prefix, nnir-engines, nnir-run-notmuch): New nnir
|
||||
`notmuch' backend.
|
||||
|
||||
2011-07-05 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* mm-decode.el (mm-text-html-renderer): Doc fix.
|
||||
|
||||
* gnus-msg.el (gnus-bug): Fix the MML tag.
|
||||
|
||||
* pop3.el (pop3-open-server): -ERR is a valid response to CAPA.
|
||||
|
||||
2011-07-05 Daiki Ueno <ueno@unixuser.org>
|
||||
|
||||
* gnus-start.el (gnus-get-unread-articles): Don't connect to the
|
||||
secondary methods if started with `gnus-no-server'.
|
||||
|
||||
2011-07-05 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* message.el (message-return-action): Fix typo in docstring.
|
||||
|
||||
2011-07-04 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* nnimap.el (nnimap-request-scan): Say that splitting has finished.
|
||||
|
|
|
@ -2428,25 +2428,28 @@ the bug number, and browsing the URL must return mbox output."
|
|||
:version "24.1"
|
||||
:type '(repeat (cons (symbol) (string :tag "URL format string"))))
|
||||
|
||||
(defun gnus-read-ephemeral-bug-group (number mbox-url &optional window-conf)
|
||||
(defun gnus-read-ephemeral-bug-group (ids mbox-url &optional window-conf)
|
||||
"Browse bug NUMBER as ephemeral group."
|
||||
(interactive (list (read-string "Enter bug number: "
|
||||
(thing-at-point 'word) nil)
|
||||
;; FIXME: Add completing-read from
|
||||
;; `gnus-emacs-bug-group-download-format' ...
|
||||
(cdr (assoc 'emacs gnus-bug-group-download-format-alist))))
|
||||
(when (stringp number)
|
||||
(setq number (string-to-number number)))
|
||||
(when (stringp ids)
|
||||
(setq ids (string-to-number ids)))
|
||||
(unless (listp ids)
|
||||
(setq ids (list ids)))
|
||||
(let ((tmpfile (mm-make-temp-file "gnus-temp-group-"))
|
||||
(coding-system-for-write 'binary)
|
||||
(coding-system-for-read 'binary))
|
||||
(with-temp-file tmpfile
|
||||
(url-insert-file-contents (format mbox-url number))
|
||||
(dolist (id ids)
|
||||
(url-insert-file-contents (format mbox-url id)))
|
||||
(goto-char (point-min))
|
||||
;; Add the debbugs address so that we can respond to reports easily.
|
||||
(while (re-search-forward "^To: " nil t)
|
||||
(end-of-line)
|
||||
(insert (format ", %s@%s" number
|
||||
(insert (format ", %s@%s" (car ids)
|
||||
(gnus-replace-in-string
|
||||
(gnus-replace-in-string mbox-url "^http://" "")
|
||||
"/.*$" ""))))
|
||||
|
@ -2466,19 +2469,23 @@ the bug number, and browsing the URL must return mbox output."
|
|||
number
|
||||
(cdr (assoc 'debian gnus-bug-group-download-format-alist))))
|
||||
|
||||
(defun gnus-read-ephemeral-emacs-bug-group (number &optional window-conf)
|
||||
"Browse Emacs bug NUMBER as ephemeral group."
|
||||
(defvar debbugs-bug-number) ; debbugs-gnu
|
||||
|
||||
(defun gnus-read-ephemeral-emacs-bug-group (ids &optional window-conf)
|
||||
"Browse Emacs bugs IDS as an ephemeral group."
|
||||
(interactive (list (string-to-number
|
||||
(read-string "Enter bug number: "
|
||||
(thing-at-point 'word) nil))))
|
||||
(unless (listp ids)
|
||||
(setq ids (list ids)))
|
||||
(gnus-read-ephemeral-bug-group
|
||||
number
|
||||
ids
|
||||
(cdr (assoc 'emacs gnus-bug-group-download-format-alist))
|
||||
window-conf)
|
||||
(when (boundp 'debbugs-summary-mode)
|
||||
(when (fboundp 'debbugs-summary-mode)
|
||||
(with-current-buffer (window-buffer (selected-window))
|
||||
(debbugs-summary-mode 1)
|
||||
(set (make-local-variable 'debbugs-bug-number) number))))
|
||||
(set (make-local-variable 'debbugs-bug-number) (car ids)))))
|
||||
|
||||
(defun gnus-group-jump-to-group (group &optional prompt)
|
||||
"Jump to newsgroup GROUP.
|
||||
|
|
|
@ -1480,10 +1480,10 @@ If YANK is non-nil, include the original article."
|
|||
(erase-buffer)
|
||||
(gnus-debug)
|
||||
(setq text (buffer-string)))
|
||||
(insert (concat "<#part type=application/emacs-lisp"
|
||||
"disposition=inline description=\"User settings\">\n"
|
||||
text
|
||||
"\n<#/part>")))
|
||||
(insert "<#part type=application/emacs-lisp "
|
||||
"disposition=inline description=\"User settings\">\n"
|
||||
text
|
||||
"\n<#/part>"))
|
||||
(goto-char (point-min))
|
||||
(search-forward "Subject: " nil t)
|
||||
(message "")))
|
||||
|
|
|
@ -1043,7 +1043,7 @@ If LEVEL is non-nil, the news will be set up at level LEVEL."
|
|||
|
||||
;; Find the number of unread articles in each non-dead group.
|
||||
(let ((gnus-read-active-file (and (not level) gnus-read-active-file)))
|
||||
(gnus-get-unread-articles level))))
|
||||
(gnus-get-unread-articles level dont-connect))))
|
||||
|
||||
(defun gnus-call-subscribe-functions (method group)
|
||||
"Call METHOD to subscribe GROUP.
|
||||
|
@ -1606,7 +1606,7 @@ If SCAN, request a scan of that group as well."
|
|||
|
||||
;; Go though `gnus-newsrc-alist' and compare with `gnus-active-hashtb'
|
||||
;; and compute how many unread articles there are in each group.
|
||||
(defun gnus-get-unread-articles (&optional level)
|
||||
(defun gnus-get-unread-articles (&optional level dont-connect)
|
||||
(setq gnus-server-method-cache nil)
|
||||
(require 'gnus-agent)
|
||||
(let* ((newsrc (cdr gnus-newsrc-alist))
|
||||
|
@ -1702,12 +1702,13 @@ If SCAN, request a scan of that group as well."
|
|||
|
||||
;; If we have primary/secondary select methods, but no groups from
|
||||
;; them, we still want to issue a retrieval request from them.
|
||||
(dolist (method (cons gnus-select-method
|
||||
gnus-secondary-select-methods))
|
||||
(when (and (not (assoc method type-cache))
|
||||
(gnus-check-backend-function 'request-list (car method)))
|
||||
(with-current-buffer nntp-server-buffer
|
||||
(gnus-read-active-file-1 method nil))))
|
||||
(unless dont-connect
|
||||
(dolist (method (cons gnus-select-method
|
||||
gnus-secondary-select-methods))
|
||||
(when (and (not (assoc method type-cache))
|
||||
(gnus-check-backend-function 'request-list (car method)))
|
||||
(with-current-buffer nntp-server-buffer
|
||||
(gnus-read-active-file-1 method nil)))))
|
||||
|
||||
;; Start early async retrieval of data.
|
||||
(let ((done-methods nil)
|
||||
|
|
|
@ -1423,10 +1423,6 @@ no need to set this variable."
|
|||
|
||||
(defcustom gnus-refer-article-method 'current
|
||||
"Preferred method for fetching an article by Message-ID.
|
||||
If you are reading news from the local spool (with nnspool), fetching
|
||||
articles by Message-ID is painfully slow. By setting this method to an
|
||||
nntp method, you might get acceptable results.
|
||||
|
||||
The value of this variable must be a valid select method as discussed
|
||||
in the documentation of `gnus-select-method'.
|
||||
|
||||
|
@ -2967,7 +2963,7 @@ with some simple extensions.
|
|||
%R \"A\" if this article has been replied to, \" \"
|
||||
otherwise (character)
|
||||
%U \"Read\" status of this article.
|
||||
See Info node `(gnus)Read Articles'
|
||||
See Info node `(gnus)Marking Articles'
|
||||
%[ Opening bracket (character, \"[\" or \"<\")
|
||||
%] Closing bracket (character, \"]\" or \">\")
|
||||
%> Spaces of length thread-level (string)
|
||||
|
|
|
@ -1185,7 +1185,7 @@ It is a vector of the following headers:
|
|||
(defvar message-send-actions nil
|
||||
"A list of actions to be performed upon successful sending of a message.")
|
||||
(defvar message-return-action nil
|
||||
"Action to return to the caller after sending or postphoning a message.")
|
||||
"Action to return to the caller after sending or postponing a message.")
|
||||
(defvar message-exit-actions nil
|
||||
"A list of actions to be performed upon exiting after sending a message.")
|
||||
(defvar message-kill-actions nil
|
||||
|
|
|
@ -114,14 +114,14 @@
|
|||
"Render of HTML contents.
|
||||
It is one of defined renderer types, or a rendering function.
|
||||
The defined renderer types are:
|
||||
`shr': use Gnus simple HTML renderer;
|
||||
`gnus-w3m' : use Gnus renderer based on w3m;
|
||||
`w3m' : use emacs-w3m;
|
||||
`w3m-standalone': use w3m;
|
||||
`shr': use the built-in Gnus HTML renderer;
|
||||
`gnus-w3m': use Gnus renderer based on w3m;
|
||||
`w3m': use emacs-w3m;
|
||||
`w3m-standalone': use plain w3m;
|
||||
`links': use links;
|
||||
`lynx' : use lynx;
|
||||
`w3' : use Emacs/W3;
|
||||
`html2text' : use html2text;
|
||||
`lynx': use lynx;
|
||||
`w3': use Emacs/W3;
|
||||
`html2text': use html2text;
|
||||
nil : use external viewer (default web browser)."
|
||||
:version "24.1"
|
||||
:type '(choice (const shr)
|
||||
|
|
|
@ -499,6 +499,31 @@ arrive at the correct group name, \"mail.misc\"."
|
|||
:type '(directory)
|
||||
:group 'nnir)
|
||||
|
||||
(defcustom nnir-notmuch-program "notmuch"
|
||||
"*Name of notmuch search executable."
|
||||
:type '(string)
|
||||
:group 'nnir)
|
||||
|
||||
(defcustom nnir-notmuch-additional-switches '()
|
||||
"*A list of strings, to be given as additional arguments to notmuch.
|
||||
|
||||
Note that this should be a list. Ie, do NOT use the following:
|
||||
(setq nnir-notmuch-additional-switches \"-i -w\") ; wrong
|
||||
Instead, use this:
|
||||
(setq nnir-notmuch-additional-switches '(\"-i\" \"-w\"))"
|
||||
:type '(repeat (string))
|
||||
:group 'nnir)
|
||||
|
||||
(defcustom nnir-notmuch-remove-prefix (concat (getenv "HOME") "/Mail/")
|
||||
"*The prefix to remove from each file name returned by notmuch
|
||||
in order to get a group name (albeit with / instead of .). This is a
|
||||
regular expression.
|
||||
|
||||
This variable is very similar to `nnir-namazu-remove-prefix', except
|
||||
that it is for notmuch, not Namazu."
|
||||
:type '(regexp)
|
||||
:group 'nnir)
|
||||
|
||||
;;; Developer Extension Variable:
|
||||
|
||||
(defvar nnir-engines
|
||||
|
@ -519,6 +544,8 @@ arrive at the correct group name, \"mail.misc\"."
|
|||
((group . "Swish-e Group spec: ")))
|
||||
(namazu nnir-run-namazu
|
||||
())
|
||||
(notmuch nnir-run-notmuch
|
||||
())
|
||||
(hyrex nnir-run-hyrex
|
||||
((group . "Hyrex Group spec: ")))
|
||||
(find-grep nnir-run-find-grep
|
||||
|
@ -1338,6 +1365,80 @@ Tested with Namazu 2.0.6 on a GNU/Linux system."
|
|||
(> (nnir-artitem-rsv x)
|
||||
(nnir-artitem-rsv y)))))))))
|
||||
|
||||
(defun nnir-run-notmuch (query server &optional group)
|
||||
"Run QUERY against notmuch.
|
||||
Returns a vector of (group name, file name) pairs (also vectors,
|
||||
actually)."
|
||||
|
||||
;; (when group
|
||||
;; (error "The notmuch backend cannot search specific groups"))
|
||||
|
||||
(save-excursion
|
||||
(let ( (qstring (cdr (assq 'query query)))
|
||||
(groupspec (cdr (assq 'group query)))
|
||||
(prefix (nnir-read-server-parm 'nnir-notmuch-remove-prefix server))
|
||||
artlist
|
||||
(article-pattern (if (string= (gnus-group-server server) "nnmaildir")
|
||||
":[0-9]+"
|
||||
"^[0-9]+$"))
|
||||
artno dirnam filenam)
|
||||
|
||||
(when (equal "" qstring)
|
||||
(error "notmuch: You didn't enter anything"))
|
||||
|
||||
(set-buffer (get-buffer-create nnir-tmp-buffer))
|
||||
(erase-buffer)
|
||||
|
||||
(if groupspec
|
||||
(message "Doing notmuch query %s on %s..." qstring groupspec)
|
||||
(message "Doing notmuch query %s..." qstring))
|
||||
|
||||
(let* ((cp-list `( ,nnir-notmuch-program
|
||||
nil ; input from /dev/null
|
||||
t ; output
|
||||
nil ; don't redisplay
|
||||
"search"
|
||||
"--format=text"
|
||||
"--output=files"
|
||||
,@(nnir-read-server-parm 'nnir-notmuch-additional-switches server)
|
||||
,qstring ; the query, in notmuch format
|
||||
))
|
||||
(exitstatus
|
||||
(progn
|
||||
(message "%s args: %s" nnir-notmuch-program
|
||||
(mapconcat 'identity (cddddr cp-list) " ")) ;; ???
|
||||
(apply 'call-process cp-list))))
|
||||
(unless (or (null exitstatus)
|
||||
(zerop exitstatus))
|
||||
(nnheader-report 'nnir "Couldn't run notmuch: %s" exitstatus)
|
||||
;; notmuch failure reason is in this buffer, show it if
|
||||
;; the user wants it.
|
||||
(when (> gnus-verbose 6)
|
||||
(display-buffer nnir-tmp-buffer))))
|
||||
|
||||
;; The results are output in the format of:
|
||||
;; absolute-path-name
|
||||
(goto-char (point-min))
|
||||
(while (not (eobp))
|
||||
(setq filenam (buffer-substring-no-properties (line-beginning-position)
|
||||
(line-end-position))
|
||||
artno (file-name-nondirectory filenam)
|
||||
dirnam (file-name-directory filenam))
|
||||
(forward-line 1)
|
||||
|
||||
;; don't match directories
|
||||
(when (string-match article-pattern artno)
|
||||
(when (not (null dirnam))
|
||||
|
||||
;; maybe limit results to matching groups.
|
||||
(when (or (not groupspec)
|
||||
(string-match groupspec dirnam))
|
||||
(nnir-add-result dirnam artno "" prefix server artlist)))))
|
||||
|
||||
(message "Massaging notmuch output...done")
|
||||
|
||||
artlist)))
|
||||
|
||||
(defun nnir-run-find-grep (query server &optional grouplist)
|
||||
"Run find and grep to obtain matching articles."
|
||||
(let* ((method (gnus-server-to-method server))
|
||||
|
|
|
@ -307,7 +307,7 @@ Returns the process associated with the connection."
|
|||
(or pop3-stream-type 'network)))
|
||||
:capability-command "CAPA\r\n"
|
||||
:end-of-command "^\\(-ERR\\|+OK \\).*\n"
|
||||
:end-of-capability "^\\.\r?\n"
|
||||
:end-of-capability "^\\.\r?\n\\|^-ERR"
|
||||
:success "^\\+OK.*\n"
|
||||
:return-list t
|
||||
:starttls-function
|
||||
|
|
|
@ -2092,7 +2092,7 @@ If SAME-FILE is non-nil, do not move to a different Info file."
|
|||
))
|
||||
|
||||
(defun Info-directory-toc-nodes (filename)
|
||||
"Directory-specific implementation of `Info-directory-toc-nodes'."
|
||||
"Directory-specific implementation of `Info-toc-nodes'."
|
||||
`(,filename
|
||||
("Top" nil nil nil)))
|
||||
|
||||
|
|
|
@ -351,7 +351,7 @@
|
|||
;; systems with non-classic /bin/[r]mail behavior
|
||||
;; guard against nil user-mail-address in generating MESSAGE-ID:
|
||||
;; feedmail-queue-slug-suspect-regexp is now a variable to
|
||||
;; accomodate non-ASCII environments (thanks to
|
||||
;; accommodate non-ASCII environments (thanks to
|
||||
;; Makoto.Nakagawa@jp.compaq.com for this suggestion)
|
||||
;; feedmail-buffer-to-smtp, to parallel feedmail-buffer-to-smtpmail
|
||||
;; patchlevel 10, 22 April 2001
|
||||
|
|
|
@ -153,20 +153,21 @@ MIME entities.")
|
|||
;;; MIME-entity object
|
||||
|
||||
(defun rmail-mime-entity (type disposition transfer-encoding
|
||||
display header tagline body children handler)
|
||||
display header tagline body children handler
|
||||
&optional truncated)
|
||||
"Retrun a newly created MIME-entity object from arguments.
|
||||
|
||||
A MIME-entity is a vector of 9 elements:
|
||||
A MIME-entity is a vector of 10 elements:
|
||||
|
||||
[TYPE DISPOSITION TRANSFER-ENCODING DISPLAY HEADER TAGLINE BODY
|
||||
CHILDREN HANDLER]
|
||||
CHILDREN HANDLER TRUNCATED]
|
||||
|
||||
TYPE and DISPOSITION correspond to MIME headers Content-Type and
|
||||
Cotent-Disposition respectively, and has this format:
|
||||
Content-Disposition respectively, and have this format:
|
||||
|
||||
\(VALUE (ATTRIBUTE . VALUE) (ATTRIBUTE . VALUE) ...)
|
||||
|
||||
VALUE is a string and ATTRIBUTE is a symbol.
|
||||
Each VALUE is a string and each ATTRIBUTE is a string.
|
||||
|
||||
Consider the following header, for example:
|
||||
|
||||
|
@ -208,9 +209,12 @@ entity have one or more children. A \"message/rfc822\" entity
|
|||
has just one child. Any other entity has no child.
|
||||
|
||||
HANDLER is a function to insert the entity according to DISPLAY.
|
||||
It is called with one argument ENTITY."
|
||||
It is called with one argument ENTITY.
|
||||
|
||||
TRUNCATED is non-nil if the text of this entity was truncated."
|
||||
|
||||
(vector type disposition transfer-encoding
|
||||
display header tagline body children handler))
|
||||
display header tagline body children handler truncated))
|
||||
|
||||
;; Accessors for a MIME-entity object.
|
||||
(defsubst rmail-mime-entity-type (entity) (aref entity 0))
|
||||
|
@ -222,6 +226,9 @@ It is called with one argument ENTITY."
|
|||
(defsubst rmail-mime-entity-body (entity) (aref entity 6))
|
||||
(defsubst rmail-mime-entity-children (entity) (aref entity 7))
|
||||
(defsubst rmail-mime-entity-handler (entity) (aref entity 8))
|
||||
(defsubst rmail-mime-entity-truncated (entity) (aref entity 9))
|
||||
(defsubst rmail-mime-entity-set-truncated (entity truncated)
|
||||
(aset entity 9 truncated))
|
||||
|
||||
(defsubst rmail-mime-message-p ()
|
||||
"Non-nil if and only if the current message is a MIME."
|
||||
|
@ -237,6 +244,10 @@ It is called with one argument ENTITY."
|
|||
(directory (button-get button 'directory))
|
||||
(data (button-get button 'data))
|
||||
(ofilename filename))
|
||||
(if (and (not (stringp data))
|
||||
(rmail-mime-entity-truncated data))
|
||||
(unless (y-or-n-p "This entity is truncated; save anyway? ")
|
||||
(error "Aborted")))
|
||||
(setq filename (expand-file-name
|
||||
(read-file-name (format "Save as (default: %s): " filename)
|
||||
directory
|
||||
|
@ -387,6 +398,11 @@ The value is a vector [ INDEX HEADER TAGLINE BODY END], where
|
|||
(if (and rmail-mime-mbox-buffer (= (aref segment 1) (point-min)))
|
||||
(let ((new (aref (rmail-mime-entity-display entity) 1)))
|
||||
(aset new 0 t))))
|
||||
;; Query as a warning before showing if truncated.
|
||||
(if (and (not (stringp entity))
|
||||
(rmail-mime-entity-truncated entity))
|
||||
(unless (y-or-n-p "This entity is truncated; show anyway? ")
|
||||
(error "Aborted")))
|
||||
;; Enter the shown mode.
|
||||
(rmail-mime-shown-mode entity)
|
||||
;; Force this body shown.
|
||||
|
@ -816,7 +832,7 @@ The other arguments are the same as `rmail-mime-multipart-handler'."
|
|||
(let ((boundary (cdr (assq 'boundary content-type)))
|
||||
(subtype (cadr (split-string (car content-type) "/")))
|
||||
(index 0)
|
||||
beg end next entities)
|
||||
beg end next entities truncated)
|
||||
(unless boundary
|
||||
(rmail-mm-get-boundary-error-message
|
||||
"No boundary defined" content-type content-disposition
|
||||
|
@ -845,7 +861,7 @@ The other arguments are the same as `rmail-mime-multipart-handler'."
|
|||
(setq beg (point-min))
|
||||
|
||||
(while (or (and (search-forward boundary nil t)
|
||||
(setq end (match-beginning 0)))
|
||||
(setq truncated nil end (match-beginning 0)))
|
||||
;; If the boundary does not appear at all,
|
||||
;; the message was truncated.
|
||||
;; Handle the rest of the truncated message
|
||||
|
@ -854,7 +870,7 @@ The other arguments are the same as `rmail-mime-multipart-handler'."
|
|||
(and (save-excursion
|
||||
(skip-chars-forward "\n")
|
||||
(> (point-max) (point)))
|
||||
(setq end (point-max))))
|
||||
(setq truncated t end (point-max))))
|
||||
;; If this is the last boundary according to RFC 2046, hide the
|
||||
;; epilogue, else hide the boundary only. Use a marker for
|
||||
;; `next' because `rmail-mime-show' may change the buffer.
|
||||
|
@ -862,7 +878,7 @@ The other arguments are the same as `rmail-mime-multipart-handler'."
|
|||
(setq next (point-max-marker)))
|
||||
((looking-at "[ \t]*\n")
|
||||
(setq next (copy-marker (match-end 0) t)))
|
||||
((= end (point-max))
|
||||
(truncated
|
||||
;; We're handling what's left of a truncated message.
|
||||
(setq next (point-max-marker)))
|
||||
(t
|
||||
|
@ -886,6 +902,7 @@ The other arguments are the same as `rmail-mime-multipart-handler'."
|
|||
;; Display a tagline.
|
||||
(aset (aref (rmail-mime-entity-display child) 1) 1
|
||||
(aset (rmail-mime-entity-tagline child) 2 t))
|
||||
(rmail-mime-entity-set-truncated child truncated)
|
||||
(push child entities)))
|
||||
|
||||
(delete-region end next)
|
||||
|
@ -1391,6 +1408,8 @@ This is the usual value of `rmail-insert-mime-forwarded-message-function'."
|
|||
(re-search-forward regexp nil t))
|
||||
;; Next, search the body.
|
||||
(if (and entity
|
||||
;; RMS: I am not sure why, but sometimes this is a string.
|
||||
(not (stringp entity))
|
||||
(let* ((content-type (rmail-mime-entity-type entity))
|
||||
(charset (cdr (assq 'charset (cdr content-type)))))
|
||||
(or (not (string-match "text/.*" (car content-type)))
|
||||
|
|
|
@ -144,19 +144,11 @@ Otherwise, let mailer send back a message to report errors."
|
|||
;;;###autoload
|
||||
(put 'send-mail-function 'standard-value
|
||||
;; MS-Windows can access the clipboard even under -nw.
|
||||
'((if (or (and window-system (eq system-type 'darwin))
|
||||
(eq system-type 'windows-nt))
|
||||
'mailclient-send-it
|
||||
'sendmail-send-it)))
|
||||
'('sendmail-query-once))
|
||||
|
||||
;; Useful to set in site-init.el
|
||||
;;;###autoload
|
||||
(defcustom send-mail-function
|
||||
(if (or (and window-system (eq system-type 'darwin))
|
||||
;; MS-Windows can access the clipboard even under -nw.
|
||||
(eq system-type 'windows-nt))
|
||||
'mailclient-send-it
|
||||
'sendmail-send-it)
|
||||
(defcustom send-mail-function 'sendmail-query-once
|
||||
"Function to call to send the current buffer as mail.
|
||||
The headers should be delimited by a line which is
|
||||
not a valid RFC822 header or continuation line,
|
||||
|
@ -170,11 +162,13 @@ This is used by the default mail-sending commands. See also
|
|||
(function-item mailclient-send-it :tag "Use Mailclient package")
|
||||
function)
|
||||
:initialize 'custom-initialize-delay
|
||||
:version "24.1"
|
||||
:group 'sendmail)
|
||||
|
||||
(defvar sendmail-query-once-function 'query
|
||||
"Either a function to send email, or the symbol `query'.")
|
||||
|
||||
;;;###autoload
|
||||
(defun sendmail-query-once ()
|
||||
"Send an email via `sendmail-query-once-function'.
|
||||
If `sendmail-query-once-function' is `query', ask the user what
|
||||
|
|
|
@ -71,9 +71,11 @@
|
|||
:group 'mail)
|
||||
|
||||
|
||||
(defvar smtpmail-default-smtp-server nil
|
||||
(defcustom smtpmail-default-smtp-server nil
|
||||
"Specify default SMTP server.
|
||||
This only has effect if you specify it before loading the smtpmail library.")
|
||||
This only has effect if you specify it before loading the smtpmail library."
|
||||
:type '(choice (const nil) string)
|
||||
:group 'smtpmail)
|
||||
|
||||
(defcustom smtpmail-smtp-server
|
||||
(or (getenv "SMTPSERVER") smtpmail-default-smtp-server)
|
||||
|
|
|
@ -281,18 +281,14 @@ functionality.
|
|||
(network-stream-command stream capability-command eo-capa))))
|
||||
|
||||
;; If TLS is mandatory, close the connection if it's unencrypted.
|
||||
(when (and (or require-tls
|
||||
;; The server said it was possible to do STARTTLS,
|
||||
;; and we wanted to use it...
|
||||
(and starttls-command
|
||||
(plist-get parameters :use-starttls-if-possible)))
|
||||
(when (and require-tls
|
||||
;; ... but Emacs wasn't able to -- either no built-in
|
||||
;; support, or no gnutls-cli installed.
|
||||
(eq resulting-type 'plain))
|
||||
(setq error
|
||||
(if require-tls
|
||||
"Server does not support TLS"
|
||||
"Server supports STARTTLS, but Emacs does not have support for it"))
|
||||
(setq error
|
||||
(if require-tls
|
||||
"Server does not support TLS"
|
||||
"Server supports STARTTLS, but Emacs does not have support for it"))
|
||||
(delete-process stream)
|
||||
(setq stream nil))
|
||||
;; Return value:
|
||||
|
|
|
@ -308,7 +308,7 @@ buffer in your bug report.
|
|||
|
||||
;; There is at least one Tramp buffer.
|
||||
(when buffer-list
|
||||
(switch-to-buffer (list-buffers-noselect nil))
|
||||
(tramp-compat-pop-to-buffer-same-window (list-buffers-noselect nil))
|
||||
(delete-other-windows)
|
||||
(setq buffer-read-only nil)
|
||||
(goto-char (point-min))
|
||||
|
@ -343,7 +343,7 @@ the debug buffer(s).")
|
|||
;; OK, let's send. First we delete the buffer list.
|
||||
(progn
|
||||
(kill-buffer nil)
|
||||
(switch-to-buffer curbuf)
|
||||
(tramp-compat-pop-to-buffer-same-window curbuf)
|
||||
(goto-char (point-max))
|
||||
(insert "\n\
|
||||
This is a special notion of the `gnus/message' package. If you
|
||||
|
|
|
@ -23,9 +23,9 @@
|
|||
|
||||
;;; Commentary:
|
||||
|
||||
;; Tramp's main Emacs version for development is GNU Emacs 24. This
|
||||
;; package provides compatibility functions for GNU Emacs 22, GNU
|
||||
;; Emacs 23 and XEmacs 21.4+.
|
||||
;; Tramp's main Emacs version for development is Emacs 24. This
|
||||
;; package provides compatibility functions for Emacs 22, Emacs 23,
|
||||
;; XEmacs 21.4+ and SXEmacs 22.
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
@ -286,9 +286,8 @@ Not actually used. Use `(format \"%o\" i)' instead?"
|
|||
(tramp-compat-funcall 'file-attributes filename id-format)
|
||||
(wrong-number-of-arguments (file-attributes filename))))))
|
||||
|
||||
;; PRESERVE-UID-GID has been introduced with Emacs 23. It does not
|
||||
;; hurt to ignore it for other (X)Emacs versions.
|
||||
;; PRESERVE-SELINUX-CONTEXT has been introduced with Emacs 24.
|
||||
;; PRESERVE-UID-GID does not exist in XEmacs.
|
||||
;; PRESERVE-SELINUX-CONTEXT has been introduced with Emacs 24.1.
|
||||
(defun tramp-compat-copy-file
|
||||
(filename newname &optional ok-if-already-exists keep-date
|
||||
preserve-uid-gid preserve-selinux-context)
|
||||
|
@ -484,10 +483,7 @@ exiting if process is running."
|
|||
(tramp-compat-funcall 'set-process-query-on-exit-flag process flag)
|
||||
(tramp-compat-funcall 'process-kill-without-query process flag)))
|
||||
|
||||
(add-hook 'tramp-unload-hook
|
||||
(lambda ()
|
||||
(unload-feature 'tramp-compat 'force)))
|
||||
|
||||
;; There exist different implementations for this function.
|
||||
(defun tramp-compat-coding-system-change-eol-conversion (coding-system eol-type)
|
||||
"Return a coding system like CODING-SYSTEM but with given EOL-TYPE.
|
||||
EOL-TYPE can be one of `dos', `unix', or `mac'."
|
||||
|
@ -506,6 +502,19 @@ EOL-TYPE can be one of `dos', `unix', or `mac'."
|
|||
"`dos', `unix', or `mac'")))))
|
||||
(t (error "Can't change EOL conversion -- is MULE missing?"))))
|
||||
|
||||
;; `pop-to-buffer-same-window' has been introduced with Emacs 24.1.
|
||||
(defun tramp-compat-pop-to-buffer-same-window
|
||||
(&optional buffer-or-name norecord label)
|
||||
"Pop to buffer specified by BUFFER-OR-NAME in the selected window."
|
||||
(if (fboundp 'pop-to-buffer-same-window)
|
||||
(tramp-compat-funcall
|
||||
'pop-to-buffer-same-window buffer-or-name norecord label)
|
||||
(tramp-compat-funcall 'switch-to-buffer buffer-or-name norecord)))
|
||||
|
||||
(add-hook 'tramp-unload-hook
|
||||
(lambda ()
|
||||
(unload-feature 'tramp-compat 'force)))
|
||||
|
||||
(provide 'tramp-compat)
|
||||
|
||||
;;; TODO:
|
||||
|
|
102
lisp/obsolete/old-emacs-lock.el
Normal file
102
lisp/obsolete/old-emacs-lock.el
Normal file
|
@ -0,0 +1,102 @@
|
|||
;;; emacs-lock.el --- prevents you from exiting Emacs if a buffer is locked
|
||||
|
||||
;; Copyright (C) 1994, 1997, 2001-2011 Free Software Foundation, Inc
|
||||
|
||||
;; Author: Tom Wurgler <twurgler@goodyear.com>
|
||||
;; Created: 12/8/94
|
||||
;; Keywords: extensions, processes
|
||||
;; Obsolete-since: 24.1
|
||||
|
||||
;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This code sets a buffer-local variable to t if toggle-emacs-lock is run,
|
||||
;; then if the user attempts to exit Emacs, the locked buffer name will be
|
||||
;; displayed and the exit aborted. This is just a way of protecting
|
||||
;; yourself from yourself. For example, if you have a shell running a big
|
||||
;; program and exiting Emacs would abort that program, you may want to lock
|
||||
;; that buffer, then if you forget about it after a while, you won't
|
||||
;; accidentally exit Emacs. To unlock the buffer, just goto the buffer and
|
||||
;; run toggle-emacs-lock again.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(defvar emacs-lock-from-exiting nil
|
||||
"Whether Emacs is locked to prevent exiting. See `check-emacs-lock'.")
|
||||
(make-variable-buffer-local 'emacs-lock-from-exiting)
|
||||
|
||||
(defvar emacs-lock-buffer-locked nil
|
||||
"Whether a shell or telnet buffer was locked when its process was killed.")
|
||||
(make-variable-buffer-local 'emacs-lock-buffer-locked)
|
||||
(put 'emacs-lock-buffer-locked 'permanent-local t)
|
||||
|
||||
(defun check-emacs-lock ()
|
||||
"Check if variable `emacs-lock-from-exiting' is t for any buffer.
|
||||
If any locked buffer is found, signal error and display the buffer's name."
|
||||
(save-excursion
|
||||
(dolist (buffer (buffer-list))
|
||||
(set-buffer buffer)
|
||||
(when emacs-lock-from-exiting
|
||||
(error "Emacs is locked from exit due to buffer: %s" (buffer-name))))))
|
||||
|
||||
(defun toggle-emacs-lock ()
|
||||
"Toggle `emacs-lock-from-exiting' for the current buffer.
|
||||
See `check-emacs-lock'."
|
||||
(interactive)
|
||||
(setq emacs-lock-from-exiting (not emacs-lock-from-exiting))
|
||||
(if emacs-lock-from-exiting
|
||||
(message "Buffer is now locked")
|
||||
(message "Buffer is now unlocked")))
|
||||
|
||||
(defun emacs-lock-check-buffer-lock ()
|
||||
"Check if variable `emacs-lock-from-exiting' is t for a buffer.
|
||||
If the buffer is locked, signal error and display its name."
|
||||
(when emacs-lock-from-exiting
|
||||
(error "Buffer `%s' is locked, can't delete it" (buffer-name))))
|
||||
|
||||
; These next defuns make it so if you exit a shell that is locked, the lock
|
||||
; is shut off for that shell so you can exit Emacs. Same for telnet.
|
||||
; Also, if a shell or a telnet buffer was locked and the process killed,
|
||||
; turn the lock back on again if the process is restarted.
|
||||
|
||||
(defun emacs-lock-shell-sentinel ()
|
||||
(set-process-sentinel
|
||||
(get-buffer-process (buffer-name)) (function emacs-lock-clear-sentinel)))
|
||||
|
||||
(defun emacs-lock-clear-sentinel (_proc _str)
|
||||
(if emacs-lock-from-exiting
|
||||
(progn
|
||||
(setq emacs-lock-from-exiting nil)
|
||||
(setq emacs-lock-buffer-locked t)
|
||||
(message "Buffer is now unlocked"))
|
||||
(setq emacs-lock-buffer-locked nil)))
|
||||
|
||||
(defun emacs-lock-was-buffer-locked ()
|
||||
(if emacs-lock-buffer-locked
|
||||
(setq emacs-lock-from-exiting t)))
|
||||
|
||||
(unless noninteractive
|
||||
(add-hook 'kill-emacs-hook 'check-emacs-lock))
|
||||
(add-hook 'kill-buffer-hook 'emacs-lock-check-buffer-lock)
|
||||
(add-hook 'shell-mode-hook 'emacs-lock-was-buffer-locked)
|
||||
(add-hook 'shell-mode-hook 'emacs-lock-shell-sentinel)
|
||||
(add-hook 'telnet-mode-hook 'emacs-lock-was-buffer-locked)
|
||||
(add-hook 'telnet-mode-hook 'emacs-lock-shell-sentinel)
|
||||
|
||||
(provide 'emacs-lock)
|
||||
|
||||
;;; emacs-lock.el ends here
|
|
@ -2410,9 +2410,7 @@ and overlay is highlighted between MK and END-MK."
|
|||
;; display the source in another window.
|
||||
(let ((pop-up-windows t))
|
||||
(pop-to-buffer (marker-buffer mk) 'other-window))
|
||||
(if (window-dedicated-p (selected-window))
|
||||
(pop-to-buffer (marker-buffer mk))
|
||||
(switch-to-buffer (marker-buffer mk))))
|
||||
(pop-to-buffer-same-window (marker-buffer mk)))
|
||||
(unless (eq (goto-char mk) (point))
|
||||
;; If narrowing gets in the way of going to the right place, widen.
|
||||
(widen)
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -966,8 +966,7 @@ This command shares argument histories with \\[lgrep] and \\[grep-find]."
|
|||
(setq dir default-directory))
|
||||
(if (null files)
|
||||
(if (not (string= regexp grep-find-command))
|
||||
(let ((process-connection-type nil))
|
||||
(compilation-start regexp 'grep-mode)))
|
||||
(compilation-start regexp 'grep-mode))
|
||||
(setq dir (file-name-as-directory (expand-file-name dir)))
|
||||
(require 'find-dired) ; for `find-name-arg'
|
||||
(let ((command (grep-expand-template
|
||||
|
|
|
@ -1581,7 +1581,8 @@ and source-file directory for your debugger."
|
|||
;; Last group is for return value, e.g. "> test.py(2)foo()->None"
|
||||
;; Either file or function name may be omitted: "> <string>(0)?()"
|
||||
(defvar gud-pdb-marker-regexp
|
||||
"^> \\([-a-zA-Z0-9_/.:\\]*\\|<string>\\)(\\([0-9]+\\))\\([a-zA-Z0-9_]*\\|\\?\\|<module>\\)()\\(->[^\n]*\\)?\n")
|
||||
"^> \\([-a-zA-Z0-9_/.:\\]*\\|<string>\\)(\\([0-9]+\\))\\([a-zA-Z0-9_]*\\|\\?\\|<module>\\)()\\(->[^\n\r]*\\)?[\n\r]")
|
||||
|
||||
(defvar gud-pdb-marker-regexp-file-group 1)
|
||||
(defvar gud-pdb-marker-regexp-line-group 2)
|
||||
(defvar gud-pdb-marker-regexp-fnname-group 3)
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -206,7 +206,8 @@ It creates the Imenu index for the buffer, if necessary."
|
|||
(setq imenu--index-alist
|
||||
(save-excursion (funcall imenu-create-index-function))))
|
||||
(error
|
||||
(message "which-func-ff-hook error: %S" err)
|
||||
(unless (equal err '(error "This buffer cannot use `imenu-default-create-index-function'"))
|
||||
(message "which-func-ff-hook error: %S" err))
|
||||
(setq which-func-mode nil))))
|
||||
|
||||
(defun which-func-update ()
|
||||
|
|
|
@ -70,7 +70,7 @@
|
|||
DATA can be any value.
|
||||
PRINT-FUNC if provided controls how `list-registers' and
|
||||
`view-register' print the register. It should be a function
|
||||
recieving one argument DATA and print text that completes
|
||||
receiving one argument DATA and print text that completes
|
||||
this sentence:
|
||||
Register X contains [TEXT PRINTED BY PRINT-FUNC]
|
||||
JUMP-FUNC if provided, controls how `jump-to-register' jumps to the register.
|
||||
|
|
|
@ -2533,7 +2533,8 @@ specifies the value of ERROR-BUFFER."
|
|||
(< 0 (nth 7 (file-attributes error-file))))
|
||||
(format "some error output%s"
|
||||
(if shell-command-default-error-buffer
|
||||
(format " to the \"%s\" buffer" shell-command-default-error-buffer)
|
||||
(format " to the \"%s\" buffer"
|
||||
shell-command-default-error-buffer)
|
||||
""))
|
||||
"no output")))
|
||||
(cond ((null exit-status)
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -2800,7 +2800,7 @@ details check the Rst Faces Defaults group."
|
|||
rst-level-face-base-color
|
||||
(+ (* (1- i) rst-level-face-step-light)
|
||||
rst-level-face-base-light))))
|
||||
(unless (boundp sym)
|
||||
(unless (facep sym)
|
||||
(make-empty-face sym)
|
||||
(set-face-doc-string sym doc)
|
||||
(set-face-background sym col)
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2011-07-06 Nick Dokos <nicholas.dokos@hp.com> (tiny change)
|
||||
|
||||
* url-cache.el (url-cache-extract): Set buffer multibyte flag to
|
||||
nil (bug#8827).
|
||||
|
||||
2011-07-03 Nicolas Avrutin <nicolasavru@gmail.com> (tiny change)
|
||||
|
||||
* url-http.el (url-http-create-request): Remove double carriage
|
||||
|
|
|
@ -192,6 +192,7 @@ Very fast if you have an `md5' primitive function, suitably fast otherwise."
|
|||
(defun url-cache-extract (fnam)
|
||||
"Extract FNAM from the local disk cache."
|
||||
(erase-buffer)
|
||||
(set-buffer-multibyte nil)
|
||||
(insert-file-contents-literally fnam))
|
||||
|
||||
(defun url-cache-expired (url &optional expire-time)
|
||||
|
|
|
@ -163,8 +163,8 @@ Anything less might crash Emacs.")
|
|||
|
||||
(defcustom window-min-height 4
|
||||
"The minimum number of lines of any window.
|
||||
The value has to accomodate a mode- or header-line if present. A
|
||||
value less than `window-safe-min-height' is ignored. The value
|
||||
The value has to accommodate a mode- or header-line if present.
|
||||
A value less than `window-safe-min-height' is ignored. The value
|
||||
of this variable is honored when windows are resized or split.
|
||||
|
||||
Applications should never rebind this variable. To resize a
|
||||
|
@ -3380,7 +3380,7 @@ WINDOW must be an iso-combination."
|
|||
(balance-windows-2 window horizontal)
|
||||
(let ((size (window-new-total window)))
|
||||
(while sub
|
||||
(set-window-new-total sub size)
|
||||
(set-window-new-total sub size)
|
||||
(balance-windows-1 sub horizontal)
|
||||
(setq sub (window-right sub))))))))
|
||||
|
||||
|
@ -5039,7 +5039,7 @@ description."
|
|||
(setq window
|
||||
(cond
|
||||
((eq cand 'largest)
|
||||
;; The largest window.
|
||||
;; The largest window.
|
||||
(get-largest-window frame t))
|
||||
((eq cand 'lru)
|
||||
;; The least recently used window.
|
||||
|
@ -5750,7 +5750,7 @@ this list as arguments."
|
|||
(display-buffer-reuse-window
|
||||
buffer '(nil nil t) '((reuse-window-dedicated . t)))))))
|
||||
|
||||
(defsubst display-buffer-same-window (&optional buffer-or-name label)
|
||||
(defsubst display-buffer-same-window (&optional buffer-or-name label)
|
||||
"Display buffer specified by BUFFER-OR-NAME in the selected window.
|
||||
Another window will be used only if the buffer can't be shown in
|
||||
the selected window, usually because it is dedicated to another
|
||||
|
@ -5759,7 +5759,7 @@ buffer. Optional argument BUFFER-OR-NAME and LABEL are as for
|
|||
(interactive "BDisplay buffer in same window:\nP")
|
||||
(display-buffer buffer-or-name 'same-window label))
|
||||
|
||||
(defsubst display-buffer-same-frame (&optional buffer-or-name label)
|
||||
(defsubst display-buffer-same-frame (&optional buffer-or-name label)
|
||||
"Display buffer specified by BUFFER-OR-NAME in a window on the same frame.
|
||||
Another frame will be used only if there is no other choice.
|
||||
Optional argument BUFFER-OR-NAME and LABEL are as for
|
||||
|
@ -5767,7 +5767,7 @@ Optional argument BUFFER-OR-NAME and LABEL are as for
|
|||
(interactive "BDisplay buffer on same frame:\nP")
|
||||
(display-buffer buffer-or-name 'same-frame label))
|
||||
|
||||
(defsubst display-buffer-other-window (&optional buffer-or-name label)
|
||||
(defsubst display-buffer-other-window (&optional buffer-or-name label)
|
||||
"Display buffer specified by BUFFER-OR-NAME in another window.
|
||||
The selected window will be used only if there is no other
|
||||
choice. Windows on the selected frame are preferred to windows
|
||||
|
@ -5776,7 +5776,7 @@ for `display-buffer'."
|
|||
(interactive "BDisplay buffer in another window:\nP")
|
||||
(display-buffer buffer-or-name 'other-window label))
|
||||
|
||||
(defun display-buffer-same-frame-other-window (&optional buffer-or-name label)
|
||||
(defun display-buffer-same-frame-other-window (&optional buffer-or-name label)
|
||||
"Display buffer specified by BUFFER-OR-NAME in another window on the same frame.
|
||||
The selected window or another frame will be used only if there
|
||||
is no other choice. Optional argument BUFFER-OR-NAME and LABEL are
|
||||
|
@ -5797,31 +5797,30 @@ If this command uses another frame, it will also select that frame."
|
|||
(defun pop-to-buffer (&optional buffer-or-name specifiers norecord label)
|
||||
"Display buffer specified by BUFFER-OR-NAME and select the window used.
|
||||
Optional argument BUFFER-OR-NAME may be a buffer, a string \(a
|
||||
buffer name), or nil. If BUFFER-OR-NAME is a string not naming
|
||||
an existent buffer, create a buffer with that name. If
|
||||
buffer name), or nil. If BUFFER-OR-NAME is a string naming a buffer
|
||||
that does not exist, create a buffer with that name. If
|
||||
BUFFER-OR-NAME is nil or omitted, display the current buffer.
|
||||
Interactively, prompt for the buffer name using the minibuffer.
|
||||
|
||||
Optional second argument SPECIFIERS must be a list of buffer
|
||||
display specifiers, a single location specifier, `t' which means
|
||||
the latter means to display the buffer in any but the selected
|
||||
window, or nil which means to exclusively apply the specifiers
|
||||
customized by the user.
|
||||
Optional second argument SPECIFIERS can be: a list of buffer
|
||||
display specifiers (see `display-buffer-alist'); a single
|
||||
location specifier; t, which means to display the buffer in any
|
||||
but the selected window; or nil, which means to exclusively apply
|
||||
the specifiers customized by the user. See `display-buffer' for
|
||||
more details.
|
||||
|
||||
Optional argument NORECORD non-nil means do not put the buffer
|
||||
specified by BUFFER-OR-NAME at the front of the buffer list and
|
||||
do not make the window displaying it the most recently selected
|
||||
one.
|
||||
Optional argument NORECORD non-nil means do not put the displayed
|
||||
buffer at the front of the buffer list, and do not make the window
|
||||
displaying it the most recently selected one.
|
||||
|
||||
The optional argument LABEL, if non-nil, is a symbol specifying the
|
||||
display purpose. Applications should set this when the buffer
|
||||
shall be displayed in a special way but BUFFER-OR-NAME does not
|
||||
should be displayed in a special way but BUFFER-OR-NAME does not
|
||||
identify the buffer as special. Buffers that typically fit into
|
||||
this category are those whose names have been derived from the
|
||||
name of the file they are visiting.
|
||||
|
||||
Return the buffer specified by BUFFER-OR-NAME or nil if
|
||||
displaying the buffer failed.
|
||||
Returns the displayed buffer, or nil if displaying the buffer failed.
|
||||
|
||||
This uses the function `display-buffer' as a subroutine; see the
|
||||
documentations of `display-buffer' and `display-buffer-alist' for
|
||||
|
@ -5853,7 +5852,7 @@ as for `pop-to-buffer'."
|
|||
(interactive "BPop to buffer in selected window:\nP")
|
||||
(pop-to-buffer buffer-or-name 'same-window norecord label))
|
||||
|
||||
(defsubst pop-to-buffer-same-frame (&optional buffer-or-name norecord label)
|
||||
(defsubst pop-to-buffer-same-frame (&optional buffer-or-name norecord label)
|
||||
"Pop to buffer specified by BUFFER-OR-NAME in a window on the selected frame.
|
||||
Another frame will be used only if there is no other choice.
|
||||
Optional arguments BUFFER-OR-NAME, NORECORD and LABEL are as for
|
||||
|
@ -5870,7 +5869,7 @@ LABEL are as for `pop-to-buffer'."
|
|||
(interactive "BPop to buffer in another window:\nP")
|
||||
(pop-to-buffer buffer-or-name 'other-window norecord))
|
||||
|
||||
(defsubst pop-to-buffer-same-frame-other-window (&optional buffer-or-name norecord label)
|
||||
(defsubst pop-to-buffer-same-frame-other-window (&optional buffer-or-name norecord label)
|
||||
"Pop to buffer specified by BUFFER-OR-NAME in another window on the selected frame.
|
||||
The selected window or another frame will be used only if there
|
||||
is no other choice. Optional arguments BUFFER-OR-NAME, NORECORD
|
||||
|
@ -6108,7 +6107,7 @@ BUFFER in a window on the selected frame.
|
|||
|
||||
If ARGS is a list whose car is a symbol, use (car ARGS) as a
|
||||
function to do the work. Pass it BUFFER as first argument,
|
||||
and (cdr ARGS) as second."
|
||||
and (cdr ARGS) as the rest of the arguments."
|
||||
(if (and args (symbolp (car args)))
|
||||
(apply (car args) buffer (cdr args))
|
||||
(let ((window (get-buffer-window buffer 0)))
|
||||
|
@ -6908,7 +6907,7 @@ WINDOW was scrolled."
|
|||
;; window and the current buffer when we're done.
|
||||
(setq window (window-normalize-live-window window))
|
||||
;; Can't resize a full height or fixed-size window.
|
||||
(unless (or (window-size-fixed-p window)
|
||||
(unless (or (window-size-fixed-p window)
|
||||
(window-full-height-p window))
|
||||
;; `with-selected-window' should orderly restore the current buffer.
|
||||
(with-selected-window window
|
||||
|
|
26
m4/alloca.m4
26
m4/alloca.m4
|
@ -1,4 +1,4 @@
|
|||
# alloca.m4 serial 12
|
||||
# alloca.m4 serial 13
|
||||
dnl Copyright (C) 2002-2004, 2006-2007, 2009-2011 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
|
@ -76,17 +76,17 @@ wenotbecray
|
|||
if test $ac_cv_os_cray = yes; then
|
||||
for ac_func in _getb67 GETB67 getb67; do
|
||||
AC_CHECK_FUNC($ac_func,
|
||||
[AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func,
|
||||
[Define to one of `_getb67', `GETB67',
|
||||
`getb67' for Cray-2 and Cray-YMP
|
||||
systems. This function is required for
|
||||
`alloca.c' support on those systems.])
|
||||
[AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func,
|
||||
[Define to one of `_getb67', `GETB67',
|
||||
`getb67' for Cray-2 and Cray-YMP
|
||||
systems. This function is required for
|
||||
`alloca.c' support on those systems.])
|
||||
break])
|
||||
done
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([stack direction for C alloca],
|
||||
[ac_cv_c_stack_direction],
|
||||
[ac_cv_c_stack_direction],
|
||||
[AC_RUN_IFELSE([AC_LANG_SOURCE(
|
||||
[AC_INCLUDES_DEFAULT
|
||||
int
|
||||
|
@ -105,16 +105,16 @@ main (int argc, char **argv)
|
|||
{
|
||||
return find_stack_direction (0, argc + !argv + 20) < 0;
|
||||
}])],
|
||||
[ac_cv_c_stack_direction=1],
|
||||
[ac_cv_c_stack_direction=-1],
|
||||
[ac_cv_c_stack_direction=0])])
|
||||
[ac_cv_c_stack_direction=1],
|
||||
[ac_cv_c_stack_direction=-1],
|
||||
[ac_cv_c_stack_direction=0])])
|
||||
AH_VERBATIM([STACK_DIRECTION],
|
||||
[/* If using the C implementation of alloca, define if you know the
|
||||
direction of stack growth for your system; otherwise it will be
|
||||
automatically deduced at runtime.
|
||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||
@%:@undef STACK_DIRECTION])dnl
|
||||
AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction)
|
||||
])# _AC_LIBOBJ_ALLOCA
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
2011-07-05 Paul Eggert <eggert@cs.ucla.edu>
|
||||
2011-07-06 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Assume support for memcmp, memcpy, memmove, memset.
|
||||
* lisp.h, sysdep.c (memcmp, memcpy, memmove, memset):
|
||||
|
@ -12,6 +12,52 @@
|
|||
Use EMACS_INT, not EMACS_UINT, for sizes. The code works equally
|
||||
well either way, and we prefer signed to unsigned.
|
||||
|
||||
2011-07-06 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Remove unportable assumption about struct layout (Bug#8884).
|
||||
* alloc.c (mark_buffer):
|
||||
* buffer.c (reset_buffer_local_variables, Fbuffer_local_variables)
|
||||
(clone_per_buffer_values): Don't assume that
|
||||
sizeof (struct buffer) is a multiple of sizeof (Lisp_Object).
|
||||
This isn't true in general, and it's particularly not true
|
||||
if Emacs is configured with --with-wide-int.
|
||||
* buffer.h (FIRST_FIELD_PER_BUFFER, LAST_FIELD_PER_BUFFER):
|
||||
New macros, used in the buffer.c change.
|
||||
|
||||
2011-07-05 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* xsettings.c: Use both GConf and GSettings if both are available.
|
||||
(store_config_changed_event): Add comment.
|
||||
(dpyinfo_valid, store_font_name_changed, map_tool_bar_style)
|
||||
(store_tool_bar_style_changed): New functions.
|
||||
(store_monospaced_changed): Add comment. Call dpyinfo_valid.
|
||||
(struct xsettings): Move font inside HAVE_XFT.
|
||||
(GSETTINGS_TOOL_BAR_STYLE, GSETTINGS_FONT_NAME): New defines.
|
||||
(GSETTINGS_MONO_FONT): Renamed from SYSTEM_MONO_FONT.
|
||||
Move inside HAVE_XFT.
|
||||
(something_changed_gsettingsCB): Renamed from something_changedCB.
|
||||
Check for changes in GSETTINGS_TOOL_BAR_STYLE and GSETTINGS_FONT_NAME
|
||||
also.
|
||||
(GCONF_TOOL_BAR_STYLE, GCONF_FONT_NAME): New defines.
|
||||
(GCONF_MONO_FONT): Renamed from SYSTEM_MONO_FONT. Move inside HAVE_XFT.
|
||||
(something_changed_gconfCB): Renamed from something_changedCB.
|
||||
Check for changes in GCONF_TOOL_BAR_STYLE and GCONF_FONT_NAME also.
|
||||
(parse_settings): Move check for font inside HAVE_XFT.
|
||||
(read_settings, apply_xft_settings): Add comment.
|
||||
(read_and_apply_settings): Add comment. Call map_tool_bar_style and
|
||||
store_tool_bar_style_changed. Move check for font inside HAVE_XFT and
|
||||
call store_font_name_changed.
|
||||
(xft_settings_event): Add comment.
|
||||
(init_gsettings): Add comment. Get values for GSETTINGS_TOOL_BAR_STYLE
|
||||
and GSETTINGS_FONT_NAME. Move check for fonts within HAVE_XFT.
|
||||
(init_gconf): Add comment. Get values for GCONF_TOOL_BAR_STYLE
|
||||
and GCONF_FONT_NAME. Move check for fonts within HAVE_XFT.
|
||||
(xsettings_initialize): Call init_gsettings last.
|
||||
(xsettings_get_system_font, xsettings_get_system_normal_font): Add
|
||||
comment.
|
||||
|
||||
2011-07-05 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Random fixes. E.g., (random) never returned negative values.
|
||||
* fns.c (Frandom): Use GET_EMACS_TIME for random seed, and add the
|
||||
subseconds part to the entropy, as that's a bit more random.
|
||||
|
@ -153,7 +199,7 @@
|
|||
with value as argument.
|
||||
(init_gsettings): Check that GSETTINGS_SCHEMA exists before calling
|
||||
g_settings_new (Bug#8967). Do not create gsettings_obj.
|
||||
Remove calls to g_settings_bind. Connect something_changedCB to
|
||||
Remove calls to g_settings_bind. Connect something_changedCB to
|
||||
"changed".
|
||||
|
||||
* xgselect.c: Add defined (HAVE_GSETTINGS).
|
||||
|
@ -250,8 +296,8 @@
|
|||
min_width/height (Bug#8919).
|
||||
|
||||
* gtkutil.c (xg_create_frame_widgets): Pass f to emacs_fixed_new.
|
||||
(x_wm_set_size_hint): Remove call to emacs_fixed_set_min_size. Fix
|
||||
indentation.
|
||||
(x_wm_set_size_hint): Remove call to emacs_fixed_set_min_size.
|
||||
Fix indentation.
|
||||
|
||||
2011-06-26 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
|
@ -1812,7 +1858,7 @@
|
|||
and %.0c. Fix bug with strchr succeeding on '\0' when looking for
|
||||
flags. Fix bug with (format "%c" 256.0). Avoid integer overflow when
|
||||
formatting out-of-range floating point numbers with int
|
||||
formats. (Bug#8668)
|
||||
formats. (Bug#8668)
|
||||
|
||||
* lisp.h (FIXNUM_OVERFLOW_P): Work even if arg is a NaN.
|
||||
|
||||
|
@ -2776,9 +2822,9 @@
|
|||
:verify-hostname-error, :verify-error, and :verify-flags
|
||||
parameters of `gnutls-boot' and documented those parameters in the
|
||||
docstring. Start callback support.
|
||||
(emacs_gnutls_handshake): Add Woe32 support. Retry handshake
|
||||
unless a fatal error occured. Call gnutls_alert_send_appropriate
|
||||
on error. Return error code.
|
||||
(emacs_gnutls_handshake): Add Woe32 support. Retry handshake
|
||||
unless a fatal error occurred. Call gnutls_alert_send_appropriate
|
||||
on error. Return error code.
|
||||
(emacs_gnutls_write): Call emacs_gnutls_handle_error.
|
||||
(emacs_gnutls_read): Likewise.
|
||||
(Fgnutls_boot): Return handshake error code.
|
||||
|
|
|
@ -5619,7 +5619,8 @@ mark_buffer (Lisp_Object buf)
|
|||
/* buffer-local Lisp variables start at `undo_list',
|
||||
tho only the ones from `name' on are GC'd normally. */
|
||||
for (ptr = &buffer->BUFFER_INTERNAL_FIELD (name);
|
||||
(char *)ptr < (char *)buffer + sizeof (struct buffer);
|
||||
ptr <= &PER_BUFFER_VALUE (buffer,
|
||||
PER_BUFFER_VAR_OFFSET (LAST_FIELD_PER_BUFFER));
|
||||
ptr++)
|
||||
mark_object (*ptr);
|
||||
|
||||
|
|
12
src/buffer.c
12
src/buffer.c
|
@ -471,8 +471,8 @@ clone_per_buffer_values (struct buffer *from, struct buffer *to)
|
|||
|
||||
/* buffer-local Lisp variables start at `undo_list',
|
||||
tho only the ones from `name' on are GC'd normally. */
|
||||
for (offset = PER_BUFFER_VAR_OFFSET (undo_list);
|
||||
offset < sizeof *to;
|
||||
for (offset = PER_BUFFER_VAR_OFFSET (FIRST_FIELD_PER_BUFFER);
|
||||
offset <= PER_BUFFER_VAR_OFFSET (LAST_FIELD_PER_BUFFER);
|
||||
offset += sizeof (Lisp_Object))
|
||||
{
|
||||
Lisp_Object obj;
|
||||
|
@ -830,8 +830,8 @@ reset_buffer_local_variables (register struct buffer *b, int permanent_too)
|
|||
|
||||
/* buffer-local Lisp variables start at `undo_list',
|
||||
tho only the ones from `name' on are GC'd normally. */
|
||||
for (offset = PER_BUFFER_VAR_OFFSET (undo_list);
|
||||
offset < sizeof *b;
|
||||
for (offset = PER_BUFFER_VAR_OFFSET (FIRST_FIELD_PER_BUFFER);
|
||||
offset <= PER_BUFFER_VAR_OFFSET (LAST_FIELD_PER_BUFFER);
|
||||
offset += sizeof (Lisp_Object))
|
||||
{
|
||||
int idx = PER_BUFFER_IDX (offset);
|
||||
|
@ -1055,8 +1055,8 @@ No argument or nil as argument means use current buffer as BUFFER. */)
|
|||
|
||||
/* buffer-local Lisp variables start at `undo_list',
|
||||
tho only the ones from `name' on are GC'd normally. */
|
||||
for (offset = PER_BUFFER_VAR_OFFSET (undo_list);
|
||||
offset < sizeof (struct buffer);
|
||||
for (offset = PER_BUFFER_VAR_OFFSET (FIRST_FIELD_PER_BUFFER);
|
||||
offset <= PER_BUFFER_VAR_OFFSET (LAST_FIELD_PER_BUFFER);
|
||||
/* sizeof EMACS_INT == sizeof Lisp_Object */
|
||||
offset += (sizeof (EMACS_INT)))
|
||||
{
|
||||
|
|
|
@ -612,6 +612,7 @@ struct buffer
|
|||
/* Everything from here down must be a Lisp_Object. */
|
||||
/* buffer-local Lisp variables start at `undo_list',
|
||||
tho only the ones from `name' on are GC'd normally. */
|
||||
#define FIRST_FIELD_PER_BUFFER undo_list
|
||||
|
||||
/* Changes in the buffer are recorded here for undo.
|
||||
t means don't record anything.
|
||||
|
@ -846,6 +847,9 @@ struct buffer
|
|||
t means to use hollow box cursor.
|
||||
See `cursor-type' for other values. */
|
||||
Lisp_Object BUFFER_INTERNAL_FIELD (cursor_in_non_selected_windows);
|
||||
|
||||
/* This must be the last field in the above list. */
|
||||
#define LAST_FIELD_PER_BUFFER cursor_in_non_selected_windows
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -3162,7 +3162,7 @@ funcall_lambda (Lisp_Object fun, ptrdiff_t nargs,
|
|||
shouldn't bind any arguments, instead just call the byte-code
|
||||
interpreter directly; it will push arguments as necessary.
|
||||
|
||||
Byte-code objects with either a non-existant, or a nil value for
|
||||
Byte-code objects with either a non-existent, or a nil value for
|
||||
the `push args' slot (the default), have dynamically-bound
|
||||
arguments, and use the argument-binding code below instead (as do
|
||||
all interpreted functions, even lexically bound ones). */
|
||||
|
|
|
@ -379,7 +379,7 @@ emacs_gnutls_read (struct Lisp_Process *proc, char *buf, EMACS_INT nbyte)
|
|||
/* non-fatal error */
|
||||
return -1;
|
||||
else {
|
||||
/* a fatal error occured */
|
||||
/* a fatal error occurred */
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
392
src/xsettings.c
392
src/xsettings.c
|
@ -37,11 +37,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#ifdef HAVE_GSETTINGS
|
||||
#include <glib-object.h>
|
||||
#include <gio/gio.h>
|
||||
#else
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_GCONF
|
||||
#include <gconf/gconf-client.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_XFT
|
||||
#include <X11/Xft/Xft.h>
|
||||
|
@ -54,6 +54,8 @@ static Lisp_Object Qmonospace_font_name, Qfont_name, Qfont_render,
|
|||
Qtool_bar_style;
|
||||
static Lisp_Object current_tool_bar_style;
|
||||
|
||||
/* Store an config changed event in to the event queue. */
|
||||
|
||||
static void
|
||||
store_config_changed_event (Lisp_Object arg, Lisp_Object display_name)
|
||||
{
|
||||
|
@ -65,6 +67,23 @@ store_config_changed_event (Lisp_Object arg, Lisp_Object display_name)
|
|||
kbd_buffer_store_event (&event);
|
||||
}
|
||||
|
||||
/* Return non-zero if DPYINFO is still valid. */
|
||||
static int
|
||||
dpyinfo_valid (struct x_display_info *dpyinfo)
|
||||
{
|
||||
int found = 0;
|
||||
if (dpyinfo != NULL)
|
||||
{
|
||||
struct x_display_info *d;
|
||||
for (d = x_display_list; !found && d; d = d->next)
|
||||
found = d == dpyinfo && d->display == dpyinfo->display;
|
||||
}
|
||||
return found;
|
||||
}
|
||||
|
||||
/* Store a monospace font change event if the monospaced font changed. */
|
||||
|
||||
#ifdef HAVE_XFT
|
||||
static void
|
||||
store_monospaced_changed (const char *newfont)
|
||||
{
|
||||
|
@ -74,28 +93,69 @@ store_monospaced_changed (const char *newfont)
|
|||
xfree (current_mono_font);
|
||||
current_mono_font = xstrdup (newfont);
|
||||
|
||||
if (first_dpyinfo != NULL && use_system_font)
|
||||
if (dpyinfo_valid (first_dpyinfo) && use_system_font)
|
||||
{
|
||||
/* Check if display still open */
|
||||
struct x_display_info *dpyinfo;
|
||||
int found = 0;
|
||||
for (dpyinfo = x_display_list; !found && dpyinfo; dpyinfo = dpyinfo->next)
|
||||
found = dpyinfo == first_dpyinfo;
|
||||
|
||||
if (found)
|
||||
store_config_changed_event (Qmonospace_font_name,
|
||||
XCAR (first_dpyinfo->name_list_element));
|
||||
store_config_changed_event (Qmonospace_font_name,
|
||||
XCAR (first_dpyinfo->name_list_element));
|
||||
}
|
||||
}
|
||||
|
||||
/* Store a font name change event if the font name changed. */
|
||||
|
||||
#ifdef HAVE_GSETTINGS
|
||||
static GSettings *gsettings_client;
|
||||
#else
|
||||
#ifdef HAVE_GCONF
|
||||
static GConfClient *gconf_client;
|
||||
#endif
|
||||
#endif
|
||||
static void
|
||||
store_font_name_changed (const char *newfont)
|
||||
{
|
||||
if (current_font != NULL && strcmp (newfont, current_font) == 0)
|
||||
return; /* No change. */
|
||||
|
||||
xfree (current_font);
|
||||
current_font = xstrdup (newfont);
|
||||
|
||||
if (dpyinfo_valid (first_dpyinfo))
|
||||
{
|
||||
store_config_changed_event (Qfont_name,
|
||||
XCAR (first_dpyinfo->name_list_element));
|
||||
}
|
||||
}
|
||||
#endif /* HAVE_XFT */
|
||||
|
||||
/* Map TOOL_BAR_STYLE from a string to its correspinding Lisp value.
|
||||
Return Qnil if TOOL_BAR_STYLE is not known. */
|
||||
|
||||
static Lisp_Object
|
||||
map_tool_bar_style (const char *tool_bar_style)
|
||||
{
|
||||
Lisp_Object style = Qnil;
|
||||
if (tool_bar_style)
|
||||
{
|
||||
if (strcmp (tool_bar_style, "both") == 0)
|
||||
style = Qboth;
|
||||
else if (strcmp (tool_bar_style, "both-horiz") == 0)
|
||||
style = Qboth_horiz;
|
||||
else if (strcmp (tool_bar_style, "icons") == 0)
|
||||
style = Qimage;
|
||||
else if (strcmp (tool_bar_style, "text") == 0)
|
||||
style = Qtext;
|
||||
}
|
||||
|
||||
return style;
|
||||
}
|
||||
|
||||
/* Store a tool bar style change event if the tool bar style changed. */
|
||||
|
||||
static void
|
||||
store_tool_bar_style_changed (const char *newstyle,
|
||||
struct x_display_info *dpyinfo)
|
||||
{
|
||||
Lisp_Object style = map_tool_bar_style (newstyle);
|
||||
if (EQ (current_tool_bar_style, style))
|
||||
return; /* No change. */
|
||||
|
||||
current_tool_bar_style = style;
|
||||
if (dpyinfo_valid (dpyinfo))
|
||||
store_config_changed_event (Qtool_bar_style,
|
||||
XCAR (dpyinfo->name_list_element));
|
||||
}
|
||||
|
||||
|
||||
#define XSETTINGS_FONT_NAME "Gtk/FontName"
|
||||
|
@ -117,67 +177,129 @@ struct xsettings
|
|||
FcBool aa, hinting;
|
||||
int rgba, lcdfilter, hintstyle;
|
||||
double dpi;
|
||||
#endif
|
||||
|
||||
char *font;
|
||||
#endif
|
||||
|
||||
char *tb_style;
|
||||
|
||||
unsigned seen;
|
||||
};
|
||||
|
||||
#ifdef HAVE_GSETTINGS
|
||||
#define GSETTINGS_SCHEMA "org.gnome.desktop.interface"
|
||||
#define SYSTEM_MONO_FONT "monospace-font-name"
|
||||
|
||||
static void
|
||||
something_changedCB (GSettings *settings,
|
||||
gchar *key,
|
||||
gpointer user_data)
|
||||
{
|
||||
GVariant *val;
|
||||
if (strcmp (key, SYSTEM_MONO_FONT) != 0) return;
|
||||
val = g_settings_get_value (settings, SYSTEM_MONO_FONT);
|
||||
if (val)
|
||||
{
|
||||
g_variant_ref_sink (val);
|
||||
if (g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
|
||||
{
|
||||
const gchar *newfont = g_variant_get_string (val, NULL);
|
||||
store_monospaced_changed (newfont);
|
||||
}
|
||||
g_variant_unref (val);
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
#ifdef HAVE_GCONF
|
||||
#define SYSTEM_MONO_FONT "/desktop/gnome/interface/monospace_font_name"
|
||||
#define GSETTINGS_SCHEMA "org.gnome.desktop.interface"
|
||||
#define GSETTINGS_TOOL_BAR_STYLE "toolbar-style"
|
||||
|
||||
#ifdef HAVE_XFT
|
||||
# define SYSTEM_FONT "/desktop/gnome/interface/font_name"
|
||||
#define GSETTINGS_MONO_FONT "monospace-font-name"
|
||||
#define GSETTINGS_FONT_NAME "font-name"
|
||||
#endif
|
||||
|
||||
/* Callback called when something changed in GConf that we care about,
|
||||
that is SYSTEM_MONO_FONT. */
|
||||
|
||||
/* The single GSettings instance, or NULL if not connected to GSettings. */
|
||||
|
||||
static GSettings *gsettings_client;
|
||||
|
||||
/* Callback called when something changed in GSettings. */
|
||||
|
||||
static void
|
||||
something_changedCB (GConfClient *client,
|
||||
guint cnxn_id,
|
||||
GConfEntry *entry,
|
||||
gpointer user_data)
|
||||
something_changed_gsettingsCB (GSettings *settings,
|
||||
gchar *key,
|
||||
gpointer user_data)
|
||||
{
|
||||
GVariant *val;
|
||||
|
||||
if (strcmp (key, GSETTINGS_TOOL_BAR_STYLE) == 0)
|
||||
{
|
||||
val = g_settings_get_value (settings, GSETTINGS_TOOL_BAR_STYLE);
|
||||
if (val)
|
||||
{
|
||||
g_variant_ref_sink (val);
|
||||
if (g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
|
||||
{
|
||||
const gchar *newstyle = g_variant_get_string (val, NULL);
|
||||
store_tool_bar_style_changed (newstyle, first_dpyinfo);
|
||||
}
|
||||
g_variant_unref (val);
|
||||
}
|
||||
}
|
||||
#ifdef HAVE_XFT
|
||||
else if (strcmp (key, GSETTINGS_MONO_FONT) == 0)
|
||||
{
|
||||
val = g_settings_get_value (settings, GSETTINGS_MONO_FONT);
|
||||
if (val)
|
||||
{
|
||||
g_variant_ref_sink (val);
|
||||
if (g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
|
||||
{
|
||||
const gchar *newfont = g_variant_get_string (val, NULL);
|
||||
store_monospaced_changed (newfont);
|
||||
}
|
||||
g_variant_unref (val);
|
||||
}
|
||||
}
|
||||
else if (strcmp (key, GSETTINGS_FONT_NAME) == 0)
|
||||
{
|
||||
val = g_settings_get_value (settings, GSETTINGS_FONT_NAME);
|
||||
if (val)
|
||||
{
|
||||
g_variant_ref_sink (val);
|
||||
if (g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
|
||||
{
|
||||
const gchar *newfont = g_variant_get_string (val, NULL);
|
||||
store_font_name_changed (newfont);
|
||||
}
|
||||
g_variant_unref (val);
|
||||
}
|
||||
}
|
||||
#endif /* HAVE_XFT */
|
||||
}
|
||||
|
||||
#endif /* HAVE_GSETTINGS */
|
||||
|
||||
#ifdef HAVE_GCONF
|
||||
#define GCONF_TOOL_BAR_STYLE "/desktop/gnome/interface/toolbar_style"
|
||||
#ifdef HAVE_XFT
|
||||
#define GCONF_MONO_FONT "/desktop/gnome/interface/monospace_font_name"
|
||||
#define GCONF_FONT_NAME "/desktop/gnome/interface/font_name"
|
||||
#endif
|
||||
|
||||
/* The single GConf instance, or NULL if not connected to GConf. */
|
||||
|
||||
static GConfClient *gconf_client;
|
||||
|
||||
/* Callback called when something changed in GConf that we care about. */
|
||||
|
||||
static void
|
||||
something_changed_gconfCB (GConfClient *client,
|
||||
guint cnxn_id,
|
||||
GConfEntry *entry,
|
||||
gpointer user_data)
|
||||
{
|
||||
GConfValue *v = gconf_entry_get_value (entry);
|
||||
const char *key = gconf_entry_get_key (entry);
|
||||
|
||||
if (!v) return;
|
||||
if (v->type == GCONF_VALUE_STRING)
|
||||
if (!v || v->type != GCONF_VALUE_STRING || ! key) return;
|
||||
if (strcmp (key, GCONF_TOOL_BAR_STYLE) == 0)
|
||||
{
|
||||
const char *value = gconf_value_get_string (v);
|
||||
store_tool_bar_style_changed (value, first_dpyinfo);
|
||||
}
|
||||
#ifdef HAVE_XFT
|
||||
else if (strcmp (key, GCONF_MONO_FONT) == 0)
|
||||
{
|
||||
const char *value = gconf_value_get_string (v);
|
||||
store_monospaced_changed (value);
|
||||
}
|
||||
else if (strcmp (key, GCONF_FONT_NAME) == 0)
|
||||
{
|
||||
const char *value = gconf_value_get_string (v);
|
||||
store_font_name_changed (value);
|
||||
}
|
||||
#endif /* HAVE_XFT */
|
||||
}
|
||||
|
||||
#endif /* HAVE_GCONF */
|
||||
#endif /* ! HAVE_GSETTINGS */
|
||||
|
||||
#ifdef HAVE_XFT
|
||||
|
||||
|
@ -319,14 +441,14 @@ parse_settings (unsigned char *prop,
|
|||
bytes_parsed += 4; /* Skip serial for this value */
|
||||
if (bytes_parsed > bytes) return BadLength;
|
||||
|
||||
want_this =
|
||||
want_this =
|
||||
#ifdef HAVE_XFT
|
||||
(nlen > 6 && strncmp (name, "Xft/", 4) == 0)
|
||||
|| strcmp (XSETTINGS_FONT_NAME, name) == 0
|
||||
||
|
||||
#endif
|
||||
(strcmp (XSETTINGS_FONT_NAME, name) == 0)
|
||||
|| (strcmp (XSETTINGS_TOOL_BAR_STYLE, name) == 0);
|
||||
|
||||
strcmp (XSETTINGS_TOOL_BAR_STYLE, name) == 0;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case 0: /* Integer */
|
||||
|
@ -367,17 +489,17 @@ parse_settings (unsigned char *prop,
|
|||
if (want_this)
|
||||
{
|
||||
++settings_seen;
|
||||
if (strcmp (name, XSETTINGS_FONT_NAME) == 0)
|
||||
{
|
||||
settings->font = xstrdup (sval);
|
||||
settings->seen |= SEEN_FONT;
|
||||
}
|
||||
else if (strcmp (name, XSETTINGS_TOOL_BAR_STYLE) == 0)
|
||||
if (strcmp (name, XSETTINGS_TOOL_BAR_STYLE) == 0)
|
||||
{
|
||||
settings->tb_style = xstrdup (sval);
|
||||
settings->seen |= SEEN_TB_STYLE;
|
||||
}
|
||||
#ifdef HAVE_XFT
|
||||
else if (strcmp (name, XSETTINGS_FONT_NAME) == 0)
|
||||
{
|
||||
settings->font = xstrdup (sval);
|
||||
settings->seen |= SEEN_FONT;
|
||||
}
|
||||
else if (strcmp (name, "Xft/Antialias") == 0)
|
||||
{
|
||||
settings->seen |= SEEN_AA;
|
||||
|
@ -442,6 +564,10 @@ parse_settings (unsigned char *prop,
|
|||
return settings_seen;
|
||||
}
|
||||
|
||||
/* Read settings from the XSettings property window on display for DPYINFO.
|
||||
Store settings read in SETTINGS.
|
||||
Return non-zero if successful, zero if not. */
|
||||
|
||||
static int
|
||||
read_settings (struct x_display_info *dpyinfo, struct xsettings *settings)
|
||||
{
|
||||
|
@ -471,6 +597,8 @@ read_settings (struct x_display_info *dpyinfo, struct xsettings *settings)
|
|||
return rc != 0;
|
||||
}
|
||||
|
||||
/* Apply Xft settings in SETTINGS to the Xft library.
|
||||
If SEND_EVENT_P is non-zero store a Lisp event that Xft settings changed. */
|
||||
|
||||
static void
|
||||
apply_xft_settings (struct x_display_info *dpyinfo,
|
||||
|
@ -489,9 +617,9 @@ apply_xft_settings (struct x_display_info *dpyinfo,
|
|||
pat);
|
||||
FcPatternGetBool (pat, FC_ANTIALIAS, 0, &oldsettings.aa);
|
||||
FcPatternGetBool (pat, FC_HINTING, 0, &oldsettings.hinting);
|
||||
# ifdef FC_HINT_STYLE
|
||||
#ifdef FC_HINT_STYLE
|
||||
FcPatternGetInteger (pat, FC_HINT_STYLE, 0, &oldsettings.hintstyle);
|
||||
# endif
|
||||
#endif
|
||||
FcPatternGetInteger (pat, FC_LCD_FILTER, 0, &oldsettings.lcdfilter);
|
||||
FcPatternGetInteger (pat, FC_RGBA, 0, &oldsettings.rgba);
|
||||
FcPatternGetDouble (pat, FC_DPI, 0, &oldsettings.dpi);
|
||||
|
@ -530,7 +658,7 @@ apply_xft_settings (struct x_display_info *dpyinfo,
|
|||
oldsettings.lcdfilter = settings->lcdfilter;
|
||||
}
|
||||
|
||||
# ifdef FC_HINT_STYLE
|
||||
#ifdef FC_HINT_STYLE
|
||||
if ((settings->seen & SEEN_HINTSTYLE) != 0
|
||||
&& oldsettings.hintstyle != settings->hintstyle)
|
||||
{
|
||||
|
@ -539,7 +667,7 @@ apply_xft_settings (struct x_display_info *dpyinfo,
|
|||
++changed;
|
||||
oldsettings.hintstyle = settings->hintstyle;
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
|
||||
if ((settings->seen & SEEN_DPI) != 0 && oldsettings.dpi != settings->dpi
|
||||
&& settings->dpi > 0)
|
||||
|
@ -590,11 +718,13 @@ apply_xft_settings (struct x_display_info *dpyinfo,
|
|||
#endif /* HAVE_XFT */
|
||||
}
|
||||
|
||||
/* Read XSettings from the display for DPYINFO.
|
||||
If SEND_EVENT_P is non-zero store a Lisp event settings that changed. */
|
||||
|
||||
static void
|
||||
read_and_apply_settings (struct x_display_info *dpyinfo, int send_event_p)
|
||||
{
|
||||
struct xsettings settings;
|
||||
Lisp_Object dpyname = XCAR (dpyinfo->name_list_element);
|
||||
|
||||
if (!read_settings (dpyinfo, &settings))
|
||||
return;
|
||||
|
@ -602,38 +732,29 @@ read_and_apply_settings (struct x_display_info *dpyinfo, int send_event_p)
|
|||
apply_xft_settings (dpyinfo, True, &settings);
|
||||
if (settings.seen & SEEN_TB_STYLE)
|
||||
{
|
||||
Lisp_Object style = Qnil;
|
||||
if (strcmp (settings.tb_style, "both") == 0)
|
||||
style = Qboth;
|
||||
else if (strcmp (settings.tb_style, "both-horiz") == 0)
|
||||
style = Qboth_horiz;
|
||||
else if (strcmp (settings.tb_style, "icons") == 0)
|
||||
style = Qimage;
|
||||
else if (strcmp (settings.tb_style, "text") == 0)
|
||||
style = Qtext;
|
||||
if (!NILP (style) && !EQ (style, current_tool_bar_style))
|
||||
{
|
||||
current_tool_bar_style = style;
|
||||
if (send_event_p)
|
||||
store_config_changed_event (Qtool_bar_style, dpyname);
|
||||
}
|
||||
if (send_event_p)
|
||||
store_tool_bar_style_changed (settings.tb_style, dpyinfo);
|
||||
else
|
||||
current_tool_bar_style = map_tool_bar_style (settings.tb_style);
|
||||
xfree (settings.tb_style);
|
||||
}
|
||||
|
||||
#ifdef HAVE_XFT
|
||||
if (settings.seen & SEEN_FONT)
|
||||
{
|
||||
if (!current_font || strcmp (current_font, settings.font) != 0)
|
||||
if (send_event_p)
|
||||
store_font_name_changed (settings.font);
|
||||
else
|
||||
{
|
||||
xfree (current_font);
|
||||
current_font = settings.font;
|
||||
if (send_event_p)
|
||||
store_config_changed_event (Qfont_name, dpyname);
|
||||
current_font = xstrdup (settings.font);
|
||||
}
|
||||
else
|
||||
xfree (settings.font);
|
||||
xfree (settings.font);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Check if EVENT for the display in DPYINFO is XSettings related. */
|
||||
|
||||
void
|
||||
xft_settings_event (struct x_display_info *dpyinfo, XEvent *event)
|
||||
{
|
||||
|
@ -675,6 +796,7 @@ xft_settings_event (struct x_display_info *dpyinfo, XEvent *event)
|
|||
read_and_apply_settings (dpyinfo, True);
|
||||
}
|
||||
|
||||
/* Initialize GSettings and read startup values. */
|
||||
|
||||
static void
|
||||
init_gsettings (void)
|
||||
|
@ -697,8 +819,21 @@ init_gsettings (void)
|
|||
gsettings_client = g_settings_new (GSETTINGS_SCHEMA);
|
||||
if (!gsettings_client) return;
|
||||
g_object_ref_sink (G_OBJECT (gsettings_client));
|
||||
g_signal_connect (G_OBJECT (gsettings_client), "changed",
|
||||
G_CALLBACK (something_changed_gsettingsCB), NULL);
|
||||
|
||||
val = g_settings_get_value (gsettings_client, SYSTEM_MONO_FONT);
|
||||
val = g_settings_get_value (gsettings_client, GSETTINGS_TOOL_BAR_STYLE);
|
||||
if (val)
|
||||
{
|
||||
g_variant_ref_sink (val);
|
||||
if (g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
|
||||
current_tool_bar_style
|
||||
= map_tool_bar_style (g_variant_get_string (val, NULL));
|
||||
g_variant_unref (val);
|
||||
}
|
||||
|
||||
#ifdef HAVE_XFT
|
||||
val = g_settings_get_value (gsettings_client, GSETTINGS_MONO_FONT);
|
||||
if (val)
|
||||
{
|
||||
g_variant_ref_sink (val);
|
||||
|
@ -707,46 +842,84 @@ init_gsettings (void)
|
|||
g_variant_unref (val);
|
||||
}
|
||||
|
||||
g_signal_connect (G_OBJECT (gsettings_client), "changed",
|
||||
G_CALLBACK (something_changedCB), NULL);
|
||||
val = g_settings_get_value (gsettings_client, GSETTINGS_FONT_NAME);
|
||||
if (val)
|
||||
{
|
||||
g_variant_ref_sink (val);
|
||||
if (g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
|
||||
current_font = xstrdup (g_variant_get_string (val, NULL));
|
||||
g_variant_unref (val);
|
||||
}
|
||||
#endif /* HAVE_XFT */
|
||||
|
||||
#endif /* HAVE_GSETTINGS */
|
||||
}
|
||||
|
||||
/* Init GConf and read startup values. */
|
||||
|
||||
static void
|
||||
init_gconf (void)
|
||||
{
|
||||
#if defined (HAVE_GCONF) && defined (HAVE_XFT) && ! defined (HAVE_GSETTINGS)
|
||||
#if defined (HAVE_GCONF)
|
||||
char *s;
|
||||
|
||||
#ifdef HAVE_G_TYPE_INIT
|
||||
g_type_init ();
|
||||
#endif
|
||||
|
||||
gconf_client = gconf_client_get_default ();
|
||||
s = gconf_client_get_string (gconf_client, SYSTEM_MONO_FONT, NULL);
|
||||
gconf_client_set_error_handling (gconf_client, GCONF_CLIENT_HANDLE_NONE);
|
||||
gconf_client_add_dir (gconf_client,
|
||||
GCONF_TOOL_BAR_STYLE,
|
||||
GCONF_CLIENT_PRELOAD_ONELEVEL,
|
||||
NULL);
|
||||
gconf_client_notify_add (gconf_client,
|
||||
GCONF_TOOL_BAR_STYLE,
|
||||
something_changed_gconfCB,
|
||||
NULL, NULL, NULL);
|
||||
|
||||
s = gconf_client_get_string (gconf_client, GCONF_TOOL_BAR_STYLE, NULL);
|
||||
if (s)
|
||||
{
|
||||
current_tool_bar_style = map_tool_bar_style (s);
|
||||
g_free (s);
|
||||
}
|
||||
|
||||
#ifdef HAVE_XFT
|
||||
s = gconf_client_get_string (gconf_client, GCONF_MONO_FONT, NULL);
|
||||
if (s)
|
||||
{
|
||||
current_mono_font = xstrdup (s);
|
||||
g_free (s);
|
||||
}
|
||||
s = gconf_client_get_string (gconf_client, SYSTEM_FONT, NULL);
|
||||
s = gconf_client_get_string (gconf_client, GCONF_FONT_NAME, NULL);
|
||||
if (s)
|
||||
{
|
||||
current_font = xstrdup (s);
|
||||
g_free (s);
|
||||
}
|
||||
gconf_client_set_error_handling (gconf_client, GCONF_CLIENT_HANDLE_NONE);
|
||||
gconf_client_add_dir (gconf_client,
|
||||
SYSTEM_MONO_FONT,
|
||||
GCONF_MONO_FONT,
|
||||
GCONF_CLIENT_PRELOAD_ONELEVEL,
|
||||
NULL);
|
||||
gconf_client_notify_add (gconf_client,
|
||||
SYSTEM_MONO_FONT,
|
||||
something_changedCB,
|
||||
GCONF_MONO_FONT,
|
||||
something_changed_gconfCB,
|
||||
NULL, NULL, NULL);
|
||||
#endif /* HAVE_GCONF && HAVE_XFT && ! HAVE_GSETTINGS */
|
||||
gconf_client_add_dir (gconf_client,
|
||||
GCONF_FONT_NAME,
|
||||
GCONF_CLIENT_PRELOAD_ONELEVEL,
|
||||
NULL);
|
||||
gconf_client_notify_add (gconf_client,
|
||||
GCONF_FONT_NAME,
|
||||
something_changed_gconfCB,
|
||||
NULL, NULL, NULL);
|
||||
#endif /* HAVE_XFT */
|
||||
#endif /* HAVE_GCONF */
|
||||
}
|
||||
|
||||
/* Init Xsettings and read startup values. */
|
||||
|
||||
static void
|
||||
init_xsettings (struct x_display_info *dpyinfo)
|
||||
{
|
||||
|
@ -769,11 +942,14 @@ void
|
|||
xsettings_initialize (struct x_display_info *dpyinfo)
|
||||
{
|
||||
if (first_dpyinfo == NULL) first_dpyinfo = dpyinfo;
|
||||
init_gsettings ();
|
||||
init_gconf ();
|
||||
init_xsettings (dpyinfo);
|
||||
init_gsettings ();
|
||||
}
|
||||
|
||||
/* Return the system monospaced font.
|
||||
May be NULL if not known. */
|
||||
|
||||
const char *
|
||||
xsettings_get_system_font (void)
|
||||
{
|
||||
|
@ -781,6 +957,9 @@ xsettings_get_system_font (void)
|
|||
}
|
||||
|
||||
#ifdef USE_LUCID
|
||||
/* Return the system font.
|
||||
May be NULL if not known. */
|
||||
|
||||
const char *
|
||||
xsettings_get_system_normal_font (void)
|
||||
{
|
||||
|
@ -831,10 +1010,9 @@ syms_of_xsettings (void)
|
|||
first_dpyinfo = NULL;
|
||||
#ifdef HAVE_GSETTINGS
|
||||
gsettings_client = NULL;
|
||||
#else
|
||||
#endif
|
||||
#ifdef HAVE_GCONF
|
||||
gconf_client = NULL;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
DEFSYM (Qmonospace_font_name, "monospace-font-name");
|
||||
|
|
Loading…
Add table
Reference in a new issue