mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-08 15:35:02 +00:00
Merge from emacs-24; up to 2014-07-02T00:57:53Z!juri@jurta.org
This commit is contained in:
commit
6d26235315
@ -92,6 +92,7 @@ files.")
|
||||
("Joseph Arceneaux" "Joe Arceneaux")
|
||||
("Joseph M. Kelsey" "Joe Kelsey") ; FIXME ?
|
||||
("Juan León Lahoz García" "Juan-Leon Lahoz Garcia")
|
||||
("Jürgen Hötzel" "Juergen Hoetzel")
|
||||
("K. Shane Hartman" "Shane Hartman")
|
||||
("Kai Großjohann" "Kai Grossjohann")
|
||||
("Karl Berry" "K. Berry")
|
||||
|
@ -1,3 +1,8 @@
|
||||
2014-08-28 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* display.texi (Bidirectional Display): Update the Emacs's class
|
||||
of bidirectional conformance.
|
||||
|
||||
2014-08-27 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
* eval.texi (Eval): Mention possible recovery from stack overflow.
|
||||
|
@ -6551,8 +6551,10 @@ positions do not increase monotonically with string or buffer
|
||||
position. In performing this @dfn{bidirectional reordering}, Emacs
|
||||
follows the Unicode Bidirectional Algorithm (a.k.a.@: @acronym{UBA}),
|
||||
which is described in Annex #9 of the Unicode standard
|
||||
(@url{http://www.unicode.org/reports/tr9/}). Emacs provides a ``Full
|
||||
Bidirectionality'' class implementation of the @acronym{UBA}.
|
||||
(@url{http://www.unicode.org/reports/tr9/}). Emacs currently provides
|
||||
a ``Non-isolate Bidirectionality'' class implementation of the
|
||||
@acronym{UBA}: it does not yet support the isolate directional
|
||||
formatting characters introduced with Unicode Standard v6.3.0.
|
||||
|
||||
@defvar bidi-display-reordering
|
||||
If the value of this buffer-local variable is non-@code{nil} (the
|
||||
|
@ -1,3 +1,7 @@
|
||||
2014-08-28 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* emacs.appdata.xml: New file; description from Emacs's homepage.
|
||||
|
||||
2014-08-25 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* NEWS: Mention that string-collate-* functions are supported on
|
||||
|
33
etc/emacs.appdata.xml
Normal file
33
etc/emacs.appdata.xml
Normal file
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2014 Free Software Foundation, Inc. -->
|
||||
<application>
|
||||
<id type="desktop">emacs.desktop</id>
|
||||
<metadata_license>GFDL-1.3</metadata_license>
|
||||
<!-- It is GFDL-1.3+, but appdata-validate complains... -->
|
||||
<project_license>GPL-3.0+ and GFDL-1.3</project_license>
|
||||
<name>GNU Emacs</name>
|
||||
<summary>An extensible text editor</summary>
|
||||
<description>
|
||||
<p>
|
||||
GNU Emacs is an extensible, customizable text editor - and more.
|
||||
At its core is an interpreter for Emacs Lisp, a dialect of the Lisp
|
||||
programming language with extensions to support text editing.
|
||||
</p>
|
||||
<p>The features of GNU Emacs include:</p>
|
||||
<ul>
|
||||
<li>Content-sensitive editing modes, including syntax coloring, for
|
||||
a wide-range of file types</li>
|
||||
<li>Complete built-in documentation, including a tutorial for new users</li>
|
||||
<li>Full Unicode support for nearly all human languages and their scripts</li>
|
||||
<li>Highly customizable, using Emacs Lisp code or a graphical interface</li>
|
||||
<li>Includes a project planner, mail and news reader, debugger
|
||||
interface, calendar, and more</li>
|
||||
</ul>
|
||||
</description>
|
||||
<screenshots>
|
||||
<screenshot type="default" width="632" height="354">http://www.gnu.org/software/emacs/images/appdata.png</screenshot>
|
||||
</screenshots>
|
||||
<url type="homepage">http://www.gnu.org/software/emacs</url>
|
||||
<updatecontact>emacs-devel_at_gnu.org</updatecontact>
|
||||
<project_group>GNU</project_group>
|
||||
</application>
|
@ -1,3 +1,26 @@
|
||||
2014-08-28 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* emacs-lisp/authors.el (authors-aliases): Addition.
|
||||
|
||||
* net/tramp-adb.el: Spell author name correctly.
|
||||
|
||||
2014-08-28 João Távora <joaotavora@gmail.com>
|
||||
|
||||
* net/shr.el (shr-expand-url): Plain expand-file-name is not enough;
|
||||
use url-expand-file-name. (Bug#18310)
|
||||
|
||||
2014-08-28 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* emulation/cua-rect.el (cua--highlight-rectangle):
|
||||
Avoid error at point-min. (Bug#18309)
|
||||
|
||||
2014-08-28 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* progmodes/python.el (python-shell-prompt-detect): Remove redundant
|
||||
executable-find (bug#18244).
|
||||
|
||||
* simple.el (self-insert-uses-region-functions): Defvar.
|
||||
|
||||
2014-08-28 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* subr.el (remq): Revert 2014-08-25 doc change (not always true).
|
||||
|
@ -794,7 +794,7 @@ If command is repeated at same position, delete the rectangle."
|
||||
(make-string
|
||||
(- l cl0 (if (and (= le pl) (/= le lb)) 1 0))
|
||||
(if cua--virtual-edges-debug ?. ?\s))
|
||||
'face (or (get-text-property (1- s) 'face) 'default)))
|
||||
'face (or (get-text-property (max (1- s) (point-min)) 'face) 'default)))
|
||||
(if (/= pl le)
|
||||
(setq s (1- s))))
|
||||
(cond
|
||||
|
@ -589,6 +589,10 @@ size, and full-buffer size."
|
||||
(url-type parsed)
|
||||
url)))
|
||||
|
||||
(autoload 'url-expand-file-name "url-expand")
|
||||
|
||||
;; FIXME This needs some tests writing.
|
||||
;; Does it even need to exist, given that url-expand-file-name does?
|
||||
(defun shr-expand-url (url &optional base)
|
||||
(setq base
|
||||
(if base
|
||||
@ -614,7 +618,7 @@ size, and full-buffer size."
|
||||
(concat (nth 3 base) url))
|
||||
(t
|
||||
;; Totally relative.
|
||||
(concat (car base) (expand-file-name url (cadr base))))))
|
||||
(url-expand-file-name url (concat (car base) (cadr base))))))
|
||||
|
||||
(defun shr-ensure-newline ()
|
||||
(unless (zerop (current-column))
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
;; Copyright (C) 2011-2014 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Juergen Hoetzel <juergen@archlinux.org>
|
||||
;; Author: Jürgen Hötzel <juergen@archlinux.org>
|
||||
;; Keywords: comm, processes
|
||||
;; Package: tramp
|
||||
|
||||
|
@ -1905,7 +1905,7 @@ detection and just returns nil."
|
||||
(let ((code-file (python-shell--save-temp-file code)))
|
||||
;; Use `process-file' as it is remote-host friendly.
|
||||
(process-file
|
||||
(executable-find python-shell-interpreter)
|
||||
python-shell-interpreter
|
||||
code-file
|
||||
'(t nil)
|
||||
nil
|
||||
@ -2061,11 +2061,14 @@ uniqueness for different types of configurations."
|
||||
(or python-shell-virtualenv-path "")
|
||||
(mapconcat #'identity python-shell-exec-path "")))))
|
||||
|
||||
(defun python-shell-parse-command ()
|
||||
(defun python-shell-parse-command () ;FIXME: why name it "parse"?
|
||||
"Calculate the string used to execute the inferior Python process."
|
||||
;; FIXME: process-environment doesn't seem to be used anywhere within
|
||||
;; this let.
|
||||
(let ((process-environment (python-shell-calculate-process-environment))
|
||||
(exec-path (python-shell-calculate-exec-path)))
|
||||
(format "%s %s"
|
||||
;; FIXME: Why executable-find?
|
||||
(executable-find python-shell-interpreter)
|
||||
python-shell-interpreter-args)))
|
||||
|
||||
@ -2101,11 +2104,10 @@ uniqueness for different types of configurations."
|
||||
(defun python-shell-calculate-exec-path ()
|
||||
"Calculate exec path given `python-shell-virtualenv-path'."
|
||||
(let ((path (append python-shell-exec-path
|
||||
exec-path nil)))
|
||||
exec-path nil))) ;FIXME: Why nil?
|
||||
(if (not python-shell-virtualenv-path)
|
||||
path
|
||||
(cons (format "%s/bin"
|
||||
(directory-file-name python-shell-virtualenv-path))
|
||||
(cons (expand-file-name "bin" python-shell-virtualenv-path)
|
||||
path))))
|
||||
|
||||
(defvar python-shell--package-depth 10)
|
||||
|
@ -374,6 +374,13 @@ Other major modes are defined by comparison with this one."
|
||||
|
||||
;; Making and deleting lines.
|
||||
|
||||
(defvar self-insert-uses-region-functions nil
|
||||
"Special hook to tell if `self-insert-command' will use the region.
|
||||
It must be called via `run-hook-with-args-until-success' with no arguments.
|
||||
Any `post-self-insert-command' which consumes the region should
|
||||
register a function on this hook so that things like `delete-selection-mode'
|
||||
can refrain from consuming the region.")
|
||||
|
||||
(defvar hard-newline (propertize "\n" 'hard t 'rear-nonsticky '(hard))
|
||||
"Propertized string representing a hard newline character.")
|
||||
|
||||
|
@ -1,3 +1,13 @@
|
||||
2014-08-28 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* sedlibmk.inp (gl_LIBOBJS): Add execinfo.o. Reported by Juan
|
||||
Manuel Guerrero <juan.guerrero@gmx.de>.
|
||||
|
||||
* sed2v2.inp [DJGPP <= 2.03]: Add a prototype for snprintf, to
|
||||
avoid compilation warning from newer GCC versions that have
|
||||
snprintf as a built-in. Reported by Juan Manuel Guerrero
|
||||
<juan.guerrero@gmx.de>.
|
||||
|
||||
2014-08-09 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* INSTALL: Fix last change.
|
||||
|
@ -127,6 +127,8 @@ s/^#undef HAVE_STRTOULL *$/#define HAVE_STRTOULL 1/
|
||||
#define HAVE_SNPRINTF 1\
|
||||
#else\
|
||||
#undef HAVE_SNPRINTF\
|
||||
#include <sys/types.h>\
|
||||
extern int snprintf (char *__restrict, size_t, const char *__restrict, ...);\
|
||||
#endif
|
||||
s/^#undef PENDING_OUTPUT_N_BYTES *$/#define PENDING_OUTPUT_N_BYTES fp->_ptr - fp->_base/
|
||||
|
||||
|
@ -315,6 +315,7 @@ am__cd = cd
|
||||
/^BYTESWAP_H *=/s/@[^@\n]*@/byteswap.h/
|
||||
/^DIRENT_H *=/s/@[^@\n]*@//
|
||||
/^ERRNO_H *=/s/@[^@\n]*@//
|
||||
/^EXECINFO_H *=/s/@[^@\n]*@/execinfo.h/
|
||||
/^STDBOOL_H *=/s/@[^@\n]*@//
|
||||
/^STDALIGN_H *=/s/@[^@\n]*@/stdalign.h/
|
||||
/^STDARG_H *=/s/@[^@\n]*@//
|
||||
@ -333,7 +334,7 @@ am__cd = cd
|
||||
/am__append_[1-9][0-9]* *=.*gettext\.h/s/@[^@\n]*@/\#/
|
||||
/am__append_2 *=.*verify\.h/s/@[^@\n]*@//
|
||||
/^@gl_GNULIB_ENABLED_tempname_TRUE@/s/@[^@\n]*@//
|
||||
/^gl_LIBOBJS *=/s/@[^@\n]*@/getopt.o getopt1.o memrchr.o sig2str.o time_r.o getloadavg.o pthread_sigmask.o mkostemp.o fpending.o fdatasync.o/
|
||||
/^gl_LIBOBJS *=/s/@[^@\n]*@/getopt.o getopt1.o memrchr.o sig2str.o time_r.o getloadavg.o pthread_sigmask.o mkostemp.o fpending.o fdatasync.o execinfo.o/
|
||||
/^am__append_[1-9][0-9]* *=/,/^[^ ]/{
|
||||
s/ *inttypes\.h//
|
||||
s| *sys/select\.h||
|
||||
|
@ -1,3 +1,20 @@
|
||||
2014-08-28 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* conf_post.h (_GL_EXECINFO_INLINE) [MSDOS]: Don't define.
|
||||
|
||||
* indent.c (Fvertical_motion): Fix vertical motion up through a
|
||||
display property after a newline. (Bug#18276)
|
||||
|
||||
* xdisp.c (display_line): Don't assume that the call to
|
||||
reseat_at_next_visible_line_start ends up at a character
|
||||
immediately following the newline on the previous line. Avoids
|
||||
setting the ends_at_zv_p flag on screen lines that are not at or
|
||||
beyond ZV, which causes infloop in redisplay. For the details, see
|
||||
http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00368.html.
|
||||
|
||||
* dispnew.c (buffer_posn_from_coords): Fix mirroring of X
|
||||
coordinate for hscrolled R2L screen lines. (Bug#18277)
|
||||
|
||||
2014-08-28 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* sysdep.c (LC_COLLATE, LC_COLLATE_MASK): Give individual defaults
|
||||
|
@ -123,13 +123,6 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
|
||||
so we could reuse it in readlinkat; see msdos.c. */
|
||||
#define opendir sys_opendir
|
||||
|
||||
/* The "portable" definition of _GL_INLINE on config.h does not work
|
||||
with DJGPP GCC 3.4.4: it causes unresolved externals in sysdep.c,
|
||||
although lib/execinfo.h is included and the inline functions there
|
||||
are visible. */
|
||||
#if __GNUC__ < 4
|
||||
# define _GL_EXECINFO_INLINE inline
|
||||
#endif
|
||||
/* End of gnulib-related stuff. */
|
||||
|
||||
#define emacs_raise(sig) msdos_fatal_signal (sig)
|
||||
|
@ -5143,9 +5143,8 @@ buffer_posn_from_coords (struct window *w, int *x, int *y, struct display_pos *p
|
||||
move_it_to (&it, -1, 0, *y, -1, MOVE_TO_X | MOVE_TO_Y);
|
||||
|
||||
/* TO_X is the pixel position that the iterator will compute for the
|
||||
glyph at *X. We add it.first_visible_x because iterator
|
||||
positions include the hscroll. */
|
||||
to_x = x0 + it.first_visible_x;
|
||||
glyph at *X. */
|
||||
to_x = x0;
|
||||
if (it.bidi_it.paragraph_dir == R2L)
|
||||
/* For lines in an R2L paragraph, we need to mirror TO_X wrt the
|
||||
text area. This is because the iterator, even in R2L
|
||||
@ -5159,6 +5158,10 @@ buffer_posn_from_coords (struct window *w, int *x, int *y, struct display_pos *p
|
||||
it should be mirrored into zero pixel position.) */
|
||||
to_x = window_box_width (w, TEXT_AREA) - to_x - 1;
|
||||
|
||||
/* We need to add it.first_visible_x because iterator positions
|
||||
include the hscroll. */
|
||||
to_x += it.first_visible_x;
|
||||
|
||||
/* Now move horizontally in the row to the glyph under *X. Second
|
||||
argument is ZV to prevent move_it_in_display_line from matching
|
||||
based on buffer positions. */
|
||||
|
31
src/indent.c
31
src/indent.c
@ -2004,6 +2004,8 @@ whether or not it is currently displayed in some window. */)
|
||||
int first_x;
|
||||
bool overshoot_handled = 0;
|
||||
bool disp_string_at_start_p = 0;
|
||||
ptrdiff_t nlines = XINT (lines);
|
||||
int vpos_init = 0;
|
||||
|
||||
itdata = bidi_shelve_cache ();
|
||||
SET_TEXT_POS (pt, PT, PT_BYTE);
|
||||
@ -2093,18 +2095,31 @@ whether or not it is currently displayed in some window. */)
|
||||
|
||||
overshoot_handled = 1;
|
||||
}
|
||||
if (XINT (lines) <= 0)
|
||||
else if (IT_CHARPOS (it) == PT - 1
|
||||
&& FETCH_BYTE (PT - 1) == '\n'
|
||||
&& nlines < 0)
|
||||
{
|
||||
it.vpos = 0;
|
||||
/* The position we started from was covered by a display
|
||||
property, so we moved to position before the string, and
|
||||
backed up one line, because the character at PT - 1 is a
|
||||
newline. So we need one less line to go up. */
|
||||
nlines++;
|
||||
/* But we still need to record that one line, in order to
|
||||
return the correct value to the caller. */
|
||||
vpos_init = -1;
|
||||
}
|
||||
if (nlines <= 0)
|
||||
{
|
||||
it.vpos = vpos_init;
|
||||
/* Do this even if LINES is 0, so that we move back to the
|
||||
beginning of the current line as we ought. */
|
||||
if (XINT (lines) == 0 || IT_CHARPOS (it) > 0)
|
||||
move_it_by_lines (&it, max (PTRDIFF_MIN, XINT (lines)));
|
||||
if (nlines == 0 || IT_CHARPOS (it) > 0)
|
||||
move_it_by_lines (&it, max (PTRDIFF_MIN, nlines));
|
||||
}
|
||||
else if (overshoot_handled)
|
||||
{
|
||||
it.vpos = 0;
|
||||
move_it_by_lines (&it, min (PTRDIFF_MAX, XINT (lines)));
|
||||
move_it_by_lines (&it, min (PTRDIFF_MAX, nlines));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2119,13 +2134,13 @@ whether or not it is currently displayed in some window. */)
|
||||
it.vpos = 0;
|
||||
move_it_by_lines (&it, 1);
|
||||
}
|
||||
if (XINT (lines) > 1)
|
||||
move_it_by_lines (&it, min (PTRDIFF_MAX, XINT (lines) - 1));
|
||||
if (nlines > 1)
|
||||
move_it_by_lines (&it, min (PTRDIFF_MAX, nlines - 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
it.vpos = 0;
|
||||
move_it_by_lines (&it, min (PTRDIFF_MAX, XINT (lines)));
|
||||
move_it_by_lines (&it, min (PTRDIFF_MAX, nlines));
|
||||
}
|
||||
}
|
||||
|
||||
|
53
src/xdisp.c
53
src/xdisp.c
@ -3413,6 +3413,48 @@ handle_stop (struct it *it)
|
||||
if (it->selective_display_ellipsis_p)
|
||||
it->saved_face_id = it->face_id;
|
||||
|
||||
/* Here's the description of the semantics of, and the logic behind,
|
||||
the various HANDLED_* statuses:
|
||||
|
||||
HANDLED_NORMALLY means the handler did its job, and the loop
|
||||
should proceed to calling the next handler in order.
|
||||
|
||||
HANDLED_RECOMPUTE_PROPS means the handler caused a significant
|
||||
change in the properties and overlays at current position, so the
|
||||
loop should be restarted, to re-invoke the handlers that were
|
||||
already called. This happens when fontification-functions were
|
||||
called by handle_fontified_prop, and actually fontified
|
||||
something. Another case where HANDLED_RECOMPUTE_PROPS is
|
||||
returned is when we discover overlay strings that need to be
|
||||
displayed right away. The loop below will continue for as long
|
||||
as the status is HANDLED_RECOMPUTE_PROPS.
|
||||
|
||||
HANDLED_RETURN means return immediately to the caller, to
|
||||
continue iteration without calling any further handlers. This is
|
||||
used when we need to act on some property right away, for example
|
||||
when we need to display the ellipsis or a replacing display
|
||||
property, such as display string or image.
|
||||
|
||||
HANDLED_OVERLAY_STRING_CONSUMED means an overlay string was just
|
||||
consumed, and the handler switched to the next overlay string.
|
||||
This signals the loop below to refrain from looking for more
|
||||
overlays before all the overlay strings of the current overlay
|
||||
are processed.
|
||||
|
||||
Some of the handlers called by the loop push the iterator state
|
||||
onto the stack (see 'push_it'), and arrange for the iteration to
|
||||
continue with another object, such as an image, a display string,
|
||||
or an overlay string. In most such cases, it->stop_charpos is
|
||||
set to the first character of the string, so that when the
|
||||
iteration resumes, this function will immediately be called
|
||||
again, to examine the properties at the beginning of the string.
|
||||
|
||||
When a display or overlay string is exhausted, the iterator state
|
||||
is popped (see 'pop_it'), and iteration continues with the
|
||||
previous object. Again, in many such cases this function is
|
||||
called again to find the next position where properties might
|
||||
change. */
|
||||
|
||||
do
|
||||
{
|
||||
handled = HANDLED_NORMALLY;
|
||||
@ -20621,10 +20663,15 @@ display_line (struct it *it)
|
||||
row->truncated_on_right_p = 1;
|
||||
it->continuation_lines_width = 0;
|
||||
reseat_at_next_visible_line_start (it, 0);
|
||||
if (IT_BYTEPOS (*it) <= BEG_BYTE)
|
||||
row->ends_at_zv_p = true;
|
||||
/* We insist below that IT's position be at ZV because in
|
||||
bidi-reordered lines the character at visible line start
|
||||
might not be the character that follows the newline in
|
||||
the logical order. */
|
||||
if (IT_BYTEPOS (*it) > BEG_BYTE)
|
||||
row->ends_at_zv_p =
|
||||
IT_BYTEPOS (*it) >= ZV_BYTE && FETCH_BYTE (ZV_BYTE - 1) != '\n';
|
||||
else
|
||||
row->ends_at_zv_p = FETCH_BYTE (IT_BYTEPOS (*it) - 1) != '\n';
|
||||
row->ends_at_zv_p = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
2014-08-28 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* automated/python-tests.el (python-shell-calculate-exec-path-2):
|
||||
Update test for today's python.el changes.
|
||||
|
||||
2014-08-13 Jan Nieuwenhuizen <janneke@gnu.org>
|
||||
|
||||
* automated/compile-tests.el (compile--test-error-line): Grok FILE
|
||||
|
@ -1753,7 +1753,7 @@ Using `python-shell-interpreter' and
|
||||
"Test `python-shell-exec-path' modification."
|
||||
(let* ((original-exec-path exec-path)
|
||||
(python-shell-virtualenv-path
|
||||
(directory-file-name user-emacs-directory))
|
||||
(directory-file-name (expand-file-name user-emacs-directory)))
|
||||
(exec-path (python-shell-calculate-exec-path)))
|
||||
(should (equal
|
||||
exec-path
|
||||
|
Loading…
Reference in New Issue
Block a user