Commit 4628bef1 authored by Juanma Barranquero's avatar Juanma Barranquero
Browse files

Merge changes from emacs-23 branch.

parents 24ac444f 2b7c9342
......@@ -2458,6 +2458,12 @@
* display.texi (Images): Delete redundant @findex.
2007-08-16 Stefan Monnier <>
* text.texi (Change Hooks): (after|before)-change-functions are no
longer bound to nil while running; rather inhibit-modification-hooks
is t.
2007-08-16 Richard Stallman <>
* processes.texi (Asynchronous Processes): Clarify
2010-10-08 Glenn Morris <>
* cl.texi (Organization, Installation, Old CL Compatibility):
Deprecate cl-compat for new code.
(Usage, Installation): Remove outdated information.
* eudc.texi (CCSO PH/QI, LDAP Requirements): Remove old information.
2010-10-07 Katsumi Yamaoka <>
* gnus.texi (Gravatars): Document gnus-gravatar-too-ugly.
......@@ -163,19 +163,6 @@ include at the beginning:
@end example
If you want to ensure that the new (Gillespie) version of @dfn{CL}
is the one that is present, add an additional @code{(require 'cl-19)}
(require 'cl)
(require 'cl-19)
@end example
The second call will fail (with ``@file{cl-19.el} not found'') if
the old @file{cl.el} package was in use.
It is safe to arrange to load @dfn{CL} at all times, e.g.,
in your @file{.emacs} file. But it's a good idea, for portability,
to @code{(require 'cl)} in your code even if you do this.
......@@ -219,39 +206,26 @@ will take care of pulling in the other files when they are
There is another file, @file{cl-compat.el}, which defines some
routines from the older @file{cl.el} package that are no longer
routines from the older @file{cl.el} package that are not otherwise
present in the new package. This includes internal routines
like @code{setelt} and @code{zip-lists}, deprecated features
like @code{defkeyword}, and an emulation of the old-style
multiple-values feature. @xref{Old CL Compatibility}.
multiple-values feature. This file is obsolete and should not be used
in new code. @xref{Old CL Compatibility}.
@node Installation, Naming Conventions, Organization, Overview
@section Installation
Installation of the @dfn{CL} package is simple: Just put the
byte-compiled files @file{cl.elc}, @file{cl-extra.elc},
@file{cl-seq.elc}, @file{cl-macs.elc}, and @file{cl-compat.elc}
into a directory on your @code{load-path}.
There are no special requirements to compile this package:
The files do not have to be loaded before they are compiled,
nor do they need to be compiled in any particular order.
You may choose to put the files into your main @file{lisp/}
directory, replacing the original @file{cl.el} file there. Or,
you could put them into a directory that comes before @file{lisp/}
on your @code{load-path} so that the old @file{cl.el} is
effectively hidden.
Also, format the @file{cl.texinfo} file and put the resulting
Info files in the @file{info/} directory or another suitable place.
You may instead wish to leave this package's components all in
their own directory, and then add this directory to your
@code{load-path} and @code{Info-directory-list}.
Add the directory to the front of the list so the old @dfn{CL}
package and its documentation are hidden.
The @dfn{CL} package is distributed with Emacs, so there is no need
to install anything.
If you do need to install it, just put the byte-compiled files
@file{cl.elc}, @file{cl-extra.elc}, @file{cl-seq.elc},
@file{cl-macs.elc}, and (if necessary) @file{cl-compat.elc} into a
directory on your @code{load-path}. Also, format the @file{cl.texi}
file and put the resulting Info files into a directory in your
@node Naming Conventions, , Installation, Overview
@section Naming Conventions
......@@ -5076,8 +5050,8 @@ Lisp.
The @dfn{CL} package includes emulations of some features of the
old @file{cl.el}, in the form of a compatibility package
@code{cl-compat}. To use it, put @code{(require 'cl-compat)} in
your program.
@code{cl-compat}. This file is obsolete and may be removed in future,
so it should not be used in new code.
The old package defined a number of internal routines without
@code{cl-} prefixes or other annotations. Call to these routines
......@@ -137,7 +137,7 @@ complement to the DAP itself.
LDAP servers usually store (but are not limited to) information about
people such as their name, phone number, email address, office
location, etc@enddots{} More information about LDAP can be found at
EUDC requires external support to access LDAP directory servers
(@pxref{LDAP Requirements})
......@@ -148,17 +148,15 @@ EUDC requires external support to access LDAP directory servers
@section CCSO PH/QI
The Central Computing Services Office (CCSO) of the University of
Illinois at Urbana Champaign (UIUC) created and freely distributes a
directory system that is currently in use in more than 300 organizations
around the world. The system records information about people such as
their address, phone number, email, academic information or any other
details it was configured to.
Illinois at Urbana Champaign created and freely distributed a
directory system that was used by many organizations in the 1990s.
The system records information about people such as their address,
phone number, email, academic information or any other details it was
configured to. Nowadays this system is not widely used.
The system consists of two parts: a database server traditionally called
@samp{qi} and a command-line client called @samp{ph}.
@url{} is the main
distribution site. @url{}
provides a listing of the active @samp{qi} servers.
@samp{qi} and a command-line client called @samp{ph}. As of 2010, the
code can still be downloaded from @url{}.
The original command-line @samp{ph} client that comes with the
@samp{ph/qi} distribution provides additional features like the
......@@ -225,18 +223,10 @@ email composition buffers (@pxref{Inline Query Expansion})
@comment node-name, next, previous, up
@section LDAP Requirements
LDAP support is added by means of @file{ldap.el} which is part of Emacs.
LDAP support is added by means of @file{ldap.el}, which is part of Emacs.
@file{ldap.el} needs an external command line utility named
@file{ldapsearch} which is available as part of LDAP toolkits:
@itemize @bullet
Open LDAP Libraries
University of Michigan's LDAP Client software
@end itemize
@file{ldapsearch}, available as part of Open LDAP
@node Usage, Credits, Installation, Top
......@@ -968,7 +958,3 @@ in testing and proofreading the code and docs of @file{ph.el}.
@printindex vr
arch-tag: 1b79460b-4ea1-441d-ab45-05ddd16ef241
@end ignore
2010-10-08 Glenn Morris <>
* emacsclient.c (set_local_socket) [DARWIN_OS]: Try as a fall-back
2010-10-03 Dan Nicolaescu <>
* test-distrib.c (cool_read):
......@@ -1223,7 +1223,18 @@ set_local_socket (void)
tmpdir = egetenv ("TMPDIR");
if (!tmpdir)
tmpdir = "/tmp";
#ifdef DARWIN_OS
size_t n = confstr (_CS_DARWIN_USER_TEMP_DIR, NULL, (size_t) 0);
if (n > 0)
tmpdir = alloca (n);
confstr (_CS_DARWIN_USER_TEMP_DIR, tmpdir, n);
tmpdir = "/tmp";
socket_name = alloca (strlen (tmpdir) + strlen (server_name)
sprintf (socket_name, "%s/emacs%d/%s",
2010-10-08 Glenn Morris <>
* emacs-lisp/cl-compat.el, emacs-lisp/lmenu.el: Move to obsolete/.
* emacs-lisp/shadow.el (lisp-shadow): Change prefix.
(shadows-compare-text-p): Make it an obsolete alias for...
(load-path-shadows-compare-text): ... new name.
(find-emacs-lisp-shadows): Update for above name change.
(load-path-shadows-same-file-or-nonexistent): New name for the old
2010-10-08 Chong Yidong <>
* minibuffer.el (completion--some, completion--do-completion)
(minibuffer-complete-and-exit, minibuffer-completion-help)
(completion-pcm--find-all-completions): Use lexical-let to
avoid some false matches in variable completion (Bug#7056)
2010-10-08 Olof Ohlsson Sax <> (tiny change)
* vc-svn.el (vc-svn-merge-news): Use --non-interactive. (Bug#7152)
2010-10-08 Leo <>
* dnd.el (dnd-get-local-file-name): If MUST-EXIST is non-nil, only
return non-nil if the file exists (Bug#7090).
2010-10-08 Stefan Monnier <>
* minibuffer.el (completion--replace):
Better preserve markers (bug#7138).
2010-10-08 Juanma Barranquero <>
* server.el (server-process-filter): Doc fix.
2010-10-08 Drew Adams <>
* dired.el (dired-save-positions): Doc fix. (Bug#7119)
2010-10-08 Andreas Schwab <>
* (ELCFILES): Update.
2010-10-08 Glenn Morris <>
* vc/ediff-wind.el (ediff-setup-control-frame):
2010-09-30 Chong Yidong <>
* semantic/bovine/el.el:
* semantic/mru-bookmark.el (global-semantic-mru-bookmark-mode):
Fix require statements.
2010-09-29 Chong Yidong <>
* semantic/tag.el (semantic-tag-version): Bump to 2.0.
* semantic/db-typecache.el (semanticdb-typecache-find-default):
* semantic/imenu.el (semantic-create-imenu-index):
* semantic/grammar.el (semantic--grammar-macro-function-tag):
* semantic/fw.el (semanticdb-without-unloaded-file-searches): Fix
require. Suggested by David Engster.
* semantic/bovine/c-by.el: Regenerate.
2010-09-29 Eric Ludlam <>
* semantic/lex-spp.el (semantic-lex-spp-debug-symbol): New var.
(semantic-lex-spp-enable-debug-symbol): New command
(semantic-lex-spp-validate-value): New functions
(semantic-lex-spp-symbol-push): Add call to validate value.
(semantic-lex-spp-table-write-slot-value): Instead of erroring on
invalid values during save, just save a nil.
2010-09-25 Chong Yidong <>
* ede/linux.el (ede-project-class-files):
......@@ -465,11 +494,6 @@
(ede-dired-minor-mode): Use define-minor-mode and derived-mode-p.
(ede-dired-add-to-target): Use dolist.
2010-04-18 Chong Yidong <>
* ede/pmake.el (ede-proj-makefile-insert-variables):
Don't destroy list before using it.
2010-04-29 Chong Yidong <>
* semantic.el (semantic-completion-at-point-function):
......@@ -1240,7 +1240,9 @@
(nth 7 vals))
(nth 0 vals)
(nth 10 vals)
(nth 4 vals))
(nth 4 vals))
(nth 9 vals))
......@@ -1262,7 +1264,9 @@
(nth 6 vals))
(nth 0 vals)
(nth 9 vals)
(nth 4 vals))
(nth 4 vals))
(nth 8 vals))
) ;; end func-decl
......@@ -1433,13 +1437,11 @@
(nth 2 vals)
(nth 0 vals)
(nth 3 vals)
(nth 4 vals)
(nth 5 vals))
(nth 4 vals))
) ;; end varname
......@@ -1484,19 +1486,28 @@
) ;; end variablearg-opt-name
) ;; end varname-opt-initializer
(nth 1 vals)
(nth 3 vals)))
(nth 4 vals)))
(nth 1 vals)))
......@@ -2108,74 +2119,64 @@
) ;; end expr-start
) ;; end expr-binop
(identity start)
(identity end)))
(identity start)
(identity end)))
) ;; end expression
(identity start)
(identity end)))
(identity start)
(identity end)))
(identity start)
(identity end)))
(identity start)
(identity end)))
(identity start)
(identity end)))
(identity start)
(identity end)))
(identity start)
(identity end)))
(identity start)
(identity end)))
) ;; end expression
) ;; end unaryexpression
"Parser table.")
......@@ -958,7 +958,7 @@ ELisp variables can be pretty long, so track this one too.")
(add-hook 'lisp-mode-hook 'semantic-default-elisp-setup)
(eval-after-load "semanticdb"
'(require 'semanticdb-el)
'(require 'semantic/db-el)
(provide 'semantic/bovine/el)
......@@ -403,7 +403,7 @@ TYPE is the datatype to find.
PATH is the search path, which should be one table object.
If FIND-FILE-MATCH is non-nil, then force the file belonging to the
found tag to be loaded."
(if (not (and (featurep 'semanticdb) semanticdb-current-database))
(if (not (and (featurep 'semantic/db) semanticdb-current-database))
nil ;; No DB, no search
(semanticdb-typecache-find-method (or path semanticdb-current-table)
......@@ -315,7 +315,7 @@ FILE, NOWARN, RAWFILE, and WILDCARDS are passed into `find-file-noselect'"
(defmacro semanticdb-without-unloaded-file-searches (forms)
"Execute FORMS with `unloaded' removed from the current throttle."
`(let ((semanticdb-find-default-throttle
(if (featurep 'semanticdb-find)
(if (featurep 'semantic/db-find)
(remq 'unloaded semanticdb-find-default-throttle)
......@@ -1519,7 +1519,7 @@ Return the tag found or nil if not found."
(car (semantic-find-tags-by-class
(or (semantic-find-tags-by-name name (current-buffer))
(and (featurep 'semanticdb)
(and (featurep 'semantic/db)
(cdar (semanticdb-find-tags-by-name name nil t)))))))
......@@ -235,7 +235,7 @@ Optional argument STREAM is an optional stream of tags used to create menus."
(setq imenu-default-goto-function 'semantic-imenu-goto-function)
(if (and semantic-imenu-index-directory
(featurep 'semanticdb)
(featurep 'semantic/db)
(or stream (semantic-fetch-tags-fast)))
......@@ -173,10 +173,42 @@ The search priority is:
(setq semantic-lex-spp-dynamic-macro-symbol-obarray-stack
(make-vector 13 0))))
(defun semantic-lex-spp-value-valid-p (value)
"Return non-nil if VALUE is valid."
(or (null value)
(stringp value)
(and (consp value)
(or (semantic-lex-token-p (car value))
(eq (car (car value)) 'spp-arg-list)))))
(defvar semantic-lex-spp-debug-symbol nil
"A symbol to break on if it is being set somewhere.")
(defun semantic-lex-spp-enable-debug-symbol (sym)
"Enable debugging for symbol SYM.
Disable debugging by entering nothing."
(interactive "sSymbol: ")
(if (string= sym "")
(setq semantic-lex-spp-debug-symbol nil)
(setq semantic-lex-spp-debug-symbol sym)))
(defmacro semantic-lex-spp-validate-value (name value)
"Validate the NAME and VALUE of a macro before it is set."
; `(progn
; (when (not (semantic-lex-spp-value-valid-p ,value))
; (error "Symbol \"%s\" with bogus value %S" ,name ,value))
; (when (and semantic-lex-spp-debug-symbol
; (string= semantic-lex-spp-debug-symbol name))
; (debug))
; )
(defun semantic-lex-spp-symbol-set (name value &optional obarray-in)
"Set value of spp symbol with NAME to VALUE and return VALUE.
If optional OBARRAY-IN is non-nil, then use that obarray instead of
the dynamic map."
(semantic-lex-spp-validate-value name value)
(if (and (stringp value) (string= value "")) (setq value nil))
(set (intern name (or obarray-in
......@@ -192,6 +224,7 @@ the dynamic map."
(defun semantic-lex-spp-symbol-push (name value)
"Push macro NAME with VALUE into the map.
Reverse with `semantic-lex-spp-symbol-pop'."
(semantic-lex-spp-validate-value name value)
(let* ((map (semantic-lex-spp-dynamic-map))
(stack (semantic-lex-spp-dynamic-map-stack))
(mapsym (intern name map))
......@@ -239,6 +239,18 @@ This function pushes tags onto the tag ring."
;; Tracking minor mode.
(defcustom global-semantic-mru-bookmark-mode nil
"If non-nil, enable `semantic-mru-bookmark-mode' globally.
When this mode is enabled, Emacs keeps track of which tags have
been edited, and you can re-visit them with \\[semantic-mrub-switch-tags]."
:group 'semantic
:group 'semantic-modes
:type 'boolean
:require 'semantic/util-modes
:initialize 'custom-initialize-default
:set (lambda (sym val)
(global-semantic-mru-bookmark-mode (if val 1 -1))))
(define-minor-mode global-semantic-mru-bookmark-mode
"Toggle global use of option `semantic-mru-bookmark-mode'.
......@@ -53,7 +53,7 @@
(declare-function semantic-fetch-tags "semantic")
(declare-function semantic-clear-toplevel-cache "semantic")
(defconst semantic-tag-version "2.0pre7"
(defconst semantic-tag-version "2.0"
"Version string of semantic tags made with this code.")
(defconst semantic-tag-incompatible-version "1.0"
......@@ -221,6 +221,7 @@ See also the function `semantic-ctxt-current-mode'."
;; beginning of TAG.
(or (and (>= (point) start) (< (point) end))
(goto-char start))
(require 'semantic/ctxt)
(defsubst semantic--tag-attributes-cdr (tag)
......@@ -1178,7 +1178,7 @@ Preserves old cursor, marks/flags, hidden-p."
The positions have the form (BUFFER-POSITION WINDOW-POSITIONS).
BUFFER-POSITION is the point position in the current dired buffer.
The buffer position have the form (BUFFER DIRED-FILENAME BUFFER-POINT).
WINDOW-POSITIONS are current positions in all windows displaying
this dired buffer. The window positions have the form (WINDOW
......@@ -155,10 +155,11 @@ Return nil if URI is not a local file."
(let* ((decoded-f (decode-coding-string
(or file-name-coding-system
(try-f (if (file-readable-p decoded-f) decoded-f f)))