1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-23 07:19:15 +00:00

Merge changes from emacs-23 branch.

This commit is contained in:
Juanma Barranquero 2010-10-08 12:14:47 +02:00
commit 4628bef1ee
34 changed files with 496 additions and 247 deletions

View File

@ -2458,6 +2458,12 @@
* display.texi (Images): Delete redundant @findex.
2007-08-16 Stefan Monnier <monnier@iro.umontreal.ca>
* 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 <rms@gnu.org>
* processes.texi (Asynchronous Processes): Clarify

View File

@ -1,3 +1,11 @@
2010-10-08 Glenn Morris <rgm@gnu.org>
* 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 <yamaoka@jpl.org>
* gnus.texi (Gravatars): Document gnus-gravatar-too-ugly.

View File

@ -163,19 +163,6 @@ include at the beginning:
@end example
@noindent
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)}
call:
@example
(require 'cl)
(require 'cl-19)
@end example
@noindent
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
needed.
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
@noindent
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}.
The @dfn{CL} package is distributed with Emacs, so there is no need
to install anything.
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.
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
@code{Info-directory-list}.
@node Naming Conventions, , Installation, Overview
@section Naming Conventions
@ -5076,8 +5050,8 @@ Lisp.
@noindent
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

View File

@ -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
@url{http://www.openldap.org/}
@url{http://www.openldap.org/}.
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{ftp://uiarchive.cso.uiuc.edu/pub/packages/ph} is the main
distribution site. @url{http://www.uiuc.edu/cgi-bin/ph/lookup?Query=.}
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{http://www-dev.cites.uiuc.edu/ph/}.
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
@item
Open LDAP Libraries
(@url{http://www.openldap.org/})
@item
University of Michigan's LDAP Client software
(@url{http://www.umich.edu/~dirsvcs/ldap/})
@end itemize
@file{ldapsearch}, available as part of Open LDAP
(@url{http://www.openldap.org/}).
@node Usage, Credits, Installation, Top
@ -968,7 +958,3 @@ in testing and proofreading the code and docs of @file{ph.el}.
@printindex vr
@bye
@ignore
arch-tag: 1b79460b-4ea1-441d-ab45-05ddd16ef241
@end ignore

View File

@ -1,3 +1,8 @@
2010-10-08 Glenn Morris <rgm@gnu.org>
* emacsclient.c (set_local_socket) [DARWIN_OS]: Try as a fall-back
DARWIN_USER_TEMP_DIR. (Bug#3992)
2010-10-03 Dan Nicolaescu <dann@ics.uci.edu>
* test-distrib.c (cool_read):

View File

@ -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);
}
else
#endif
tmpdir = "/tmp";
}
socket_name = alloca (strlen (tmpdir) + strlen (server_name)
+ EXTRA_SPACE);
sprintf (socket_name, "%s/emacs%d/%s",

View File

@ -1,3 +1,49 @@
2010-10-08 Glenn Morris <rgm@gnu.org>
* 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
shadow-same-file-or-nonexistent.
2010-10-08 Chong Yidong <cyd@stupidchicken.com>
* minibuffer.el (completion--some, completion--do-completion)
(minibuffer-complete-and-exit, minibuffer-completion-help)
(completion-basic-try-completion)
(completion-basic-all-completions)
(completion-pcm--find-all-completions): Use lexical-let to
avoid some false matches in variable completion (Bug#7056)
2010-10-08 Olof Ohlsson Sax <olof.ohlsson.sax@gmail.com> (tiny change)
* vc-svn.el (vc-svn-merge-news): Use --non-interactive. (Bug#7152)
2010-10-08 Leo <sdl.web@gmail.com>
* 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 <monnier@iro.umontreal.ca>
* minibuffer.el (completion--replace):
Better preserve markers (bug#7138).
2010-10-08 Juanma Barranquero <lekktu@gmail.com>
* server.el (server-process-filter): Doc fix.
2010-10-08 Drew Adams <drew.adams@oracle.com>
* dired.el (dired-save-positions): Doc fix. (Bug#7119)
2010-10-08 Andreas Schwab <schwab@linux-m68k.org>
* Makefile.in (ELCFILES): Update.
2010-10-08 Glenn Morris <rgm@gnu.org>
* vc/ediff-wind.el (ediff-setup-control-frame):

View File

@ -1,3 +1,32 @@
2010-09-30 Chong Yidong <cyd@stupidchicken.com>
* semantic/bovine/el.el:
* semantic/mru-bookmark.el (global-semantic-mru-bookmark-mode):
Fix require statements.
2010-09-29 Chong Yidong <cyd@stupidchicken.com>
* 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 <zappo@gnu.org>
* semantic/lex-spp.el (semantic-lex-spp-debug-symbol): New var.
(semantic-lex-spp-enable-debug-symbol): New command
(semantic-lex-spp-value-valid-p)
(semantic-lex-spp-validate-value): New functions
(semantic-lex-spp-symbol-set)
(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 <cyd@stupidchicken.com>
* 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 <cyd@stupidchicken.com>
* ede/pmake.el (ede-proj-makefile-insert-variables):
Don't destroy list before using it.
2010-04-29 Chong Yidong <cyd@stupidchicken.com>
* semantic.el (semantic-completion-at-point-function):

View File

@ -1240,7 +1240,9 @@
(nth 7 vals))
(nth 0 vals)
(nth 10 vals)
(nth 4 vals))
(list
(nth 4 vals))
(nth 9 vals))
)
(opt-stars
opt-class
@ -1262,7 +1264,9 @@
(nth 6 vals))
(nth 0 vals)
(nth 9 vals)
(nth 4 vals))
(list
(nth 4 vals))
(nth 8 vals))
)
) ;; end func-decl
@ -1433,13 +1437,11 @@
namespace-symbol
opt-bits
opt-array
opt-assign
,(semantic-lambda
(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
(varname-opt-initializer
(semantic-list)
(opt-assign)
( ;;EMPTY
)
) ;; end varname-opt-initializer
(varnamelist
(opt-ref
varname
varname-opt-initializer
punctuation
"\\`[,]\\'"
varnamelist
,(semantic-lambda
(cons
(nth 1 vals)
(nth 3 vals)))
(nth 4 vals)))
)
(opt-ref
varname
varname-opt-initializer
,(semantic-lambda
(list
(nth 1 vals)))
@ -2108,74 +2119,64 @@
"\\`[&]\\'")
) ;; end expr-start
(expr-binop
(punctuation
"\\`[-]\\'")
(punctuation
"\\`[+]\\'")
(punctuation
"\\`[*]\\'")
(punctuation
"\\`[/]\\'")
(punctuation
"\\`[&]\\'"
punctuation
"\\`[&]\\'")
(punctuation
"\\`[&]\\'")
(punctuation
"\\`[|]\\'"
punctuation
"\\`[|]\\'")
(punctuation
"\\`[|]\\'")
) ;; end expr-binop
(expression
(number
(unaryexpression
expr-binop
unaryexpression
,(semantic-lambda
(list
(identity start)
(identity end)))
)
(multi-stage-dereference
,(semantic-lambda
(list
(identity start)
(identity end)))
)
(NEW
multi-stage-dereference
,(semantic-lambda
(list
(identity start)
(identity end)))
)
(NEW
builtintype-types
semantic-list
,(semantic-lambda
(list
(identity start)
(identity end)))
)
(namespace-symbol
,(semantic-lambda
(list
(identity start)
(identity end)))
)
(string-seq
,(semantic-lambda
(list
(identity start)
(identity end)))
)
(type-cast
expression
,(semantic-lambda
(list
(identity start)
(identity end)))
)
(semantic-list
expression
,(semantic-lambda
(list
(identity start)
(identity end)))
)
(semantic-list
,(semantic-lambda
(list
(identity start)
(identity end)))
)
(expr-start
expression
(unaryexpression
,(semantic-lambda
(list
(identity start)
(identity end)))
)
) ;; end expression
(unaryexpression
(number)
(multi-stage-dereference)
(NEW
multi-stage-dereference)
(NEW
builtintype-types
semantic-list)
(namespace-symbol)
(string-seq)
(type-cast
expression)
(semantic-list
expression)
(semantic-list)
(expr-start
expression)
) ;; end unaryexpression
)
"Parser table.")

View File

@ -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)

View File

@ -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
(save-excursion
(semanticdb-typecache-find-method (or path semanticdb-current-table)

View File

@ -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)
nil)))
,forms))

View File

@ -1519,7 +1519,7 @@ Return the tag found or nil if not found."
(car (semantic-find-tags-by-class
'function
(or (semantic-find-tags-by-name name (current-buffer))
(and (featurep 'semanticdb)
(and (featurep 'semantic/db)
semanticdb-current-database
(cdar (semanticdb-find-tags-by-name name nil t)))))))

View File

@ -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)
(prog1
(if (and semantic-imenu-index-directory
(featurep 'semanticdb)
(featurep 'semantic/db)
(semanticdb-minor-mode-p))
(semantic-create-imenu-directory-index
(or stream (semantic-fetch-tags-fast)))

View File

@ -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))
; )
nil
)
(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
(semantic-lex-spp-dynamic-map)))
@ -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))

View File

@ -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))))
;;;###autoload
(define-minor-mode global-semantic-mru-bookmark-mode
"Toggle global use of option `semantic-mru-bookmark-mode'.

View File

@ -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)
(semantic-ctxt-current-mode)))))
(defsubst semantic--tag-attributes-cdr (tag)

View File

@ -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).
It has 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

