merge trunk

This commit is contained in:
Kenichi Handa 2012-10-17 22:33:48 +09:00
commit 596846525b
42 changed files with 468 additions and 248 deletions

View file

@ -1,3 +1,9 @@
2012-10-15 Glenn Morris <rgm@gnu.org>
* Makefile.in (install-man, install-etc):
Apply $TRANSFORM. (Bug#12536#34)
(clean): Delete etc/emacs.tmpdesktop.
2012-10-11 Kenichi Handa <handa@gnu.org>
* .bzrignore: Add several files under admin/charsets.
@ -758,7 +764,7 @@
2012-06-28 Dmitry Antipov <dmantipov@yandex.ru>
* configure.in: Fix previous change. Remove --enable-asserts.
* configure.in: Fix previous change. Remove --enable-asserts.
(CPPFLAGS): Remove conditional -DXASSERTS=1.
Add --enable-link-time-optimization.
* INSTALL: Mention this.
@ -936,7 +942,7 @@
2012-06-03 Ulrich Müller <ulm@gentoo.org>
* configure.in (PAXCTL): Check for paxctl. (Bug#11398)
* configure.in (PAXCTL): Check for paxctl. (Bug#11398)
2012-06-01 Paul Eggert <eggert@cs.ucla.edu>
@ -1388,7 +1394,7 @@
2012-04-17 Dmitry Antipov <dmantipov@yandex.ru>
* configure.in (AC_CHECK_FUNCS):
Add getpwent, endpwent, getgrent, endgrent. (Bug#7900)
Add getpwent, endpwent, getgrent, endgrent. (Bug#7900)
2012-04-16 Glenn Morris <rgm@gnu.org>
@ -1565,7 +1571,7 @@
2011-11-04 Glenn Morris <rgm@gnu.org>
* configure.in: Increase minimum GnuTLS version to 2.6.6. (Bug#9929)
* configure.in: Increase minimum GnuTLS version to 2.6.6. (Bug#9929)
Do not include GnuTLS version info in final summary message.
2011-10-31 Eli Zaretskii <eliz@gnu.org>

View file

@ -622,18 +622,24 @@ install-man:
thisdir=`/bin/pwd`; \
cd ${mansrcdir}; \
for page in *.1; do \
dest=`echo "$${page}" | sed '$(TRANSFORM)'`; \
(cd $${thisdir}; \
${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${page}); \
${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${dest}); \
( [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ] ) || continue ; \
rm -f $(DESTDIR)${man1dir}/$${page}.gz; \
${GZIP_PROG} -9n $(DESTDIR)${man1dir}/$${page}; \
rm -f $(DESTDIR)${man1dir}/$${dest}.gz; \
${GZIP_PROG} -9n $(DESTDIR)${man1dir}/$${dest}; \
done
## Install those items from etc/ that need to end up elsewhere.
install-etc:
umask 022; ${MKDIR_P} $(DESTDIR)${desktopdir}
${INSTALL_DATA} ${srcdir}/etc/emacs.desktop \
$(DESTDIR)${desktopdir}/emacs.desktop
dest=`echo emacs | sed '$(TRANSFORM)'`; \
tmp=etc/emacs.tmpdesktop; rm -f $${tmp}; \
sed -e "/^Exec=emacs/ s/emacs/$${dest}/" \
-e "/^Icon=emacs/ s/emacs/$${dest}/" \
${srcdir}/etc/emacs.desktop > $${tmp}; \
${INSTALL_DATA} $${tmp} $(DESTDIR)${desktopdir}/$${dest}.desktop; \
rm -f $${tmp}
thisdir=`/bin/pwd`; \
cd ${iconsrcdir} || exit 1; umask 022 ; \
for dir in */*/apps */*/mimetypes; do \
@ -641,8 +647,9 @@ install-etc:
( cd $${thisdir}; ${MKDIR_P} $(DESTDIR)${icondir}/$${dir} ) ; \
for icon in $${dir}/*.*; do \
[ -r $${icon} ] || continue ; \
dest=`echo "$${icon}" | sed -e 's|.*/||' -e '$(TRANSFORM)'` ; \
( cd $${thisdir}; \
${INSTALL_DATA} ${iconsrcdir}/$${icon} $(DESTDIR)${icondir}/$${icon} ) \
${INSTALL_DATA} ${iconsrcdir}/$${icon} $(DESTDIR)${icondir}/$${dir}/$${dest} ) \
|| exit 1; \
done ; \
done
@ -729,6 +736,7 @@ mostlyclean: FRC
###
### Delete `.dvi' files here if they are not part of the distribution.
clean: FRC
-rm -f etc/emacs.tmpdesktop
(cd src; $(MAKE) $(MFLAGS) clean)
(cd oldXMenu; $(MAKE) $(MFLAGS) clean)
(cd lwlib; $(MAKE) $(MFLAGS) clean)

View file

@ -1,3 +1,11 @@
2012-10-16 Juri Linkov <juri@jurta.org>
* search.texi (Query Replace): Document multi-buffer replacement
keys. (Bug#12655)
* maintaining.texi (Tags Search): Change link "Replace" to
"Query Replace".
2012-10-13 Chong Yidong <cyd@gnu.org>
* files.texi (File Conveniences): ImageMagick enabled by default.

View file

@ -2221,7 +2221,7 @@ the current buffer, followed by the remaining files of the tags table.
reads a regexp to search for and a string to replace with, just like
ordinary @kbd{M-x query-replace-regexp}. It searches much like @kbd{M-x
tags-search}, but repeatedly, processing matches according to your
input. @xref{Replace}, for more information on query replace.
input. @xref{Query Replace}, for more information on query replace.
@vindex tags-case-fold-search
@cindex case-sensitivity and tags search

View file

@ -1239,6 +1239,19 @@ occurrences.
@item !
to replace all remaining occurrences without asking again.
@item Y @r{(Upper-case)}
to replace all remaining occurrences in all remaining buffers in
multi-buffer replacements (like the Dired `Q' command which performs
query replace on selected files). It answers this question and all
subsequent questions in the series with "yes", without further
user interaction.
@item N @r{(Upper-case)}
to skip to the next buffer in multi-buffer replacements without
replacing remaining occurrences in the current buffer. It answers
this question "no", gives up on the questions for the current buffer,
and continues to the next buffer in the sequence.
@item ^
to go back to the position of the previous occurrence (or what used to
be an occurrence), in case you changed it by mistake or want to

View file

@ -1,3 +1,8 @@
2012-10-17 Gregor Zattler <grfz@gmx.de> (tiny change)
* emacs-lisp-intro.texi (Narrowing advantages):
Minor update for changed what-line implementation. (Bug#12629)
2012-06-21 Glenn Morris <rgm@gnu.org>
* Makefile.in: Rename infodir to buildinfodir throughout. (Bug#11737)

View file

@ -6600,8 +6600,8 @@ buffer; or conversely, an Emacs Lisp function needs to work on all of a
buffer that has been narrowed. The @code{what-line} function, for
example, removes the narrowing from a buffer, if it has any narrowing
and when it has finished its job, restores the narrowing to what it was.
On the other hand, the @code{count-lines} function, which is called by
@code{what-line}, uses narrowing to restrict itself to just that portion
On the other hand, the @code{count-lines} function
uses narrowing to restrict itself to just that portion
of the buffer in which it is interested and then restores the previous
situation.

View file

@ -1,3 +1,14 @@
2012-10-15 Chong Yidong <cyd@gnu.org>
* macros.texi (Defining Macros): defmacro is now a macro.
Explicitly list the docstring and declare arguments.
* functions.texi (Anonymous Functions): Explicitly list the
docstring, declare, and interactive arguments to lambda.
(Defining Functions): Likewise for defun.
(Inline Functions): Likewise for defsubst.
(Declare Form): Tweak description.
2012-10-13 Chong Yidong <cyd@gnu.org>
* display.texi (ImageMagick Images): ImageMagick enabled by default.

View file

@ -522,21 +522,20 @@ Scheme.)
is called @dfn{defining a function}, and it is done with the
@code{defun} special form.
@defmac defun name argument-list body-forms...
@defmac defun name args [doc] [declare] [interactive] body@dots{}
@code{defun} is the usual way to define new Lisp functions. It
defines the symbol @var{name} as a function that looks like this:
defines the symbol @var{name} as a function with argument list
@var{args} and body forms given by @var{body}. Neither @var{name} nor
@var{args} should be quoted.
@example
(lambda @var{argument-list} . @var{body-forms})
@end example
@var{doc}, if present, should be a string specifying the function's
documentation string (@pxref{Function Documentation}). @var{declare},
if present, should be a @code{declare} form specifying function
metadata (@pxref{Declare Form}). @var{interactive}, if present,
should be an @code{interactive} form specifying how the function is to
be called interactively (@pxref{Interactive Call}).
@code{defun} stores this lambda expression in the function cell of
@var{name}. Its return value is @emph{undefined}.
As described previously, @var{argument-list} is a list of argument
names and may include the keywords @code{&optional} and @code{&rest}.
Also, the first two of the @var{body-forms} may be a documentation
string and an interactive declaration. @xref{Lambda Components}.
The return value of @code{defun} is undefined.
Here are some examples:
@ -582,14 +581,14 @@ redefinition from unintentional redefinition.
@end defmac
@cindex function aliases
@defun defalias name definition &optional docstring
@defun defalias name definition &optional doc
@anchor{Definition of defalias}
This special form defines the symbol @var{name} as a function, with
definition @var{definition} (which can be any valid Lisp function).
Its return value is @emph{undefined}.
If @var{docstring} is non-@code{nil}, it becomes the function
documentation of @var{name}. Otherwise, any documentation provided by
If @var{doc} is non-@code{nil}, it becomes the function documentation
of @var{name}. Otherwise, any documentation provided by
@var{definition} is used.
The proper place to use @code{defalias} is where a specific function
@ -902,11 +901,14 @@ function, you can in principle use any method to construct the list.
But typically you should use the @code{lambda} macro, or the
@code{function} special form, or the @code{#'} read syntax:
@defmac lambda args body...
This macro returns an anonymous function with argument list @var{args}
and body forms given by @var{body}. In effect, this macro makes
@code{lambda} forms ``self-quoting'': evaluating a form whose @sc{car}
is @code{lambda} yields the form itself:
@defmac lambda args [doc] [interactive] body@dots{}
This macro returns an anonymous function with argument list
@var{args}, documentation string @var{doc} (if any), interactive spec
@var{interactive} (if any), and body forms given by @var{body}.
In effect, this macro makes @code{lambda} forms ``self-quoting'':
evaluating a form whose @sc{car} is @code{lambda} yields the form
itself:
@example
(lambda (x) (* x x))
@ -1169,13 +1171,13 @@ If provided, @var{when} should be a string indicating when the function
was first made obsolete---for example, a date or a release number.
@end defun
@defmac define-obsolete-function-alias obsolete-name current-name &optional when docstring
@defmac define-obsolete-function-alias obsolete-name current-name &optional when doc
This convenience macro marks the function @var{obsolete-name} obsolete
and also defines it as an alias for the function @var{current-name}.
It is equivalent to the following:
@example
(defalias @var{obsolete-name} @var{current-name} @var{docstring})
(defalias @var{obsolete-name} @var{current-name} @var{doc})
(make-obsolete @var{obsolete-name} @var{current-name} @var{when})
@end example
@end defmac
@ -1213,16 +1215,16 @@ this:
@section Inline Functions
@cindex inline functions
@defmac defsubst name argument-list body-forms...
Define an inline function. The syntax is exactly the same as
@code{defun} (@pxref{Defining Functions}).
@end defmac
You can define an @dfn{inline function} by using @code{defsubst}
instead of @code{defun}. An inline function works just like an
ordinary function except for one thing: when you byte-compile a call
An @dfn{inline function} is a function that works just like an
ordinary function, except for one thing: when you byte-compile a call
to the function (@pxref{Byte Compilation}), the function's definition
is expanded into the caller.
is expanded into the caller. To define an inline function, use
@code{defsubst} instead of @code{defun}.
@defmac defsubst name args [doc] [declare] [interactive] body@dots{}
This macro defines an inline function. Its syntax is exactly the same
as @code{defun} (@pxref{Defining Functions}).
@end defmac
Making a function inline often makes its function calls run faster.
But it also has disadvantages. For one thing, it reduces flexibility;
@ -1266,16 +1268,13 @@ convention in Emacs Lisp mode.
@anchor{Definition of declare}
@defmac declare @var{specs}@dots{}
This macro ignores its arguments and evaluates to @code{nil}; it has
no run-time effect. However, when a @code{declare} form occurs as the
@emph{very first form} in the body of a @code{defun} function
definition or a @code{defmacro} macro definition (@pxref{Defining
Macros}, for a description of @code{defmacro}), it appends the
properties specified by @var{specs} to the function or macro. This
work is specially performed by the @code{defun} and @code{defmacro}
macros.
Note that if you put a @code{declare} form in an interactive function,
it should go before the @code{interactive} form.
no run-time effect. However, when a @code{declare} form occurs in the
@var{declare} argument of a @code{defun} or @code{defsubst} function
definition (@pxref{Defining Functions}) or a @code{defmacro} macro
definition (@pxref{Defining Macros}), it appends the properties
specified by @var{specs} to the function or macro. This work is
specially performed by @code{defun}, @code{defsubst}, and
@code{defmacro}.
Each element in @var{specs} should have the form @code{(@var{property}
@var{args}@dots{})}, which should not be quoted. These have the

View file

@ -185,35 +185,38 @@ During Compile}).
@node Defining Macros
@section Defining Macros
A Lisp macro is a list whose @sc{car} is @code{macro}. Its @sc{cdr} should
be a function; expansion of the macro works by applying the function
(with @code{apply}) to the list of unevaluated argument-expressions
from the macro call.
A Lisp macro object is a list whose @sc{car} is @code{macro}, and
whose @sc{cdr} is a lambda expression. Expansion of the macro works
by applying the lambda expression (with @code{apply}) to the list of
@emph{unevaluated} arguments from the macro call.
It is possible to use an anonymous Lisp macro just like an anonymous
function, but this is never done, because it does not make sense to pass
an anonymous macro to functionals such as @code{mapcar}. In practice,
all Lisp macros have names, and they are usually defined with the
special form @code{defmacro}.
function, but this is never done, because it does not make sense to
pass an anonymous macro to functionals such as @code{mapcar}. In
practice, all Lisp macros have names, and they are almost always
defined with the @code{defmacro} macro.
@defspec defmacro name argument-list body-forms@dots{}
@code{defmacro} defines the symbol @var{name} as a macro that looks
like this:
@defmac defmacro name args [doc] [declare] body@dots{}
@code{defmacro} defines the symbol @var{name} (which should not be
quoted) as a macro that looks like this:
@example
(macro lambda @var{argument-list} . @var{body-forms})
(macro lambda @var{args} . @var{body})
@end example
(Note that the @sc{cdr} of this list is a function---a lambda expression.)
This macro object is stored in the function cell of @var{name}. Its return
value is @emph{undefined}.
(Note that the @sc{cdr} of this list is a lambda expression.) This
macro object is stored in the function cell of @var{name}. The
meaning of @var{args} is the same as in a function, and the keywords
@code{&rest} and @code{&optional} may be used (@pxref{Argument List}).
Neither @var{name} nor @var{args} should be quoted. The return value
of @code{defmacro} is undefined.
The shape and meaning of @var{argument-list} is the same as in a
function, and the keywords @code{&rest} and @code{&optional} may be used
(@pxref{Argument List}). Macros may have a documentation string, but
any @code{interactive} declaration is ignored since macros cannot be
called interactively.
@end defspec
@var{doc}, if present, should be a string specifying the macro's
documentation string. @var{declare}, if present, should be a
@code{declare} form specifying metadata for the macro (@pxref{Declare
Form}). Note that macros cannot have interactive declarations, since
they cannot be called interactively.
@end defmac
Macros often need to construct large list structures from a mixture
of constants and nonconstant parts. To make this easier, use the

View file

@ -47,7 +47,7 @@ no warnings; on older and on non-GNU systems the generated warnings
may be useful.
---
** The configuration option '--enable-use-lisp-union-type' has been
** The configure option '--enable-use-lisp-union-type' has been
renamed to '--enable-check-lisp-object-type', as the resulting
Lisp_Object type no longer uses a union to implement the compile time
check that this option enables.
@ -61,6 +61,13 @@ as it was confusingly-named and rarely useful.
overwriting "emacs" in the installation bin/ directory with a link
to emacs-VERSION.
---
** The configure options `--program-prefix', `--program-suffix', and
`--program-transform-name' apply to more than just the installed
binaries. Now they also affect the man pages, icons, and the
etc/emacs.desktop file; but not the info pages, since this would break
links between the various manuals.
---
** Emacs uses libtinfo in preference to libncurses, if available.
@ -203,7 +210,9 @@ The PCL-CVS commands are still available via the keyboard.
---
*** Fullscreen and frame parameter fullscreen is supported.
---
*** A file dialog is used when open/saved is done from the menu/toolbar.
*** A file dialog is used for open/save operations initiated from the
menu/toolbar.
* Editing Changes in Emacs 24.3
@ -415,8 +424,8 @@ The global binding for `M-=', `count-words-region' is in effect.
channel keys found, if any.
** Flymake uses fringe bitmaps to indicate errors and warnings.
See flymake-fringe-indicator-position, flymake-error-bitmap and
flymake-warning-bitmap.
See `flymake-fringe-indicator-position', `flymake-error-bitmap' and
`flymake-warning-bitmap'.
** Follow mode
@ -634,6 +643,10 @@ inefficiency, and not namespace-clean.
* New Modes and Packages in Emacs 24.3
FIXME? erc-desktop-notifications.el, gv.el, profiler.el,
gnus-notifications.el, mm-archive.el
* Incompatible Lisp Changes in Emacs 24.3
@ -848,7 +861,7 @@ describing the cycle.
** Miscellaneous new functions:
*** `autoloadp'
*** `autoload-do-load'.
*** `autoload-do-load'
+++
*** `buffer-narrowed-p' tests if the buffer is narrowed.
*** `file-name-base' returns a file name sans directory and extension.
@ -873,7 +886,7 @@ See the "Face Attributes" section of the Elisp manual.
*** `automount-dir-prefix'
*** `buffer-has-markers-at'
*** `macro-declaration-function' (use `macro-declarations-alist').
*** `macro-declaration-function' (use `macro-declarations-alist')
*** `window-system-version'
*** `dired-pop-to-buffer' (use `dired-mark-pop-up')
*** `query-replace-interactive'
@ -881,21 +894,20 @@ See the "Face Attributes" section of the Elisp manual.
* Changes in Emacs 24.3 on non-free operating systems
** New configure.bat options on MS-Windows:
*** --without-libxml2 omits support for libxml2, even if its presence
is detected.
+++
** On MS Windows, you can pass --without-libxml2 to configure.bat to omit
support for libxml2, even if its presence is detected.
** When invoked with the -nw switch to run on the Windows text-mode terminal,
Emacs now supports mouse highlight, help-echo (in the echo area), and
mouse-autoselect-window.
`mouse-autoselect-window'.
** Two new functions are available in Cygwin builds of Emacs:
cygwin-convert-path-from-windows and cygwin-convert-path-to-windows.
** Two new functions are available in Cygwin builds:
`cygwin-convert-path-from-windows' and `cygwin-convert-path-to-windows'.
These functions allow Lisp code to access the Cygwin file-name mapping
machinery to convert between Cygwin and Windows-native file names.
** On MS-Windows Vista and later Emacs now supports symbolic links.
** On MS Windows Vista and later Emacs now supports symbolic links.
* Changes in Emacs 24.2

View file

@ -1,5 +1,23 @@
2012-10-17 Michael Heerdegen <michael_heerdegen@web.de> (tiny change)
* wdired.el (wdired-old-marks): New variable.
(wdired-change-to-wdired-mode): Locally set wdired-old-marks.
(wdired-do-renames): Move point with renamed file and don't lose
mark status (Bug#11795).
2012-10-16 Juri Linkov <juri@jurta.org>
* replace.el (query-replace-help): Mention multi-buffer replacement
keys in the Help message. (Bug#12655)
2012-10-15 Chong Yidong <cyd@gnu.org>
* emacs-lisp/byte-run.el (defsubst): Doc fix.
2012-10-14 Eli Zaretskii <eliz@gnu.org>
* window.el (display-buffer): Doc fix.
* progmodes/compile.el (compilation-error-regexp-alist-alist):
Adjust the msft regexp to the output of Studio 2010, and move msft
before edg-1. See the discussion on emacs-devel,
@ -593,9 +611,9 @@
* emacs-lisp/eieio-base.el (eieio-persistent-read): New input args
specifying the expected class, and whether subclassing is allowed.
(eieio-persistent-convert-list-to-object):
(eieio-persistent-validate/fix-slot-value)
(eieio-persistent-slot-type-is-class-p): New functions.
(eieio-named::slot-missing): Doc fix.
(eieio-persistent-validate/fix-slot-value)
(eieio-persistent-slot-type-is-class-p): New functions.
(eieio-named::slot-missing): Doc fix.
* emacs-lisp/eieio-datadebug.el (data-debug/eieio-insert-slots):
Stop using unused publd variable.
@ -2038,7 +2056,7 @@
* ses.el (ses-widen):
* simple.el (count-words--buffer-message):
* net/browse-url.el (browse-url-of-buffer): Use it
* net/browse-url.el (browse-url-of-buffer): Use it.
* simple.el (count-words-region): Don't signal an error if there
is a non-nil prefix arg and the mark is not set.
@ -16320,7 +16338,7 @@
2011-06-22 Leo Liu <sdl.web@gmail.com>
* minibuffer.el (completing-read-function)
(completing-read-default): Move from minibuf.c
(completing-read-default): Move from minibuf.c.
2011-06-22 Richard Stallman <rms@gnu.org>
@ -18177,7 +18195,7 @@
Remove unnecessary and incorrect declarations.
* emacs-lisp/check-declare.el (check-declare-scan):
Handle byte-compile-initial-macro-environment in bytecomp.el
Handle byte-compile-initial-macro-environment in bytecomp.el.
2011-05-05 Stefan Monnier <monnier@iro.umontreal.ca>

View file

@ -1,4 +1,32 @@
2012-10-08 David Engster <deng@randomsample.de>>
2012-10-14 David Engster <deng@randomsample.de>
* semantic.el (semantic-error-if-unparsed): New function. Raise
error if buffer was not parsed by Semantic (bug #12045).
(navigate-menu, edit-menu, cedet-menu-map): Enable Semantic items
only if buffer was parsed. Also, replace ':active' with ':enable'
where necessary.
* semantic/wisent/python.el
(semantic-python-get-system-include-path): Use
`python-shell-internal-send-string' if available to query Python
for system paths.
* semantic/senator.el (senator-next-tag, senator-previous-tag)
(senator-go-to-up-reference): Use `semantic-error-if-unparsed'.
* semantic/complete.el (semantic-complete-jump-local)
(semantic-complete-jump, semantic-complete-jump-local-members)
(semantic-complete-self-insert): Use `semantic-error-if-unparsed'.
(semantic-complete-inline-project): Fix autoload cookie.
* semantic/analyze/complete.el
(semantic-analyze-possible-completions): Check if buffer was
parsed. Only raise an error if function was called interactively,
otherwise silently return nil.
* cedet.el (cedet-menu-map): Fix copy&paste typo in menu creation.
2012-10-08 David Engster <deng@randomsample.de>
* semantic/bovine/el.el: Add `semantic-default-elisp-setup' to
`emacs-lisp-mode-hook'. This was accidentally removed during the

View file

@ -59,7 +59,7 @@
(define-key map [navigate-menu] 'undefined)
(define-key map [semantic-options-separator] 'undefined)
(define-key map [global-semantic-highlight-func-mode] 'undefined)
(define-key map [global-semantic-highlight-func-mode] 'undefined)
(define-key map [global-semantic-stickyfunc-mode] 'undefined)
(define-key map [global-semantic-decoration-mode] 'undefined)
(define-key map [global-semantic-idle-completions-mode] 'undefined)
(define-key map [global-semantic-idle-summary-mode] 'undefined)

View file

@ -319,6 +319,11 @@ a parse of the buffer.")
"Return non-nil if the current buffer was set up for parsing."
semantic-new-buffer-fcn-was-run)
(defsubst semantic-error-if-unparsed ()
"Raise an error if current buffer was not parsed by Semantic."
(unless semantic-new-buffer-fcn-was-run
(error "Buffer was not parsed by Semantic.")))
(defsubst semantic--umatched-syntax-needs-refresh-p ()
"Return non-nil if the unmatched syntax cache needs a refresh.
That is, if it is dirty or if the current parse tree isn't up to date."
@ -907,75 +912,91 @@ Throw away all the old tags, and recreate the tag database."
;; Edit Tags submenu:
(define-key edit-menu [semantic-analyze-possible-completions]
'(menu-item "List Completions" semantic-analyze-possible-completions
:enable (semantic-active-p)
:help "Display a list of completions for the tag at point"))
(define-key edit-menu [semantic-complete-analyze-inline]
'(menu-item "Complete Tag Inline" semantic-complete-analyze-inline
:enable (semantic-active-p)
:help "Display inline completion for the tag at point"))
(define-key edit-menu [semantic-completion-separator]
'("--"))
(define-key edit-menu [senator-transpose-tags-down]
'(menu-item "Transpose Tags Down" senator-transpose-tags-down
:active (semantic-current-tag)
:enable (and (semantic-active-p)
(semantic-current-tag))
:help "Transpose the current tag and the next tag"))
(define-key edit-menu [senator-transpose-tags-up]
'(menu-item "Transpose Tags Up" senator-transpose-tags-up
:active (semantic-current-tag)
:enable (and (semantic-active-p)
(semantic-current-tag))
:help "Transpose the current tag and the previous tag"))
(define-key edit-menu [semantic-edit-separator]
'("--"))
(define-key edit-menu [senator-yank-tag]
'(menu-item "Yank Tag" senator-yank-tag
:active (not (ring-empty-p senator-tag-ring))
:enable (not (ring-empty-p senator-tag-ring))
:help "Yank the head of the tag ring into the buffer"))
(define-key edit-menu [senator-copy-tag-to-register]
'(menu-item "Copy Tag To Register" senator-copy-tag-to-register
:active (semantic-current-tag)
:enable (and (semantic-active-p)
(semantic-current-tag))
:help "Yank the head of the tag ring into the buffer"))
(define-key edit-menu [senator-copy-tag]
'(menu-item "Copy Tag" senator-copy-tag
:active (semantic-current-tag)
:enable (and (semantic-active-p)
(semantic-current-tag))
:help "Copy the current tag to the tag ring"))
(define-key edit-menu [senator-kill-tag]
'(menu-item "Kill Tag" senator-kill-tag
:active (semantic-current-tag)
:enable (and (semantic-active-p)
(semantic-current-tag))
:help "Kill the current tag, and copy it to the tag ring"))
;; Navigate Tags submenu:
(define-key navigate-menu [senator-narrow-to-defun]
'(menu-item "Narrow to Tag" senator-narrow-to-defun
:active (semantic-current-tag)
:enable (and (semantic-active-p)
(semantic-current-tag))
:help "Narrow the buffer to the bounds of the current tag"))
(define-key navigate-menu [semantic-narrow-to-defun-separator]
'("--"))
(define-key navigate-menu [semantic-symref-symbol]
'(menu-item "Find Tag References..." semantic-symref-symbol
:enable (semantic-active-p)
:help "Read a tag and list the references to it"))
(define-key navigate-menu [semantic-complete-jump]
'(menu-item "Find Tag Globally..." semantic-complete-jump
:enable (semantic-active-p)
:help "Read a tag name and find it in the current project"))
(define-key navigate-menu [semantic-complete-jump-local-members]
'(menu-item "Find Local Members ..." semantic-complete-jump-local-members
:enable (semantic-active-p)
:help "Read a tag name and find a local member with that name"))
(define-key navigate-menu [semantic-complete-jump-local]
'(menu-item "Find Tag in This Buffer..." semantic-complete-jump-local
:enable (semantic-active-p)
:help "Read a tag name and find it in this buffer"))
(define-key navigate-menu [semantic-navigation-separator]
'("--"))
(define-key navigate-menu [senator-go-to-up-reference]
'(menu-item "Parent Tag" senator-go-to-up-reference
:enable (semantic-active-p)
:help "Navigate up one reference by tag"))
(define-key navigate-menu [senator-next-tag]
'(menu-item "Next Tag" senator-next-tag
:enable (semantic-active-p)
:help "Go to the next tag"))
(define-key navigate-menu [senator-previous-tag]
'(menu-item "Previous Tag" senator-previous-tag
:enable (semantic-active-p)
:help "Go to the previous tag"))
;; Top level menu items:
(define-key cedet-menu-map [semantic-force-refresh]
'(menu-item "Reparse Buffer" semantic-force-refresh
:help "Force a full reparse of the current buffer"
:visible semantic-mode))
:visible semantic-mode
:enable (semantic-active-p)))
(define-key cedet-menu-map [semantic-edit-menu]
`(menu-item "Edit Tags" ,edit-menu
:visible semantic-mode))

View file

@ -87,20 +87,25 @@ in a buffer."
;; In theory, we don't need the below since the context will
;; do it for us.
;;(semantic-refresh-tags-safe)
(with-syntax-table semantic-lex-syntax-table
(let* ((context (if (semantic-analyze-context-child-p context)
context
(semantic-analyze-current-context context)))
(ans (if (not context)
(error "Nothing to complete")
(:override))))
;; If interactive, display them.
(when (called-interactively-p 'any)
(with-output-to-temp-buffer "*Possible Completions*"
(semantic-analyze-princ-sequence ans "" (current-buffer)))
(shrink-window-if-larger-than-buffer
(get-buffer-window "*Possible Completions*")))
ans)))
(if (semantic-active-p)
(with-syntax-table semantic-lex-syntax-table
(let* ((context (if (semantic-analyze-context-child-p context)
context
(semantic-analyze-current-context context)))
(ans (if (not context)
(error "Nothing to complete")
(:override))))
;; If interactive, display them.
(when (called-interactively-p 'any)
(with-output-to-temp-buffer "*Possible Completions*"
(semantic-analyze-princ-sequence ans "" (current-buffer)))
(shrink-window-if-larger-than-buffer
(get-buffer-window "*Possible Completions*")))
ans))
;; Buffer was not parsed by Semantic.
;; Raise error if called interactively.
(when (called-interactively-p 'any)
(error "Buffer was not parsed by Semantic."))))
(defun semantic-analyze-possible-completions-default (context &optional flags)
"Default method for producing smart completions.

View file

@ -2088,6 +2088,7 @@ completion works."
(defun semantic-complete-jump-local ()
"Jump to a local semantic symbol."
(interactive)
(semantic-error-if-unparsed)
(let ((tag (semantic-complete-read-tag-buffer-deep "Jump to symbol: ")))
(when (semantic-tag-p tag)
(push-mark)
@ -2101,6 +2102,7 @@ completion works."
(defun semantic-complete-jump ()
"Jump to a semantic symbol."
(interactive)
(semantic-error-if-unparsed)
(let* ((tag (semantic-complete-read-tag-project "Jump to symbol: ")))
(when (semantic-tag-p tag)
(push-mark)
@ -2115,6 +2117,7 @@ completion works."
(defun semantic-complete-jump-local-members ()
"Jump to a semantic symbol."
(interactive)
(semantic-error-if-unparsed)
(let* ((tag (semantic-complete-read-tag-local-members "Jump to symbol: ")))
(when (semantic-tag-p tag)
(let ((start (condition-case nil (semantic-tag-start tag)
@ -2216,7 +2219,7 @@ use `semantic-complete-analyze-inline' to complete."
(error nil))
))
;;;;###autoload
;;;###autoload
(defun semantic-complete-inline-project ()
"Perform inline completion for any symbol in the current project.
`semantic-analyze-possible-completions' is used to determine the

View file

@ -255,6 +255,7 @@ TEXT, BOUND, NOERROR, and COUNT arguments are interpreted."
"Navigate to the next Semantic tag.
Return the tag or nil if at end of buffer."
(interactive)
(semantic-error-if-unparsed)
(let ((pos (point))
(tag (semantic-current-tag))
where)
@ -294,6 +295,7 @@ Return the tag or nil if at end of buffer."
"Navigate to the previous Semantic tag.
Return the tag or nil if at beginning of buffer."
(interactive)
(semantic-error-if-unparsed)
(let ((pos (point))
(tag (semantic-current-tag))
where)
@ -519,6 +521,7 @@ If that parent which is only a reference in the function tag
is found, we can jump to it.
Some tags such as includes have other reference features."
(interactive)
(semantic-error-if-unparsed)
(let ((result (semantic-up-reference (or tag (semantic-current-tag)))))
(if (not result)
(error "No up reference found")

View file

@ -48,24 +48,15 @@
(defun semantic-python-get-system-include-path ()
"Evaluate some Python code that determines the system include path."
(python-proc)
(if python-buffer
(with-current-buffer python-buffer
(set (make-local-variable 'python-preoutput-result) nil)
(python-send-string
"import sys; print '_emacs_out ' + '\\0'.join(sys.path)")
(accept-process-output (python-proc) 2)
(if python-preoutput-result
(split-string python-preoutput-result "[\0\n]" t)
;; Try a second, Python3k compatible shot
(python-send-string
"import sys; print('_emacs_out ' + '\\0'.join(sys.path))")
(accept-process-output (python-proc) 2)
(if python-preoutput-result
(split-string python-preoutput-result "[\0\n]" t)
(message "Timeout while querying Python for system include path.")
nil)))
(message "Python seems to be unavailable on this system.")))
(delq nil
(mapcar
(lambda (dir)
(when (file-directory-p dir)
dir))
(split-string
(python-shell-internal-send-string
"import sys;print ('\\n'.join(sys.path))")
"\n" t))))
(defcustom-mode-local-semantic-dependency-system-include-path
python-mode semantic-python-dependency-system-include-path

View file

@ -232,7 +232,8 @@ The return value is undefined.
;; fns)))
(defmacro defsubst (name arglist &rest body)
"Define an inline function. The syntax is just like that of `defun'."
"Define an inline function. The syntax is just like that of `defun'.
\(fn NAME ARGLIST &optional DOCSTRING DECL &rest BODY)"
(declare (debug defun) (doc-string 3))
(or (memq (get name 'byte-optimizer)
'(nil byte-compile-inline-expand))

View file

@ -1,3 +1,10 @@
2012-10-15 Stefan Monnier <monnier@iro.umontreal.ca>
* erc.el (erc-log): Make it into a defsubst.
(erc-with-server-buffer, define-erc-module, erc-with-buffer)
(erc-with-all-buffers-of-server): Use `declare'.
* erc-backend.el (erc-log): Adjust autoload accordingly.
2012-10-07 Deniz Dogan <deniz@dogan.se>
* erc-log.el (erc-generate-log-file-name-function):
@ -42,8 +49,8 @@
2012-08-21 Julien Danjou <julien@danjou.info>
* erc-match.el (erc-match-message): Use
`erc-match-exclude-server-buffer' not
* erc-match.el (erc-match-message):
Use `erc-match-exclude-server-buffer' not
`erc-track-exclude-server-buffer'.
2012-08-20 Josh Feinstein <jlf@foxtail.org>
@ -56,8 +63,8 @@
(erc-lurker-threshold-time): New variables.
(erc-lurker-maybe-trim, erc-lurker-initialize, erc-lurker-cleanup)
(erc-hide-current-message-p, erc-canonicalize-server-name)
(erc-lurker-update-status, erc-lurker-p): New functions. Together
they maintain state about which users have spoken in the last
(erc-lurker-update-status, erc-lurker-p): New functions.
Together they maintain state about which users have spoken in the last
erc-lurker-threshold-time, with all other users being considered
lurkers whose messages of types in erc-lurker-hide-list will not
be displayed by erc-display-message.
@ -192,7 +199,7 @@
* erc.el (erc-ssl): Made into a synonym for erc-tls, which
provides a superset of the same functionality.
(erc-open-ssl-stream): Removed.
(erc-open-ssl-stream): Remove.
(erc-open-tls-stream): Use `open-network-stream' instead of
`open-tls-stream' directly to be able to use the built-in TLS
support.

View file

@ -100,7 +100,7 @@
(require 'erc-compat)
(eval-when-compile (require 'cl))
(autoload 'erc-with-buffer "erc" nil nil 'macro)
(autoload 'erc-log "erc" nil nil 'macro)
(autoload 'erc-log "erc")
;;;; Variables and options

View file

@ -362,13 +362,12 @@ nicknames with erc-server-user struct instances.")
(defmacro erc-with-server-buffer (&rest body)
"Execute BODY in the current ERC server buffer.
If no server buffer exists, return nil."
(declare (indent 0) (debug (body)))
(let ((buffer (make-symbol "buffer")))
`(let ((,buffer (erc-server-buffer)))
(when (buffer-live-p ,buffer)
(with-current-buffer ,buffer
,@body)))))
(put 'erc-with-server-buffer 'lisp-indent-function 0)
(put 'erc-with-server-buffer 'edebug-form-spec '(body))
(defstruct (erc-server-user (:type vector) :named)
;; User data
@ -1236,6 +1235,7 @@ Example:
'erc-replace-insert))
((remove-hook 'erc-insert-modify-hook
'erc-replace-insert)))"
(declare (doc-string 3))
(let* ((sn (symbol-name name))
(mode (intern (format "erc-%s-mode" (downcase sn))))
(group (intern (format "erc-%s" (downcase sn))))
@ -1281,8 +1281,6 @@ if ARG is omitted or nil.
(put ',enable 'definition-name ',name)
(put ',disable 'definition-name ',name))))
(put 'define-erc-module 'doc-string-elt 3)
(defun erc-once-with-server-event (event &rest forms)
"Execute FORMS the next time EVENT occurs in the `current-buffer'.
@ -1334,10 +1332,10 @@ connection over which the data was received that triggered EVENT."
(add-hook hook fun nil nil)
fun))
(defmacro erc-log (string)
(defsubst erc-log (string)
"Logs STRING if logging is on (see `erc-log-p')."
`(when erc-log-p
(erc-log-aux ,string)))
(when erc-log-p
(erc-log-aux string)))
(defun erc-server-buffer ()
"Return the server buffer for the current buffer's process.
@ -1621,6 +1619,7 @@ See `erc-get-buffer' for details.
See also `with-current-buffer'.
\(fn (TARGET [PROCESS]) BODY...)"
(declare (indent 1) (debug ((form &optional form) body)))
(let ((buf (make-symbol "buf"))
(proc (make-symbol "proc"))
(target (make-symbol "target"))
@ -1637,8 +1636,6 @@ See also `with-current-buffer'.
(when (buffer-live-p ,buf)
(with-current-buffer ,buf
,@body)))))
(put 'erc-with-buffer 'lisp-indent-function 1)
(put 'erc-with-buffer 'edebug-form-spec '((form &optional form) body))
(defun erc-get-buffer (target &optional proc)
"Return the buffer matching TARGET in the process PROC.
@ -1688,6 +1685,7 @@ needs to match PROC."
FORMS will be evaluated in all buffers having the process PROCESS and
where PRED matches or in all buffers of the server process if PRED is
nil."
(declare (indent 1) (debug (form form body)))
;; Make the evaluation have the correct order
(let ((pre (make-symbol "pre"))
(pro (make-symbol "pro")))
@ -1701,8 +1699,6 @@ nil."
;; Silence the byte-compiler by binding the result of mapcar to
;; a variable.
res)))
(put 'erc-with-all-buffers-of-server 'lisp-indent-function 1)
(put 'erc-with-all-buffers-of-server 'edebug-form-spec '(form form body))
;; (iswitchb-mode) will autoload iswitchb.el
(defvar iswitchb-temp-buflist)

View file

@ -1,3 +1,7 @@
2012-10-17 Kazuhiro Ito <kzhr@d1.dion.ne.jp> (tiny change)
* starttls.el (starttls-extra-arguments): Doc fix.
2012-10-09 Lars Magne Ingebrigtsen <larsi@gnus.org>
* shr.el (shr-insert): \r is also not inserted, so don't try to delete

View file

@ -149,7 +149,7 @@ These apply when the `starttls' command is used, i.e. when
:group 'starttls)
(defcustom starttls-extra-arguments nil
"Extra arguments to `starttls-program'.
"Extra arguments to `starttls-gnutls-program'.
These apply when GnuTLS is used, i.e. when `starttls-use-gnutls' is non-nil.
For example, non-TLS compliant servers may require

View file

@ -1603,9 +1603,13 @@ Comma to replace but not move point immediately,
C-r to enter recursive edit (\\[exit-recursive-edit] to get out again),
C-w to delete match and recursive edit,
C-l to clear the screen, redisplay, and offer same replacement again,
! to replace all remaining matches with no more questions,
! to replace all remaining matches in this buffer with no more questions,
^ to move point back to previous match,
E to edit the replacement string"
E to edit the replacement string.
In multi-buffer replacements type `Y' to replace all remaining
matches in all remaining buffers with no more questions,
`N' to skip to the next buffer without replacing remaining matches
in the current buffer."
"Help message while in `query-replace'.")
(defvar query-replace-map

View file

@ -180,7 +180,7 @@ program `dired-chmod-program', which must exist."
(defvar wdired-col-perm) ;; Column where the permission bits start
(defvar wdired-old-content)
(defvar wdired-old-point)
(defvar wdired-old-marks)
(defun wdired-mode ()
"Writable Dired (WDired) mode.
@ -221,6 +221,8 @@ See `wdired-mode'."
(error "Not a Dired buffer"))
(set (make-local-variable 'wdired-old-content)
(buffer-substring (point-min) (point-max)))
(set (make-local-variable 'wdired-old-marks)
(dired-remember-marks (point-min) (point-max)))
(set (make-local-variable 'wdired-old-point) (point))
(set (make-local-variable 'query-replace-skip-read-only) t)
(set (make-local-variable 'isearch-filter-predicate)
@ -455,7 +457,8 @@ non-nil means return old filename."
(push (cons tmp file-new) residue))))
(t
(setq progress t)
(let ((file-ori (car rename)))
(let* ((file-ori (car rename))
(old-mark (cdr (assoc file-ori wdired-old-marks))))
(if wdired-use-interactive-rename
(wdired-search-and-rename file-ori file-new)
;; If dired-rename-file autoloads dired-aux while
@ -466,12 +469,17 @@ non-nil means return old filename."
(condition-case err
(let ((dired-backup-overwrite nil))
(dired-rename-file file-ori file-new
overwrite))
overwrite)
(dired-remove-file file-ori)
(dired-add-file file-new (if (integerp dired-keep-marker-rename)
dired-keep-marker-rename
old-mark)))
(error
(setq errors (1+ errors))
(dired-log (concat "Rename `" file-ori "' to `"
file-new "' failed:\n%s\n")
err)))))))))
err)
(dired-add-entry file-ori old-mark)))))))))
errors))

View file

@ -5361,8 +5361,16 @@ BUFFER-OR-NAME must be a buffer or the name of an existing
buffer. Return the window chosen for displaying BUFFER-OR-NAME,
or nil if no such window is found.
Optional argument ACTION should have the form (FUNCTION . ALIST).
FUNCTION is either a function or a list of functions.
Optional argument ACTION, if non-nil, should specify a display
action. Its form is described below.
Optional argument FRAME, if non-nil, acts like an additional
ALIST entry (reusable-frames . FRAME) to the action list of ACTION,
specifying the frame(s) to search for a window that is already
displaying the buffer. See `display-buffer-reuse-window'
If ACTION is non-nil, it should have the form (FUNCTION . ALIST),
where FUNCTION is either a function or a list of functions, and
ALIST is an arbitrary association list (alist).
Each such FUNCTION should accept two arguments: the buffer to
@ -5379,6 +5387,9 @@ function in the combined function list in turn, passing the
buffer as the first argument and the combined alist as the second
argument, until one of the functions returns non-nil.
If ACTION is nil, the function list and the alist are built using
only the other variables mentioned above.
Available action functions include:
`display-buffer-same-window'
`display-buffer-reuse-window'
@ -5407,12 +5418,7 @@ The ACTION argument to `display-buffer' can also have a non-nil
and non-list value. This means to display the buffer in a window
other than the selected one, even if it is already displayed in
the selected window. If called interactively with a prefix
argument, ACTION is t.
Optional argument FRAME, if non-nil, acts like an additional
ALIST entry (reusable-frames . FRAME), specifying the frame(s) to
search for a window that is already displaying the buffer. See
`display-buffer-reuse-window'."
argument, ACTION is t."
(interactive (list (read-buffer "Display buffer: " (other-buffer))
(if current-prefix-arg t)))
(let ((buffer (if (bufferp buffer-or-name)

View file

@ -32,13 +32,13 @@
(offset_to_section, relocate_offset, OFFSET_TO_RVA)
(RVA_TO_OFFSET, RVA_TO_SECTION_OFFSET, PTR_TO_RVA)
(OFFSET_TO_PTR, ROUND_UP, ROUND_DOWN)
(copy_executable_and_move_sections, ADJUST_IMPORT_RVA, main): Use
DWORD_PTR instead of DWORD for compatibility with x64.
(copy_executable_and_move_sections, ADJUST_IMPORT_RVA, main):
Use DWORD_PTR instead of DWORD for compatibility with x64.
* nmake.defs: Support AMD64.
(EMACS_HEAPSIZE, EMACS_PURESIZE, EMACS_MANIFEST): New macros.
* gmake.defs: (EMACS_HEAPSIZE, EMACS_PURESIZE, EMACS_MANIFEST):
* gmake.defs (EMACS_HEAPSIZE, EMACS_PURESIZE, EMACS_MANIFEST):
New macros.
* addsection.c (pfnCheckSumMappedFile, rva_to_section)
@ -478,7 +478,7 @@
2012-02-05 Christoph Scholtes <cschol2112@googlemail.com>
* README.W32: Clarification for inclusion in source tarball. (Bug#9750)
* README.W32: Clarification for inclusion in source tarball (bug#9750).
* gmake.defs (PRAGMA_SYSTEM_HEADER): Add for GCC.
@ -487,7 +487,7 @@
* makefile.w32-in (maybe-copy-distfiles)
(maybe-copy-distfiles-CMD, maybe-copy-distfiles-SH)
(create-tmp-dist-dir): Add to make --distfiles optional.
(dist): Use create-tmp-dist-dir and maybe-copy-distfiles. (Bug#10261)
(dist): Use create-tmp-dist-dir and maybe-copy-distfiles (bug#10261).
2012-02-04 Eli Zaretskii <eliz@gnu.org>

View file

@ -3,6 +3,58 @@
* xdisp.c (reseat_1): Make the information stored in it->cmp_it
invalidate.
2012-10-17 Dmitry Antipov <dmantipov@yandex.ru>
* buffer.c (Fkill_buffer): When unchaining the marker,
reset its buffer pointer to NULL (Bug#12652).
2012-10-17 Dmitry Antipov <dmantipov@yandex.ru>
Do not verify indirection counters of killed buffers (Bug#12579).
* buffer.h (BUFFER_CHECK_INDIRECTION): New macro.
* buffer.c (compact_buffer, set_buffer_internal_1): Use it.
2012-10-16 Dmitry Antipov <dmantipov@yandex.ru>
* alloc.c (Fmake_byte_code): Fix typo in comment.
* print.c (print_interval): Define as static to match prototype.
* indent.c (disptab_matches_widthtab, recompute_width_table):
Convert to eassert.
2012-10-16 Dmitry Antipov <dmantipov@yandex.ru>
* editfns.c (get_system_name): Remove.
* lisp.h (get_system_name): Remove prototype.
* xrdb.c (getenv, getpwuid, getpwnam): Remove prototypes.
(get_environ_db): Use Vsystem_name. Avoid call to strlen.
2012-10-15 Daniel Colascione <dancol@dancol.org>
* dbusbind.c: Add comment explaining reason for previous change.
2012-10-15 Martin Rudalics <rudalics@gmx.at>
* window.c (Fwindow_end): Rewrite check whether cached position
can be used (Bug#12600).
(resize_frame_windows, grow_mini_window, shrink_mini_window):
Set windows_or_buffers_changed.
2012-10-15 Daniel Colascione <dancol@dancol.org>
* dbusbind.c: Fix cygw32 build break when compiling with dbus
enabled by undefining the symbol "interface", which the platform
headers define to something incompatible.
2012-10-14 Daniel Colascione <dancol@dancol.org>
* image.c (init_tiff_functions, init_imagemagick_functions)
(init_svg_functions): Fix cygw32 build break by using these
functions only when WINDOWSNT _and_ HAVE_NTGUI.
2012-10-14 Jan Djärv <jan.h.d@swipnet.se>
* nsterm.m (ns_select): Count fd:s in writefs also (Bug#12422).
2012-10-13 Jan Djärv <jan.h.d@swipnet.se>
* gtkutil.c (xg_set_widget_bg): Divide by 65535 (Bug#12612).
@ -58,8 +110,7 @@
a file exists. This avoids expensive system calls on MS-Windows.
(Bug#12587)
* w32.c (init_environment): Call 'check_existing' instead of
'stat'.
* w32.c (init_environment): Call 'check_existing' instead of 'stat'.
* lread.c (openp) [WINDOWSNT]: Call 'access' instead of 'stat' to
determine whether a file exists and is not a directory.
@ -199,7 +250,7 @@
* nsfont.m (Vfonts_in_cache): Remove, not needed as font.c handles
caching.
(nsfont_open): Remove setting of Vfonts_in_cache.
(syms_of_nsfont): Remove initialization of Vfonts_in_cache
(syms_of_nsfont): Remove initialization of Vfonts_in_cache.
2012-10-09 Eli Zaretskii <eliz@gnu.org>
@ -266,7 +317,7 @@
* w32select.h (HAVE_W32SELECT): Remove.
* w32select.c, w32proc.c, w32menu.c, w32console.c, w32.c: Include
w32common.h instead of w32heap.h
w32common.h instead of w32heap.h.
* w32heap.h (ROUND_UP, ROUND_DOWN, get_page_size)
(get_allocation_unit, get_processor_type, get_w32_major_version)
@ -277,8 +328,8 @@
* w32heap.c: Include w32common.h.
(sysinfo_cache, syspage_mask, osinfo_cache, w32_major_version)
(w32_minor_version, w32_build_number, w32_subtype): Remove
duplicate definitions.
(w32_minor_version, w32_build_number, w32_subtype):
Remove duplicate definitions.
* w32fns.c: Include w32common.h; include w32heap.h only in
WINDOWSNT.
@ -389,7 +440,7 @@
Cygwin builds. Remove w32select declarations.
* w32console.c (w32_sys_ring_bell, Fset_message_beep): Move to
w32fns.c. w32console.c is WINDOWSNT-only.
w32fns.c. w32console.c is WINDOWSNT-only.
* w32fns.c: Include cygw32.h or w32.h depending on CYGWIN; more
NTGUI_UNICODE tweaks. (See above.) Change _snprintf to the more
@ -490,12 +541,12 @@
* nsterm.m (ns_in_resize): Remove (Bug#12479).
(ns_resize_handle_rect, mouseDown, mouseUp, mouseDragged): Remove.
(ns_clear_frame, sendEvent, windowDidResize, drawRect:): Remove
ns_in_resize check.
(ns_clear_frame, sendEvent, windowDidResize, drawRect:):
Remove ns_in_resize check.
(ns_clear_frame_area): Remove resize handle code.
* nsfns.m (ns_in_resize): Remove.
(x_set_icon_name, ns_set_name, ns_set_name_as_filename): Remove
(x_set_icon_name, ns_set_name, ns_set_name_as_filename): Remove
ns_in_resize check.
2012-10-07 Paul Eggert <eggert@cs.ucla.edu>
@ -524,7 +575,7 @@
(initFrameFromEmacs:): tbar_height renamed tibar_height.
(windowDidEnterFullScreen:): Toggle toolbar for fullscreen to fix
error in drawing background.
(toggleFullScreen:): Remove comment. Rearrange calls.
(toggleFullScreen:): Remove comment. Rearrange calls.
Set toolbar values to zero, save old height in tobar_height.
Restore tool bar height when leaving fullscreen.
(canBecomeMainWindow): New function.
@ -538,8 +589,8 @@
* w32proc.c (stop_timer_thread): Fix declaration of 'err'.
* w32.c (utime): Open the file with FILE_FLAG_BACKUP_SEMANTICS, so
that time stamps of directories could also be changed. Don't
request the too broad GENERIC_WRITE, only the more restrictive
that time stamps of directories could also be changed.
Don't request the too broad GENERIC_WRITE, only the more restrictive
FILE_WRITE_ATTRIBUTES access rights.
* fileio.c (Fset_file_times): Special-case ignoring errors for
@ -947,7 +998,7 @@
Call setCollectionBehavior if NEW_STYLE_FS. Initialize bwidth and
tbar_height.
(windowWillUseStandardFrame:defaultFrame:): Update frame parameter
fullscreen. Set maximized_width/height. Act on next_maximized.
fullscreen. Set maximized_width/height. Act on next_maximized.
* nsterm.h (MAC_OS_X_VERSION_10_7, MAC_OS_X_VERSION_10_8): New.
(EmacsView): Add variables for fullscreen.
@ -1603,7 +1654,7 @@
2012-09-19 Paul Eggert <eggert@cs.ucla.edu>
* w32inevt.c (w32_console_read_socket): Return -1 on failure, not 0.
Ignore 'expected'. See Eli Zaretskii in
Ignore 'expected'. See Eli Zaretskii in
<http://bugs.gnu.org/12471#8> (last line).
* frame.c (read_integer): Remove. All uses replaced by strtol/strtoul.
@ -1670,7 +1721,7 @@
(bytes_used_when_full, emacs_blocked_free, emacs_blocked_malloc)
(emacs_blocked_realloc, reset_malloc_hooks, uninterrupt_malloc):
[!SYSTEM_MALLOC && !SYNC_INPUT]:
Remove. All uses removed.
Remove. All uses removed.
(MALLOC_BLOCK_INPUT, MALLOC_UNBLOCK_INPUT): Use a different
implementation, one that depends on whether the new macro
XMALLOC_BLOCK_INPUT_CHECK is defined, not on whether SYNC_INPUT
@ -1960,7 +2011,7 @@
* alloc.c (discard_killed_buffers): New function.
(mark_object): Use it for deleted windows and frames.
(mark_object): If symbol's value is set up for a killed buffer
or deleted frame, restore it's global binding.
or deleted frame, restore its global binding.
* data.c (swap_in_global_binding): Add GC notice.
(swap_in_symval_forwarding): Use convenient set_blv_where.
* window.c (wset_next_buffers, wset_prev_buffers): Move ...
@ -4267,7 +4318,7 @@
* nsterm.m (ns_set_vertical_scroll_bar, ns_redeem_scroll_bar)
(EmacsWindow-accessibilityAttributeValue, EmacsScroller-initFrame:)
(EmacsScroller-dealloc): Adjust to use WVAR. (Bug#12114)
(EmacsScroller-dealloc): Adjust to use WVAR. (Bug#12114)
* nsfns.m (ns_set_name_as_filename): Likewise.
* nsmenu.m (ns_update_menubar): Likewise.
* nsselect.m (symbol_to_nsstring): Adjust to use SVAR.
@ -6363,7 +6414,7 @@
Fix block vector allocation code to allow VECTOR_BLOCK_SIZE
values which aren't power of 2.
* alloc.c (VECTOR_FREE_LIST_SIZE_MASK): New macro.
Verify it's value and the value of VECTOR_BLOCK_SIZE. Adjust users
Verify its value and the value of VECTOR_BLOCK_SIZE. Adjust users
accordingly.
2012-07-03 Stefan Monnier <monnier@iro.umontreal.ca>
@ -7532,7 +7583,7 @@
bitfields where appropriate, remove unused fields.
* window.h (struct window): Remove unused 'last_mark_x' and
'last_mark_y' fields. Rename 'mini_p' field to 'mini',
change it's type from Lisp_Object to bitfield.
change its type from Lisp_Object to bitfield.
Change type of 'force_start', 'optional_new_start',
'last_had_star', 'update_mode_line' and 'start_at_line_beg'
fields from Lisp_Object to bitfield. Adjust users accordingly.

View file

@ -3100,7 +3100,7 @@ usage: (make-byte-code ARGLIST BYTE-CODE CONSTANTS DEPTH &optional DOCSTRING INT
ptrdiff_t i;
register struct Lisp_Vector *p;
/* We used to purecopy everything here, if purify-flga was set. This worked
/* We used to purecopy everything here, if purify-flag was set. This worked
OK for Emacs-23, but with Emacs-24's lexical binding code, it can be
dangerous, since make-byte-code is used during execution to build
closures, so any closure built during the preload phase would end up

View file

@ -1663,18 +1663,11 @@ No argument or nil as argument means do this for the current buffer. */)
void
compact_buffer (struct buffer *buffer)
{
/* Verify indirection counters. */
if (buffer->base_buffer)
{
eassert (buffer->indirections == -1);
eassert (buffer->base_buffer->indirections > 0);
}
else
eassert (buffer->indirections >= 0);
BUFFER_CHECK_INDIRECTION (buffer);
/* Skip dead buffers, indirect buffers and buffers
which aren't changed since last compaction. */
if (!NILP (buffer->INTERNAL_FIELD (name))
if (BUFFER_LIVE_P (buffer)
&& (buffer->base_buffer == NULL)
&& (buffer->text->compact != buffer->text->modiff))
{
@ -1888,19 +1881,20 @@ cleaning up all windows currently displaying the buffer to be killed. */)
if (b->base_buffer)
{
{ /* Unchain all markers that belong to this indirect buffer.
Don't unchain the markers that belong to the base buffer
or its other indirect buffers. */
struct Lisp_Marker **mp;
for (mp = &BUF_MARKERS (b); *mp; )
{
struct Lisp_Marker *m = *mp;
if (m->buffer == b)
/* Unchain all markers that belong to this indirect buffer.
Don't unchain the markers that belong to the base buffer
or its other indirect buffers. */
struct Lisp_Marker **mp = &BUF_MARKERS (b);
while ((m = *mp))
{
if (m->buffer == b)
{
m->buffer = NULL;
*mp = m->next;
else
mp = &m->next;
}
}
}
else
mp = &m->next;
}
}
else
{
@ -2114,6 +2108,8 @@ set_buffer_internal_1 (register struct buffer *b)
if (current_buffer == b)
return;
BUFFER_CHECK_INDIRECTION (b);
old_buf = current_buffer;
current_buffer = b;
last_known_column_point = -1; /* invalidate indentation cache */

View file

@ -963,6 +963,22 @@ bset_width_table (struct buffer *b, Lisp_Object val)
#define BUFFER_LIVE_P(b) (!NILP (BVAR (b, name)))
/* Verify indirection counters. */
#define BUFFER_CHECK_INDIRECTION(b) \
do { \
if (BUFFER_LIVE_P (b)) \
{ \
if (b->base_buffer) \
{ \
eassert (b->indirections == -1); \
eassert (b->base_buffer->indirections > 0); \
} \
else \
eassert (b->indirections >= 0); \
} \
} while (0)
/* Chain of all buffers, including killed ones. */
extern struct buffer *all_buffers;

View file

@ -32,6 +32,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define DBUS_NUM_MESSAGE_TYPES 5
#endif
/* Some platforms define the symbol "interface", but we want to use it
* as a variable name below. */
#ifdef interface
#undef interface
#endif
/* Subroutines. */
static Lisp_Object Qdbus_init_bus;

View file

@ -1339,15 +1339,6 @@ DEFUN ("system-name", Fsystem_name, Ssystem_name, 0, 0, 0,
return Vsystem_name;
}
const char *
get_system_name (void)
{
if (STRINGP (Vsystem_name))
return SSDATA (Vsystem_name);
else
return "";
}
DEFUN ("emacs-pid", Femacs_pid, Semacs_pid, 0, 0, 0,
doc: /* Return the process ID of Emacs, as a number. */)
(void)

View file

@ -6577,7 +6577,7 @@ static const struct image_keyword tiff_format[TIFF_LAST] =
{":index", IMAGE_NON_NEGATIVE_INTEGER_VALUE, 0}
};
#ifdef HAVE_NTGUI
#if defined HAVE_NTGUI && defined WINDOWSNT
static bool init_tiff_functions (void);
#else
#define init_tiff_functions NULL
@ -7529,7 +7529,7 @@ static struct image_keyword imagemagick_format[IMAGEMAGICK_LAST] =
{":crop", IMAGE_DONT_CHECK_VALUE_TYPE, 0}
};
#ifdef HAVE_NTGUI
#if defined HAVE_NTGUI && defined WINDOWSNT
static bool init_imagemagick_functions (void);
#else
#define init_imagemagick_functions NULL
@ -8083,7 +8083,7 @@ static const struct image_keyword svg_format[SVG_LAST] =
{":background", IMAGE_STRING_OR_NIL_VALUE, 0}
};
#ifdef HAVE_NTGUI
#if defined HAVE_NTGUI && defined WINDOWSNT
static bool init_svg_functions (void);
#else
#define init_svg_functions NULL

View file

@ -119,8 +119,7 @@ disptab_matches_widthtab (struct Lisp_Char_Table *disptab, struct Lisp_Vector *w
{
int i;
if (widthtab->header.size != 256)
emacs_abort ();
eassert (widthtab->header.size == 256);
for (i = 0; i < 256; i++)
if (character_width (i, disptab)
@ -141,8 +140,7 @@ recompute_width_table (struct buffer *buf, struct Lisp_Char_Table *disptab)
if (!VECTORP (BVAR (buf, width_table)))
bset_width_table (buf, Fmake_vector (make_number (256), make_number (0)));
widthtab = XVECTOR (BVAR (buf, width_table));
if (widthtab->header.size != 256)
emacs_abort ();
eassert (widthtab->header.size == 256);
for (i = 0; i < 256; i++)
XSETFASTINT (widthtab->contents[i], character_width (i, disptab));

View file

@ -3127,7 +3127,6 @@ extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, bool);
extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t,
ptrdiff_t, bool);
extern void init_editfns (void);
const char *get_system_name (void);
extern void syms_of_editfns (void);
extern void set_time_zone_rule (const char *);

View file

@ -3444,7 +3444,10 @@ overwriting cursor (usually when cursor on a tab) */
/* NSTRACE (ns_select); */
for (k = 0; readfds && k < nfds+1; k++)
if (FD_ISSET(k, readfds)) ++nr;
{
if (FD_ISSET(k, readfds)) ++nr;
if (FD_ISSET(k, writefds)) ++nr;
}
if (NSApp == nil
|| (timeout && timeout->tv_sec == 0 && timeout->tv_nsec == 0))

View file

@ -2075,7 +2075,7 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
/* Print a description of INTERVAL using PRINTCHARFUN.
This is part of printing a string that has text properties. */
void
static void
print_interval (INTERVAL interval, Lisp_Object printcharfun)
{
if (NILP (interval->plist))

View file

@ -1464,9 +1464,7 @@ if it isn't already recorded. */)
#endif
if (! NILP (update)
&& ! (! NILP (w->window_end_valid)
&& w->last_modified >= BUF_MODIFF (b)
&& w->last_overlay_modified >= BUF_OVERLAY_MODIFF (b))
&& (windows_or_buffers_changed || NILP (w->window_end_valid))
&& !noninteractive)
{
struct text_pos startp;
@ -3795,6 +3793,8 @@ resize_frame_windows (struct frame *f, int size, int horflag)
(m, make_number (XINT (r->top_line) + XINT (r->total_lines)));
}
}
windows_or_buffers_changed++;
}
@ -4208,6 +4208,7 @@ grow_mini_window (struct window *w, int delta)
w->last_modified = 0;
w->last_overlay_modified = 0;
windows_or_buffers_changed++;
adjust_glyphs (f);
unblock_input ();
}
@ -4245,6 +4246,7 @@ shrink_mini_window (struct window *w)
w->last_modified = 0;
w->last_overlay_modified = 0;
windows_or_buffers_changed++;
adjust_glyphs (f);
unblock_input ();
}

View file

@ -24,7 +24,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <unistd.h>
#include <errno.h>
#include <epaths.h>
#include <stdlib.h>
#include <stdio.h>
#include "lisp.h"
@ -48,11 +48,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "keyboard.h"
#endif
extern char *getenv (const char *);
extern struct passwd *getpwuid (uid_t);
extern struct passwd *getpwnam (const char *);
char *x_get_string_resource (XrmDatabase rdb, const char *name,
const char *class);
static int file_p (const char *filename);
@ -429,8 +424,9 @@ get_environ_db (void)
{
static char const xdefaults[] = ".Xdefaults-";
char *home = gethomedir ();
char const *host = get_system_name ();
ptrdiff_t pathsize = strlen (home) + sizeof xdefaults + strlen (host);
char const *host = SSDATA (Vsystem_name);
ptrdiff_t pathsize = (strlen (home) + sizeof xdefaults
+ SBYTES (Vsystem_name));
path = xrealloc (home, pathsize);
strcat (strcat (path, xdefaults), host);
p = path;