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:
commit
4628bef1ee
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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):
|
||||
|
@ -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",
|
||||
|
@ -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):
|
||||
|
@ -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):
|
||||
|
@ -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.")
|
||||
|
||||
|
@ -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
|
||||
(save-excursion
|
||||
(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)
|
||||
nil)))
|
||||
,forms))
|
||||
|
@ -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)))))))
|
||||
|
||||
|
@ -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)))
|
||||
|
@ -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))
|
||||
|
@ -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'.
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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))
|
||||
|
@ -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))
|
||||
|
@ -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
|
@ -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
|
@ -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.
|
||||
|
@ -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*")
|
||||
|
@ -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,
|
||||
|
10
src/buffer.c
10
src/buffer.c
@ -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
|
||||
|
@ -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 ();
|
||||
|
48
src/coding.c
48
src/coding.c
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user