View File

@ -155,10 +155,11 @@ Return nil if URI is not a local file."
(let* ((decoded-f (decode-coding-string
f
(or file-name-coding-system
default-file-name-coding-system)))
(try-f (if (file-readable-p decoded-f) decoded-f f)))
(when (file-readable-p try-f) try-f)))))
default-file-name-coding-system))))
(setq f (cond ((file-readable-p decoded-f) decoded-f)
((file-readable-p f) f)
(t nil)))))
f))
(defun dnd-open-local-file (uri action)
"Open a local file.

View File

@ -53,10 +53,13 @@
(defgroup lisp-shadow nil
"Locate Emacs Lisp file shadowings."
:prefix "shadows-"
:prefix "load-path-shadows-"
:group 'lisp)
(defcustom shadows-compare-text-p nil
(define-obsolete-variable-alias 'shadows-compare-text-p
'load-path-shadows-compare-text "23.3")
(defcustom load-path-shadows-compare-text nil
"If non-nil, then shadowing files are reported only if their text differs.
This is slower, but filters out some innocuous shadowing."
:type 'boolean
@ -124,11 +127,11 @@ See the documentation for `list-load-path-shadows' for further information."
;; Report it unless the files are identical.
(let ((base1 (concat (cdr orig-dir) "/" file))
(base2 (concat dir "/" file)))
(if (not (and shadows-compare-text-p
(shadow-same-file-or-nonexistent
(if (not (and load-path-shadows-compare-text
(load-path-shadows-same-file-or-nonexistent
(concat base1 ".el") (concat base2 ".el"))
;; This is a bit strict, but safe.
(shadow-same-file-or-nonexistent
(load-path-shadows-same-file-or-nonexistent
(concat base1 ".elc") (concat base2 ".elc"))))
(setq shadows
(append shadows (list base1 base2)))))
@ -140,7 +143,7 @@ See the documentation for `list-load-path-shadows' for further information."
;; Return true if neither file exists, or if both exist and have identical
;; contents.
(defun shadow-same-file-or-nonexistent (f1 f2)
(defun load-path-shadows-same-file-or-nonexistent (f1 f2)
(let ((exists1 (file-exists-p f1))
(exists2 (file-exists-p f2)))
(or (and (not exists1) (not exists2))

View File

@ -133,8 +133,8 @@ the closest directory separators."
"Apply FUN to each element of XS in turn.
Return the first non-nil returned value.
Like CL's `some'."
(let ((firsterror nil)
res)
(lexical-let ((firsterror nil)
res)
(while (and (not res) xs)
(condition-case err
(setq res (funcall fun (pop xs)))
@ -485,10 +485,30 @@ in the last `cdr'."
(defun completion--replace (beg end newtext)
"Replace the buffer text between BEG and END with NEWTEXT.
Moves point to the end of the new text."
;; This should be in subr.el.
;; Maybe this should be in subr.el.
;; You'd think this is trivial to do, but details matter if you want
;; to keep markers "at the right place" and be robust in the face of
;; after-change-functions that may themselves modify the buffer.
(let ((prefix-len 0))
;; Don't touch markers in the shared prefix (if any).
(while (and (< prefix-len (length newtext))
(< (+ beg prefix-len) end)
(eq (char-after (+ beg prefix-len))
(aref newtext prefix-len)))
(setq prefix-len (1+ prefix-len)))
(unless (zerop prefix-len)
(setq beg (+ beg prefix-len))
(setq newtext (substring newtext prefix-len))))
(let ((suffix-len 0))
;; Don't touch markers in the shared suffix (if any).
(while (and (< suffix-len (length newtext))
(< beg (- end suffix-len))
(eq (char-before (- end suffix-len))
(aref newtext (- (length newtext) suffix-len 1))))
(setq suffix-len (1+ suffix-len)))
(unless (zerop suffix-len)
(setq end (- end suffix-len))
(setq newtext (substring newtext 0 (- suffix-len)))))
(goto-char beg)
(insert newtext)
(delete-region (point) (+ (point) (- end beg))))
@ -520,15 +540,16 @@ E = after completion we now have an Exact match.
101 5 ??? impossible
110 6 some completion happened
111 7 completed to an exact completion"
(let* ((beg (field-beginning))
(end (field-end))
(string (buffer-substring beg end))
(comp (funcall (or try-completion-function
'completion-try-completion)
string
minibuffer-completion-table
minibuffer-completion-predicate
(- (point) beg))))
(lexical-let*
((beg (field-beginning))
(end (field-end))
(string (buffer-substring beg end))
(comp (funcall (or try-completion-function
'completion-try-completion)
string
minibuffer-completion-table
minibuffer-completion-predicate
(- (point) beg))))
(cond
((null comp)
(minibuffer-hide-completions)
@ -541,14 +562,15 @@ E = after completion we now have an Exact match.
;; `completed' should be t if some completion was done, which doesn't
;; include simply changing the case of the entered string. However,
;; for appearance, the string is rewritten if the case changes.
(let* ((comp-pos (cdr comp))
(completion (car comp))
(completed (not (eq t (compare-strings completion nil nil
string nil nil t))))
(unchanged (eq t (compare-strings completion nil nil
string nil nil nil))))
(lexical-let*
((comp-pos (cdr comp))
(completion (car comp))
(completed (not (eq t (compare-strings completion nil nil
string nil nil t))))
(unchanged (eq t (compare-strings completion nil nil
string nil nil nil))))
(if unchanged
(goto-char end)
(goto-char end)
;; Insert in minibuffer the chars we got.
(completion--replace beg end completion))
;; Move point to its completion-mandated destination.
@ -729,8 +751,8 @@ If `minibuffer-completion-confirm' is `confirm-after-completion',
`minibuffer-confirm-exit-commands', and accept the input
otherwise."
(interactive)
(let ((beg (field-beginning))
(end (field-end)))
(lexical-let ((beg (field-beginning))
(end (field-end)))
(cond
;; Allow user to specify null string
((= beg end) (exit-minibuffer))
@ -1107,14 +1129,13 @@ variables.")
"Display a list of possible completions of the current minibuffer contents."
(interactive)
(message "Making completion list...")
(let* ((non-essential t)
(start (field-beginning))
(string (field-string))
(completions (completion-all-completions
string
minibuffer-completion-table
minibuffer-completion-predicate
(- (point) (field-beginning)))))
(lexical-let* ((start (field-beginning))
(string (field-string))
(completions (completion-all-completions
string
minibuffer-completion-table
minibuffer-completion-predicate
(- (point) (field-beginning)))))
(message nil)
(if (and completions
(or (consp (cdr completions))
@ -1767,9 +1788,10 @@ Return the new suffix."
(substring afterpoint 0 (cdr bounds)))))
(defun completion-basic-try-completion (string table pred point)
(let* ((beforepoint (substring string 0 point))
(afterpoint (substring string point))
(bounds (completion-boundaries beforepoint table pred afterpoint)))
(lexical-let*
((beforepoint (substring string 0 point))
(afterpoint (substring string point))
(bounds (completion-boundaries beforepoint table pred afterpoint)))
(if (zerop (cdr bounds))
;; `try-completion' may return a subtly different result
;; than `all+merge', so try to use it whenever possible.
@ -1780,22 +1802,30 @@ Return the new suffix."
(concat completion
(completion--merge-suffix completion point afterpoint))
(length completion))))
(let* ((suffix (substring afterpoint (cdr bounds)))
(prefix (substring beforepoint 0 (car bounds)))
(pattern (completion-basic--pattern
beforepoint afterpoint bounds))
(all (completion-pcm--all-completions prefix pattern table pred)))
(lexical-let*
((suffix (substring afterpoint (cdr bounds)))
(prefix (substring beforepoint 0 (car bounds)))
(pattern (delete
"" (list (substring beforepoint (car bounds))
'point
(substring afterpoint 0 (cdr bounds)))))
(all (completion-pcm--all-completions prefix pattern table pred)))
(if minibuffer-completing-file-name
(setq all (completion-pcm--filename-try-filter all)))
(completion-pcm--merge-try pattern all prefix suffix)))))
(defun completion-basic-all-completions (string table pred point)
(let* ((beforepoint (substring string 0 point))
(afterpoint (substring string point))
(bounds (completion-boundaries beforepoint table pred afterpoint))
(prefix (substring beforepoint 0 (car bounds)))
(pattern (completion-basic--pattern beforepoint afterpoint bounds))
(all (completion-pcm--all-completions prefix pattern table pred)))
(lexical-let*
((beforepoint (substring string 0 point))
(afterpoint (substring string point))
(bounds (completion-boundaries beforepoint table pred afterpoint))
(suffix (substring afterpoint (cdr bounds)))
(prefix (substring beforepoint 0 (car bounds)))
(pattern (delete
"" (list (substring beforepoint (car bounds))
'point
(substring afterpoint 0 (cdr bounds)))))
(all (completion-pcm--all-completions prefix pattern table pred)))
(completion-hilit-commonality all point (car bounds))))
;;; Partial-completion-mode style completion.
@ -1958,12 +1988,13 @@ POINT is a position inside STRING.
FILTER is a function applied to the return value, that can be used, e.g. to
filter out additional entries (because TABLE migth not obey PRED)."
(unless filter (setq filter 'identity))
(let* ((beforepoint (substring string 0 point))
(afterpoint (substring string point))
(bounds (completion-boundaries beforepoint table pred afterpoint))
(prefix (substring beforepoint 0 (car bounds)))
(suffix (substring afterpoint (cdr bounds)))
firsterror)
(lexical-let*
((beforepoint (substring string 0 point))
(afterpoint (substring string point))
(bounds (completion-boundaries beforepoint table pred afterpoint))
(prefix (substring beforepoint 0 (car bounds)))
(suffix (substring afterpoint (cdr bounds)))
firsterror)
(setq string (substring string (car bounds) (+ point (cdr bounds))))
(let* ((relpoint (- point (car bounds)))
(pattern (completion-pcm--string->pattern string relpoint))

View File

@ -1,12 +1,12 @@
;;; cl-compat.el --- Common Lisp extensions for GNU Emacs Lisp (compatibility)
;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005,
;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
;; 2009, 2010 Free Software Foundation, Inc.
;; Author: Dave Gillespie <daveg@synaptics.com>
;; Version: 2.02
;; Keywords: extensions
;; Package: emacs
;; Obsolete-since: 23.3
;; This file is part of GNU Emacs.
@ -25,6 +25,8 @@
;;; Commentary:
;; This file has been obsolete since Emacs 23.3.
;; These are extensions to Emacs Lisp that provide a degree of
;; Common Lisp compatibility, beyond what is already built-in
;; in Emacs Lisp.
@ -195,5 +197,4 @@
;; byte-compile-warnings: (not cl-functions)
;; End:
;; arch-tag: 9996bb4f-aaf5-4592-b436-bf64759a3163
;;; cl-compat.el ends here

View File

@ -1,9 +1,10 @@
;;; lmenu.el --- emulate Lucid's menubar support
;; Copyright (C) 1992, 1993, 1994, 1997, 2001, 2002, 2003, 2004,
;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Copyright (C) 1992, 1993, 1994, 1997, 2001, 2002, 2003, 2004, 2005,
;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Keywords: emulations obsolete
;; Obsolete-since: 23.3
;; This file is part of GNU Emacs.
@ -22,6 +23,8 @@
;;; Commentary:
;; This file has been obsolete since Emacs 23.3.
;;; Code:
@ -439,5 +442,4 @@ BEFORE, if provided, is the name of a menu before which this menu should
(provide 'lmenu)
;; arch-tag: 7051c396-2837-435a-ae11-b2d2e2af8fc1
;;; lmenu.el ends here

View File

@ -859,7 +859,7 @@ The following commands are accepted by the client:
returned by -eval.
`-error DESCRIPTION'
Signal an error (but continue processing).
Signal an error and delete process PROC.
`-suspend'
Suspend this terminal, i.e., stop the client process.

View File

@ -374,7 +374,7 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
(message "Merging changes into %s..." file)
;; (vc-file-setprop file 'vc-working-revision nil)
(vc-file-setprop file 'vc-checkout-time 0)
(vc-svn-command nil 0 file "update")
(vc-svn-command nil 0 file "--non-interactive" "update") ; see bug#7152
;; Analyze the merge result reported by SVN, and set
;; file properties accordingly.
(with-current-buffer (get-buffer "*vc*")

View File

@ -1,3 +1,54 @@
2010-10-08 Kenichi Handa <handa@m17n.org>
* coding.c (complement_process_encoding_system): Fix previous change.
2010-10-08 Michael Albinus <michael.albinus@gmx.de>
* dbusbind.c (syms_of_dbusbind): Move putenv call ...
(Fdbus_init_bus): ... here. (Bug#7113)
2010-10-08 Glenn Morris <rgm@gnu.org>
* buffer.c (before-change-functions, after-change-functions):
Three-year overdue doc fix following 2007-08-13 change.
2010-10-08 Kenichi Handa <handa@m17n.org>
* coding.c (coding_inherit_eol_type): If parent doesn't specify
eol-format, inherit from the system's default.
(complement_process_encoding_system): Make a new coding system
inherit the original eol-format.
2010-10-08 Kenichi Handa <handa@m17n.org>
* coding.c (complement_process_encoding_system): New function.
* coding.h (complement_process_encoding_system): Extern it.
* callproc.c (Fcall_process): Complement the coding system for
encoding arguments.
(Fcall_process_region): Complement the coding system for encoding
the input to the process.
* process.c (Fstart_process): Complement the coding system for
encoding arguments.
(send_process): Complement the coding system for encoding what
sent to the process.
2010-10-08 Kenichi Handa <handa@m17n.org>
* xfont.c (xfont_open): Fix setting of font->average_width from
:avgwidth property (Bug#7123).
2010-10-08 Michael Albinus <michael.albinus@gmx.de>
* dbusbind.c (syms_of_dbusbind): Use putenv instead of setenv, it
is more portable.
* keyboard.c (gobble_input): Move call of xd_read_queued_messages ...
(kbd_buffer_get_event): ... here. This is needed for cygwin, which
has not defined SIGIO.
2010-10-08 Chong Yidong <cyd@stupidchicken.com>
* xterm.c (x_draw_relief_rect): If box width is larger than 1,

View File

@ -5957,10 +5957,7 @@ No information is given about the length of the text after the change.
Buffer changes made while executing the `before-change-functions'
don't call any before-change or after-change functions.
That's because these variables are temporarily set to nil.
As a result, a hook function cannot straightforwardly alter the
value of these variables. See the Emacs Lisp manual for a way of
accomplishing an equivalent result by using other variables.
That's because `inhibit-modification-hooks' is temporarily set non-nil.
If an unhandled error happens in running these functions,
the variable's value remains nil. That prevents the error
@ -5978,10 +5975,7 @@ and the post-change beginning and end are at the same place.)
Buffer changes made while executing the `after-change-functions'
don't call any before-change or after-change functions.
That's because these variables are temporarily set to nil.
As a result, a hook function cannot straightforwardly alter the
value of these variables. See the Emacs Lisp manual for a way of
accomplishing an equivalent result by using other variables.
That's because `inhibit-modification-hooks' is temporarily set non-nil.
If an unhandled error happens in running these functions,
the variable's value remains nil. That prevents the error

View File

@ -254,21 +254,16 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
if (!NILP (Vcoding_system_for_write))
val = Vcoding_system_for_write;
else if (! must_encode)
val = Qnil;
val = Qraw_text;
else
{
args2 = (Lisp_Object *) alloca ((nargs + 1) * sizeof *args2);
args2[0] = Qcall_process;
for (i = 0; i < nargs; i++) args2[i + 1] = args[i];
coding_systems = Ffind_operation_coding_system (nargs + 1, args2);
if (CONSP (coding_systems))
val = XCDR (coding_systems);
else if (CONSP (Vdefault_process_coding_system))
val = XCDR (Vdefault_process_coding_system);
else
val = Qnil;
val = CONSP (coding_systems) ? XCDR (coding_systems) : Qnil;
}
val = coding_inherit_eol_type (val, Qnil);
val = complement_process_encoding_system (val);
setup_coding_system (Fcheck_coding_system (val), &argument_coding);
coding_attrs = CODING_ID_ATTRS (argument_coding.id);
if (NILP (CODING_ATTR_ASCII_COMPAT (coding_attrs)))
@ -912,20 +907,16 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
if (!NILP (Vcoding_system_for_write))
val = Vcoding_system_for_write;
else if (NILP (current_buffer->enable_multibyte_characters))
val = Qnil;
val = Qraw_text;
else
{
args2 = (Lisp_Object *) alloca ((nargs + 1) * sizeof *args2);
args2[0] = Qcall_process_region;
for (i = 0; i < nargs; i++) args2[i + 1] = args[i];
coding_systems = Ffind_operation_coding_system (nargs + 1, args2);
if (CONSP (coding_systems))
val = XCDR (coding_systems);
else if (CONSP (Vdefault_process_coding_system))
val = XCDR (Vdefault_process_coding_system);
else
val = Qnil;
val = CONSP (coding_systems) ? XCDR (coding_systems) : Qnil;
}
val = complement_process_encoding_system (val);
{
int count1 = SPECPDL_INDEX ();

View File

@ -6016,10 +6016,9 @@ raw_text_coding_system (Lisp_Object coding_system)
}
/* If CODING_SYSTEM doesn't specify end-of-line format but PARENT
does, return one of the subsidiary that has the same eol-spec as
PARENT. Otherwise, return CODING_SYSTEM. If PARENT is nil,
inherit end-of-line format from the system's setting
/* If CODING_SYSTEM doesn't specify end-of-line format, return one of
the subsidiary that has the same eol-spec as PARENT (if it is not
nil and specifies end-of-line format) or the system's setting
(system_eol_type). */
Lisp_Object
@ -6041,6 +6040,8 @@ coding_inherit_eol_type (Lisp_Object coding_system, Lisp_Object parent)
parent_spec = CODING_SYSTEM_SPEC (parent);
parent_eol_type = AREF (parent_spec, 2);
if (VECTORP (parent_eol_type))
parent_eol_type = system_eol_type;
}
else
parent_eol_type = system_eol_type;
@ -6054,6 +6055,45 @@ coding_inherit_eol_type (Lisp_Object coding_system, Lisp_Object parent)
return coding_system;
}
/* Check if text-conversion and eol-conversion of CODING_SYSTEM are
decided for writing to a process. If not, complement them, and
return a new coding system. */
Lisp_Object
complement_process_encoding_system (Lisp_Object coding_system)
{
Lisp_Object coding_base = Qnil, eol_base = Qnil;
Lisp_Object spec, attrs;
int i;
for (i = 0; i < 3; i++)
{
if (i == 1)
coding_system = CDR_SAFE (Vdefault_process_coding_system);
else if (i == 2)
coding_system = preferred_coding_system ();
spec = CODING_SYSTEM_SPEC (coding_system);
if (NILP (spec))
continue;
attrs = AREF (spec, 0);
if (NILP (coding_base) && ! EQ (CODING_ATTR_TYPE (attrs), Qundecided))
coding_base = CODING_ATTR_BASE_NAME (attrs);
if (NILP (eol_base) && ! VECTORP (AREF (spec, 2)))
eol_base = coding_system;
if (! NILP (coding_base) && ! NILP (eol_base))
break;
}
if (i > 0)
/* The original CODING_SYSTEM didn't specify text-conversion or
eol-conversion. Be sure that we return a fully complemented
coding system. */
coding_system = coding_inherit_eol_type (coding_base, eol_base);
return coding_system;
}
/* Emacs has a mechanism to automatically detect a coding system if it
is one of Emacs' internal format, ISO2022, SJIS, and BIG5. But,
it's impossible to distinguish some coding systems accurately

View File

@ -707,6 +707,7 @@ extern Lisp_Object code_convert_string_norecord (Lisp_Object, Lisp_Object,
int);
extern Lisp_Object raw_text_coding_system (Lisp_Object);
extern Lisp_Object coding_inherit_eol_type (Lisp_Object, Lisp_Object);
extern Lisp_Object complement_process_encoding_system (Lisp_Object);
extern int decode_coding_gap (struct coding_system *,
EMACS_INT, EMACS_INT);

View File

@ -900,6 +900,9 @@ DEFUN ("dbus-init-bus", Fdbus_init_bus, Sdbus_init_bus, 1, 1, 0,
/* Add bus to list of registered buses. */
Vdbus_registered_buses = Fcons (bus, Vdbus_registered_buses);
/* We do not want to abort. */
putenv ("DBUS_FATAL_WARNINGS=0");
/* Return. */
return Qnil;
}
@ -2160,12 +2163,11 @@ be called when the D-Bus reply message arrives. */);
doc: /* If non-nil, debug messages of D-Bus bindings are raised. */);
#ifdef DBUS_DEBUG
Vdbus_debug = Qt;
/* We can also set environment DBUS_VERBOSE=1 in order to see more
traces. */
/* We can also set environment variable DBUS_VERBOSE=1 in order to
see more traces. This requires libdbus-1 to be configured with
--enable-verbose-mode. */
#else
Vdbus_debug = Qnil;
/* We do not want to abort. */
setenv ("DBUS_FATAL_WARNINGS", "0", 1);
#endif
Fprovide (intern_c_string ("dbusbind"), Qnil);

View File

@ -3952,6 +3952,11 @@ kbd_buffer_get_event (KBOARD **kbp,
/* One way or another, wait until input is available; then, if
interrupt handlers have not read it, read it now. */
#ifdef HAVE_DBUS
/* Read D-Bus messages. */
xd_read_queued_messages ();
#endif /* HAVE_DBUS */
/* Note SIGIO has been undef'd if FIONREAD is missing. */
#ifdef SIGIO
gobble_input (0);

View File

@ -1670,6 +1670,11 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
val = XCDR (Vdefault_process_coding_system);
}
XPROCESS (proc)->encode_coding_system = val;
/* Note: At this momemnt, the above coding system may leave
text-conversion or eol-conversion unspecified. They will be
decided after we read output from the process and decode it by
some coding system, or just before we actually send a text to
the process. */
}
@ -1712,6 +1717,7 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
tem = Fsubstring (tem, make_number (2), Qnil);
{
Lisp_Object arg_encoding = Qnil;
struct gcpro gcpro1;
GCPRO1 (tem);
@ -1729,9 +1735,14 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
tem = Fcons (args[i], tem);
CHECK_STRING (XCAR (tem));
if (STRING_MULTIBYTE (XCAR (tem)))
XSETCAR (tem,
code_convert_string_norecord
(XCAR (tem), XPROCESS (proc)->encode_coding_system, 1));
{
if (NILP (arg_encoding))
arg_encoding = (complement_process_encoding_system
(XPROCESS (proc)->encode_coding_system));
XSETCAR (tem,
code_convert_string_norecord
(XCAR (tem), arg_encoding, 1));
}
}
UNGCPRO;
@ -5529,12 +5540,21 @@ send_process (volatile Lisp_Object proc, const unsigned char *volatile buf,
&& !NILP (XBUFFER (object)->enable_multibyte_characters))
|| EQ (object, Qt))
{
p->encode_coding_system
= complement_process_encoding_system (p->encode_coding_system);
if (!EQ (Vlast_coding_system_used, p->encode_coding_system))
/* The coding system for encoding was changed to raw-text
because we sent a unibyte text previously. Now we are
sending a multibyte text, thus we must encode it by the
original coding system specified for the current process. */
setup_coding_system (p->encode_coding_system, coding);
{
/* The coding system for encoding was changed to raw-text
because we sent a unibyte text previously. Now we are
sending a multibyte text, thus we must encode it by the
original coding system specified for the current process.
Another reason we comming here is that the coding system
was just complemented and new one was returned by
complement_process_encoding_system. */
setup_coding_system (p->encode_coding_system, coding);
Vlast_coding_system_used = p->encode_coding_system;
}
coding->src_multibyte = 1;
}
else

View File

@ -841,7 +841,7 @@ xfont_open (FRAME_PTR f, Lisp_Object entity, int pixel_size)
val = Ffont_get (font_object, QCavgwidth);
if (INTEGERP (val))
font->average_width = XINT (val);
font->average_width = XINT (val) / 10;
if (font->average_width < 0)
font->average_width = - font->average_width;
if (font->average_width == 0