Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
c7367d2d
Commit
c7367d2d
authored
Aug 10, 2014
by
Glenn Morris
Browse files
Options
Browse Files
Download
Plain Diff
Merge from emacs-24; up to 2014-06-28T23:35:17Z!rgm@gnu.org
parents
6b7d0775
f314e84f
Changes
20
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
323 additions
and
107 deletions
+323
-107
ChangeLog
ChangeLog
+13
-0
configure.ac
configure.ac
+1
-1
etc/tutorials/TUTORIAL.fr
etc/tutorials/TUTORIAL.fr
+2
-2
lib/save-cwd.c
lib/save-cwd.c
+87
-1
lib/save-cwd.h
lib/save-cwd.h
+14
-26
lisp/ChangeLog
lisp/ChangeLog
+40
-2
lisp/files.el
lisp/files.el
+2
-11
lisp/info.el
lisp/info.el
+2
-2
lisp/mouse.el
lisp/mouse.el
+13
-19
lisp/simple.el
lisp/simple.el
+3
-4
lisp/window.el
lisp/window.el
+15
-3
src/ChangeLog
src/ChangeLog
+30
-0
src/buffer.c
src/buffer.c
+3
-0
src/coding.c
src/coding.c
+3
-3
src/fileio.c
src/fileio.c
+11
-25
src/fontset.c
src/fontset.c
+4
-0
src/window.c
src/window.c
+56
-8
test/ChangeLog
test/ChangeLog
+6
-0
test/automated/data/files-bug18141.el.gz
test/automated/data/files-bug18141.el.gz
+0
-0
test/automated/files.el
test/automated/files.el
+18
-0
No files found.
ChangeLog
View file @
c7367d2d
2014-08-11 Paul Eggert <eggert@cs.ucla.edu>
Don't prevent random file systems from being unmounted (Bug#18232).
This fix relies on having the 'fchdir' function, and on having
"." be searchable (or at least readable, on platforms lacking O_SEARCH),
but that's good enough to handle the vast majority of cases and the
remaining folks can just live with the annoyance of file systems
that occasionally can't be unmounted.
* configure.ac (fchdir): New function to check for.
* lib/save-cwd.c: Copy from gnulib, except omit the part that
allocates memory, since that can cause problems in Emacs.
* lib/save-cwd.h: Copy from gnulib.
2014-08-10 Eli Zaretskii <eliz@gnu.org>
* config.bat: Fix some confusing wording.
...
...
configure.ac
View file @
c7367d2d
...
...
@@ -3547,7 +3547,7 @@ AC_SUBST(BLESSMAIL_TARGET)
OLD_LIBS=$LIBS
LIBS="$LIB_PTHREAD $LIB_MATH $LIBS"
AC_CHECK_FUNCS(accept4 gethostname \
AC_CHECK_FUNCS(accept4
fchdir
gethostname \
getrusage get_current_dir_name \
lrand48 random rint \
select getpagesize setlocale \
...
...
etc/tutorials/TUTORIAL.fr
View file @
c7367d2d
...
...
@@ -698,7 +698,7 @@ inquiétez pour les modifications que vous avez faites, C-x C-c vous
proposera de sauvegarder tous les fichiers modifiés avant de quitter
Emacs).
Si vous utilise
r
un affichage graphique, vous n'avez pas besoin de
Si vous utilise
z
un affichage graphique, vous n'avez pas besoin de
commande spéciale pour vous déplacer d'Emacs à une autre application.
Vous pouvez le faire à l'aide de la souris ou avec les commandes du
gestionnaire de fenêtres. Cependant, si vous utilisez un terminal
...
...
@@ -1143,7 +1143,7 @@ C-x C-f à côté de find-file).
>> Faites C-x 1 pour supprimer la fenêtre d'aide.
C-h i Manuels en ligne (alias Info). Cette commande vous place dans
un tampon spécial
e
, appelé « *info* », où vous pouvez
un tampon spécial, appelé « *info* », où vous pouvez
lire les manuels en ligne des paquetages installés sur
votre système. Faites m emacs <Entrée> pour lire le
manuel d'Emacs. Si vous n'avez jamais utilisé Info
...
...
lib/save-cwd.c
View file @
c7367d2d
/* save-cwd.c -- Save and restore current working directory.
Copyright (C) 1995, 1997-1998, 2003-2006, 2009-2014 Free Software
Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* Gnulib needs to save and restore the current working directory to
fully emulate functions like fstatat. But Emacs doesn't care what
the current working directory is; it always uses absolute file
names. This module replaces the Gnulib module by omitting the code
that Emacs does not need. */
#include <config.h>
#define SAVE_CWD_INLINE _GL_EXTERN_INLINE
#include "save-cwd.h"
#include <fcntl.h>
#include <unistd.h>
/* Record the location of the current working directory in CWD so that
the program may change to other directories and later use restore_cwd
to return to the recorded location. This function may allocate
space using malloc (via getcwd) or leave a file descriptor open;
use free_cwd to perform the necessary free or close. Upon failure,
no memory is allocated, any locally opened file descriptors are
closed; return non-zero -- in that case, free_cwd need not be
called, but doing so is ok. Otherwise, return zero.
The _raison d'etre_ for this interface is that the working directory
is sometimes inaccessible, and getcwd is not robust or as efficient.
So, we prefer to use the open/fchdir approach, but fall back on
getcwd if necessary. This module works for most cases with just
the getcwd-lgpl module, but to be truly robust, use the getcwd module.
Some systems lack fchdir altogether: e.g., OS/2, pre-2001 Cygwin,
SCO Xenix. Also, SunOS 4 and Irix 5.3 provide the function, yet it
doesn't work for partitions on which auditing is enabled. If
you're still using an obsolete system with these problems, please
send email to the maintainer of this code. */
#if !defined HAVE_FCHDIR && !defined fchdir
# define fchdir(fd) (-1)
#endif
int
save_cwd
(
struct
saved_cwd
*
cwd
)
{
cwd
->
desc
=
open
(
"."
,
O_SEARCH
|
O_CLOEXEC
);
/* The 'name' member is present only to minimize differences from
gnulib. Initialize it to zero, if only to simplify debugging. */
cwd
->
name
=
0
;
return
0
;
}
/* Change to recorded location, CWD, in directory hierarchy.
Upon failure, return -1 (errno is set by chdir or fchdir).
Upon success, return zero. */
int
restore_cwd
(
const
struct
saved_cwd
*
cwd
)
{
/* Restore the previous directory if possible, to avoid tying down
the file system of the new directory (Bug#18232).
Don't worry if fchdir fails, as Emacs doesn't care what the
working directory is. The fchdir call is inside an 'if' merely to
pacify compilers that complain if fchdir's return value is ignored. */
if
(
fchdir
(
cwd
->
desc
)
==
0
)
return
0
;
return
0
;
}
void
free_cwd
(
struct
saved_cwd
*
cwd
)
{
close
(
cwd
->
desc
);
}
lib/save-cwd.h
View file @
c7367d2d
/*
Do not s
ave and restore
the
current working directory.
/*
S
ave and restore current working directory.
Copyright 2013-2014 Free Software Foundation, Inc.
Copyright (C) 1995, 1997-1998, 2003, 2009-2014 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
...
...
@@ -15,32 +16,19 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* Gnulib needs to save and restore the current working directory to
fully emulate functions like fstatat. But Emacs doesn't care what
the current working directory is; it always uses absolute file
names. This module replaces the Gnulib module by omitting the code
that Emacs does not need. */
/* Written by Jim Meyering. */
#ifndef SAVE_CWD_H
#define SAVE_CWD_H 1
#
define SAVE_CWD_H 1
_GL_INLINE_HEADER_BEGIN
#ifndef SAVE_CWD_INLINE
# define SAVE_CWD_INLINE _GL_INLINE
#endif
struct
saved_cwd
{
int
desc
;
char
*
name
;
};
struct
saved_cwd
{
int
desc
;
};
int
save_cwd
(
struct
saved_cwd
*
cwd
);
int
restore_cwd
(
const
struct
saved_cwd
*
cwd
);
void
free_cwd
(
struct
saved_cwd
*
cwd
);
SAVE_CWD_INLINE
int
save_cwd
(
struct
saved_cwd
*
cwd
)
{
cwd
->
desc
=
-
1
;
return
0
;
}
SAVE_CWD_INLINE
int
restore_cwd
(
struct
saved_cwd
const
*
cwd
)
{
return
0
;
}
SAVE_CWD_INLINE
void
free_cwd
(
struct
saved_cwd
*
cwd
)
{
}
_GL_INLINE_HEADER_END
#endif
#endif
/* SAVE_CWD_H */
lisp/ChangeLog
View file @
c7367d2d
2014-08-11 Glenn Morris <rgm@gnu.org>
* files.el (basic-save-buffer-2): Revert 2013-01-31 change, which
chose coding system for writing before backing up, since it causes
a more serious problem than the one it solves. (Closes Bug#18141,
reopens Bug#13522.)
2014-08-11 Martin Rudalics <rudalics@gmx.at>
* window.el (window-total-size): Make doc-string more self-contained.
* window.el (display-buffer-below-selected): Restore original
behavior if buffer is already displayed in the window below the
selected one (Bug#18181).
2014-08-11 Stefan Monnier <monnier@iro.umontreal.ca>
* mouse.el (mouse--down-1-maybe-follows-link): Don't convert the down
event (bug#18212).
2014-08-11 Eli Zaretskii <eliz@gnu.org>
* info.el (info): Doc fix.
2014-08-11 Stefan Monnier <monnier@iro.umontreal.ca>
* info.el (Info-mode-map): Override a global down-mouse-2 binding
(bug#18212).
2014-08-11 Eli Zaretskii <eliz@gnu.org>
* simple.el (default-line-height): A floating-point value of
line-spacing means a fraction of the default frame font's height,
not of the font currently used by the 'default' face.
Truncate the pixel value, like the display engine does.
(window-screen-lines): Use window-inside-pixel-edges for
determining the window height in pixels. (Bug#18195)
2014-08-11 Grégoire Jadi <daimrod@gmail.com>
* leim/quail/latin-post.el: Transform " __" into " _". (Bug#18023)
...
...
@@ -462,8 +500,8 @@
(python-shell-output-filter): Fix comment typo.
Fix Python shell prompts detection for remote hosts.
* progmodes/python.el (python-shell-prompt-detect):
Replace
call-process with process-file and make it more robust.
* progmodes/python.el (python-shell-prompt-detect):
Replace
call-process with process-file and make it more robust.
Autodetect Python shell prompts. (Bug#17370)
* progmodes/python.el:
...
...
lisp/files.el
View file @
c7367d2d
...
...
@@ -4759,7 +4759,7 @@ Before and after saving the buffer, this function runs
;; This returns a value (MODES EXTENDED-ATTRIBUTES BACKUPNAME), like
;; backup-buffer.
(
defun
basic-save-buffer-2
()
(
let
(
tempsetmodes
setmodes
writecoding
)
(
let
(
tempsetmodes
setmodes
)
(
if
(
not
(
file-writable-p
buffer-file-name
))
(
let
((
dir
(
file-name-directory
buffer-file-name
)))
(
if
(
not
(
file-directory-p
dir
))
...
...
@@ -4775,14 +4775,6 @@ Before and after saving the buffer, this function runs
buffer-file-name
)))
(
setq
tempsetmodes
t
)
(
error
"Attempt to save to a file which you aren't allowed to write"
))))))
;; This may involve prompting, so do it now before backing up the file.
;; Otherwise there can be a delay while the user answers the
;; prompt during which the original file has been renamed. (Bug#13522)
(
setq
writecoding
;; Args here should match write-region call below around
;; which we use writecoding.
(
choose-write-coding-system
nil
nil
buffer-file-name
nil
t
buffer-file-truename
))
(
or
buffer-backed-up
(
setq
setmodes
(
backup-buffer
)))
(
let*
((
dir
(
file-name-directory
buffer-file-name
))
...
...
@@ -4864,11 +4856,10 @@ Before and after saving the buffer, this function runs
(
logior
(
car
setmodes
)
128
))))))
(
let
(
success
)
(
unwind-protect
(
progn
;; Pass in nil&nil rather than point-min&max to indicate
;; we're saving the buffer rather than just a region.
;; write-region-annotate-functions may make us of it.
(
let
((
coding-system-for-write
writecoding
)
(
coding-system-require-warning
nil
))
(
write-region
nil
nil
buffer-file-name
nil
t
buffer-file-truename
)
(
setq
success
t
))
...
...
lisp/info.el
View file @
c7367d2d
...
...
@@ -774,8 +774,7 @@ with the top-level Info directory.
In interactive use, a non-numeric prefix argument directs
this command to read a file name from the minibuffer.
A numeric prefix argument N selects an Info buffer named
\"*info*<%s>\".
A numeric prefix argument of N selects an Info buffer named \"*info*<N>\".
The search path for Info files is in the variable `Info-directory-list'.
The top-level Info directory is made by combining all the files named `dir'
...
...
@@ -4009,6 +4008,7 @@ If FORK is non-nil, it is passed to `Info-goto-node'."
(
define-key
map
","
'Info-index-next
)
(
define-key
map
"\177"
'Info-scroll-down
)
(
define-key
map
[mouse-2]
'Info-mouse-follow-nearest-node
)
(
define-key
map
[down-mouse-2]
'ignore
)
;Override potential global binding.
(
define-key
map
[follow-link]
'mouse-face
)
(
define-key
map
[XF86Back]
'Info-history-back
)
(
define-key
map
[XF86Forward]
'Info-history-forward
)
...
...
lisp/mouse.el
View file @
c7367d2d
...
...
@@ -94,15 +94,14 @@ point at the click position."
(
defun
mouse--down-1-maybe-follows-link
(
&optional
_prompt
)
"Turn `mouse-1' events into `mouse-2' events if follows-link.
Expects to be bound to `down-mouse-1' in `key-translation-map'."
(
if
(
or
(
null
mouse-1-click-follows-link
)
(
not
(
eq
(
if
(
eq
mouse-1-click-follows-link
'double
)
(
when
(
and
mouse-1-click-follows-link
(
eq
(
if
(
eq
mouse-1-click-follows-link
'double
)
'double-down-mouse-1
'down-mouse-1
)
(
car-safe
last-input-event
)))
(
not
(
mouse-on-link-p
(
event-start
last-input-event
)))
(
and
(
not
mouse-1-click-in-non-selected-windows
)
(
not
(
eq
(
selected-window
)
(
posn-window
(
event-start
last-input-event
))))))
nil
(
car-safe
last-input-event
))
(
mouse-on-link-p
(
event-start
last-input-event
))
(
or
mouse-1-click-in-non-selected-windows
(
eq
(
selected-window
)
(
posn-window
(
event-start
last-input-event
)))))
(
let
((
this-event
last-input-event
)
(
timedout
(
sit-for
(
if
(
numberp
mouse-1-click-follows-link
)
...
...
@@ -118,19 +117,14 @@ Expects to be bound to `down-mouse-1' in `key-translation-map'."
'double-mouse-1
'mouse-1
))
;; Turn the mouse-1 into a mouse-2 to follow links.
(
let
((
newup
(
if
(
eq
mouse-1-click-follows-link
'double
)
'double-mouse-2
'mouse-2
))
(
newdown
(
if
(
eq
mouse-1-click-follows-link
'double
)
'double-down-mouse-2
'down-mouse-2
)))
'double-mouse-2
'mouse-2
)))
;; If mouse-2 has never been done by the user, it doesn't have
;; the necessary property to be interpreted correctly.
(
put
newup
'event-kind
(
get
(
car
event
)
'event-kind
)
)
(
put
new
down
'event-kind
(
get
(
car
this-
event
)
'event-kind
))
(
unless
(
get
newup
'event-kind
)
(
put
new
up
'event-kind
(
get
(
car
event
)
'event-kind
))
)
(
push
(
cons
newup
(
cdr
event
))
unread-command-events
)
;; Modify the event in place, so read-key-sequence doesn't
;; generate a second fake prefix key (see fake_prefixed_keys in
;; src/keyboard.c).
(
setcar
this-event
newdown
)
(
vector
this-event
))
;; Don't change the down event, only the up-event (bug#18212).
nil
)
(
push
event
unread-command-events
)
nil
))))))
...
...
lisp/simple.el
View file @
c7367d2d
...
...
@@ -5140,7 +5140,7 @@ or the frame."
0)
0)))
(if (floatp lsp)
(setq lsp (
* dfh
lsp)))
(setq lsp (
truncate (* (frame-char-height)
lsp)))
)
(+ dfh lsp)))
(defun window-screen-lines ()
...
...
@@ -5152,10 +5152,9 @@ in the window, not in units of the frame's default font, and also accounts
for
`
line-spacing
',
if
any,
defined
for
the
window
's
buffer
or
frame.
The
value
is
a
floating-point
number.
"
(let ((canonical (window-text-height))
(fch (frame-char-height))
(let ((edges (window-inside-pixel-edges))
(dlh (default-line-height)))
(/
(*
(float
canonical) fch
) dlh)))
(/ (float
(- (nth 3 edges) (nth 1 edges))
) dlh)))
;; Returns non-nil if partial move was done.
(defun line-move-partial (arg noerror to-end)
...
...
lisp/window.el
View file @
c7367d2d
...
...
@@ -1155,8 +1155,17 @@ dumping to it."
WINDOW must be a valid window and defaults to the selected one.
If HORIZONTAL is omitted or nil, return the total height of
WINDOW, in lines, like `window-total-height'. Otherwise return
the total width, in columns, like `window-total-width'.
WINDOW, in lines. If WINDOW is live, its total height includes,
in addition to the height of WINDOW's text, the heights of
WINDOW's mode and header line and a bottom divider, if any.
If HORIZONTAL is non-nil, return the total width of WINDOW, in
columns. If WINDOW is live, its total width includes, in
addition to the width of WINDOW's text, the widths of WINDOW's
fringes, margins, scroll bars and its right divider, if any.
If WINDOW is internal, return the respective size of the screen
areas spanned by its children.
Optional argument ROUND is handled as for `window-total-height'
and `window-total-width'."
...
...
@@ -6440,7 +6449,10 @@ again with `display-buffer-pop-up-window'."
This either splits the selected window or reuses the window below
the selected one."
(let (window)
(or (and (not (frame-parameter nil 'unsplittable))
(or (and (setq window (window-in-direction 'below))
(eq buffer (window-buffer window))
(window--display-buffer buffer window 'reuse alist))
(and (not (frame-parameter nil 'unsplittable))
(let ((split-height-threshold 0)
split-width-threshold)
(setq window (window--try-to-split-window (selected-window) alist)))
...
...
src/ChangeLog
View file @
c7367d2d
2014-08-11 Glenn Morris <rgm@gnu.org>
* fileio.c: Revert 2013-01-31 change, which chose coding system for
writing before backing up, since it causes a more serious problem
than the one it solves. (Closes Bug#18141, reopens Bug#13522.)
(choose_write_coding_system): No longer callable from Lisp.
Move last piece back here from Fwrite_region.
(Fwrite_region, syms_of_fileio): Update for above changes.
2014-08-11 Martin Rudalics <rudalics@gmx.at>
* window.c (Fwindow_valid_p): Fix doc-string (Bug#18194).
(Fwindow_new_total, Fwindow_normal_size, Fwindow_new_normal)
(Fwindow_new_pixel, Fset_window_new_pixel)
(Fset_window_new_total, Fset_window_new_normal)
(Fwindow_resize_apply): Fix doc-strings (see Bug#18112).
See also:
http://lists.gnu.org/archive/html/bug-gnu-emacs/2014-08/msg00287.html
2014-08-11 Eli Zaretskii <eliz@gnu.org>
* fontset.c (Finternal_char_font): Recompute basic faces if the
frame's face cache was cleared. (Bug#18162)
2014-08-11 Dmitry Antipov <dmantipov@yandex.ru>
Fix bug with uninitialized undo list of an indirect buffer (Bug#18180).
* buffer.c (Fmake_indirect_buffer): Initialize undo list with the
base buffer's undo list.
2014-08-10 Reuben Thomas <rrt@sc3d.org>
Fix a couple of recent inadvertent breaks of the MSDOS port.
...
...
src/buffer.c
View file @
c7367d2d
...
...
@@ -826,6 +826,9 @@ CLONE nil means the indirect buffer's state is reset to default values. */)
set_string_intervals
(
name
,
NULL
);
bset_name
(
b
,
name
);
/* An indirect buffer shares undo list of its base (Bug#18180). */
bset_undo_list
(
b
,
BVAR
(
b
->
base_buffer
,
undo_list
));
reset_buffer
(
b
);
reset_buffer_local_variables
(
b
,
1
);
...
...
src/coding.c
View file @
c7367d2d
...
...
@@ -1190,8 +1190,8 @@ alloc_destination (struct coding_system *coding, ptrdiff_t nbytes,
#define UTF_8_BOM_2 0xBB
#define UTF_8_BOM_3 0xBF
/* Unlike the other detect_coding_XXX, this function counts number
of
characters and check EOL format. */
/* Unlike the other detect_coding_XXX, this function counts
the
number
of
characters and check
s the
EOL format. */
static bool
detect_coding_utf_8 (struct coding_system *coding,
...
...
@@ -11265,7 +11265,7 @@ decode text as usual. */);
DEFVAR_BOOL ("disable-ascii-optimization", disable_ascii_optimization,
doc: /* If non-nil, Emacs does not optimize code decoder for ASCII files.
Internal use only. Remove
d
after the experimental optimizer
get
s stable. */);
Internal use only. Remove after the experimental optimizer
become
s stable.
*/);
disable_ascii_optimization = 0;
DEFVAR_LISP ("translation-table-for-input", Vtranslation_table_for_input,
...
...
src/fileio.c
View file @
c7367d2d
...
...
@@ -323,7 +323,6 @@ static Lisp_Object Qfile_acl;
static
Lisp_Object
Qset_file_acl
;
static
Lisp_Object
Qfile_newer_than_file_p
;
Lisp_Object
Qinsert_file_contents
;
static
Lisp_Object
Qchoose_write_coding_system
;
Lisp_Object
Qwrite_region
;
static
Lisp_Object
Qverify_visited_file_modtime
;
static
Lisp_Object
Qset_visited_file_modtime
;
...
...
@@ -4525,24 +4524,14 @@ build_annotations_unwind (Lisp_Object arg)
/* Decide the coding-system to encode the data with. */
DEFUN
(
"choose-write-coding-system"
,
Fchoose_write_coding_system
,
Schoose_write_coding_system
,
3
,
6
,
0
,
doc
:
/* Choose the coding system for writing a file.
Arguments are as for `write-region'.
This function is for internal use only. It may prompt the user. */
)
(
Lisp_Object
start
,
Lisp_Object
end
,
Lisp_Object
filename
,
Lisp_Object
append
,
Lisp_Object
visit
,
Lisp_Object
lockname
)
static
Lisp_Object
choose_write_coding_system
(
Lisp_Object
start
,
Lisp_Object
end
,
Lisp_Object
filename
,
Lisp_Object
append
,
Lisp_Object
visit
,
Lisp_Object
lockname
,
struct
coding_system
*
coding
)
{
Lisp_Object
val
;
Lisp_Object
eol_parent
=
Qnil
;
/* Mimic write-region behavior. */
if
(
NILP
(
start
))
{
XSETFASTINT
(
start
,
BEGV
);
XSETFASTINT
(
end
,
ZV
);
}
if
(
auto_saving
&&
NILP
(
Fstring_equal
(
BVAR
(
current_buffer
,
filename
),
BVAR
(
current_buffer
,
auto_save_file_name
))))
...
...
@@ -4635,6 +4624,10 @@ This function is for internal use only. It may prompt the user. */ )
}
val
=
coding_inherit_eol_type
(
val
,
eol_parent
);
setup_coding_system
(
val
,
coding
);
if
(
!
STRINGP
(
start
)
&&
!
NILP
(
BVAR
(
current_buffer
,
selective_display
)))
coding
->
mode
|=
CODING_MODE_SELECTIVE_DISPLAY
;
return
val
;
}
...
...
@@ -4803,14 +4796,9 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename,
We used to make this choice before calling build_annotations, but that
leads to problems when a write-annotate-function takes care of
unsavable chars (as was the case with X-Symbol). */
Vlast_coding_system_used
=
Fchoose_write_coding_system
(
start
,
end
,
filename
,
append
,
visit
,
lockname
);
setup_coding_system
(
Vlast_coding_system_used
,
&
coding
);
if
(
!
STRINGP
(
start
)
&&
!
NILP
(
BVAR
(
current_buffer
,
selective_display
)))
coding
.
mode
|=
CODING_MODE_SELECTIVE_DISPLAY
;
Vlast_coding_system_used
=
choose_write_coding_system
(
start
,
end
,
filename
,
append
,
visit
,
lockname
,
&
coding
);
if
(
open_and_close_file
&&
!
auto_saving
)
{
...
...
@@ -5829,7 +5817,6 @@ syms_of_fileio (void)
DEFSYM
(
Qset_file_acl
,
"set-file-acl"
);
DEFSYM
(
Qfile_newer_than_file_p
,
"file-newer-than-file-p"
);
DEFSYM
(
Qinsert_file_contents
,
"insert-file-contents"
);
DEFSYM
(
Qchoose_write_coding_system
,
"choose-write-coding-system"
);
DEFSYM
(
Qwrite_region
,
"write-region"
);
DEFSYM
(
Qverify_visited_file_modtime
,
"verify-visited-file-modtime"
);
DEFSYM
(
Qset_visited_file_modtime
,
"set-visited-file-modtime"
);
...
...
@@ -6068,7 +6055,6 @@ This includes interactive calls to `delete-file' and
defsubr
(
&
Sdefault_file_modes
);
defsubr
(
&
Sfile_newer_than_file_p
);
defsubr
(
&
Sinsert_file_contents
);
defsubr
(
&
Schoose_write_coding_system
);
defsubr
(
&
Swrite_region
);
defsubr
(
&
Scar_less_than_car
);
defsubr
(
&
Sverify_visited_file_modtime
);
...
...
src/fontset.c
View file @
c7367d2d
...
...
@@ -1843,6 +1843,10 @@ DEFUN ("internal-char-font", Finternal_char_font, Sinternal_char_font, 1, 2, 0,
return
Qnil
;
if
(
!
FRAME_WINDOW_P
(
f
))
return
Qnil
;
/* We need the basic faces to be valid below, so recompute them if
some code just happened to clear the face cache. */
if
(
FRAME_FACE_CACHE
(
f
)
->
used
==
0
)
recompute_basic_faces
(
f
);
face_id
=
FACE_FOR_CHAR
(
f
,
FACE_FROM_ID
(
f
,
face_id
),
c
,
pos
,
Qnil
);
face
=
FACE_FROM_ID
(
f
,
face_id
);
if
(
face
->
font
)
...
...
src/window.c
View file @
c7367d2d
...
...
@@ -329,7 +329,7 @@ DEFUN ("windowp", Fwindowp, Swindowp, 1, 1, 0,
DEFUN ("window-valid-p", Fwindow_valid_p, Swindow_valid_p, 1, 1, 0,
doc: /* Return t if OBJECT is a valid window and nil otherwise.
A valid window is either a window that displays a buffer or an internal
window.
Deleted windows
are not
live
. */)
window.
Windows that have been deleted
are not
valid
. */)
(Lisp_Object object)
{
return WINDOW_VALID_P (object) ? Qt : Qnil;
...
...
@@ -810,7 +810,12 @@ total width of WINDOW. */)
DEFUN ("window-new-total", Fwindow_new_total, Swindow_new_total, 0, 1, 0,
doc: /* Return the new total size of window WINDOW.
WINDOW must be a valid window and defaults to the selected one. */)
WINDOW must be a valid window and defaults to the selected one.
The new total size of WINDOW is the value set by the last call of
`set-window-new-total' for WINDOW. If it is valid, it will be shortly
installed as WINDOW's total height (see `window-total-height') or total
width (see `window-total-width'). */)
(Lisp_Object window)
{
return decode_valid_window (window)->new_total;
...
...
@@ -819,7 +824,25 @@ WINDOW must be a valid window and defaults to the selected one. */)
DEFUN ("window-normal-size", Fwindow_normal_size, Swindow_normal_size, 0, 2, 0,
doc: /* Return the normal height of window WINDOW.
WINDOW must be a valid window and defaults to the selected one.
If HORIZONTAL is non-nil, return the normal width of WINDOW. */)
If HORIZONTAL is non-nil, return the normal width of WINDOW.
The normal height of a frame's root window or a window that is
horizontally combined (a window that has a left or right sibling) is
1.0. The normal height of a window that is vertically combined (has a
sibling above or below) is the fraction of the window's height with
respect to its parent. The sum of the normal heights of all windows in a
vertical combination equals 1.0.
Similarly, the normal width of a frame's root window or a window that is
vertically combined equals 1.0. The normal width of a window that is
horizontally combined is the fraction of the window's width with respect
to its parent. The sum of the normal widths of all windows in a
horizontal combination equals 1.0.
The normal sizes of windows are used to restore the proportional sizes
of windows after they have been shrunk to their minimum sizes; for
example when a frame is temporarily made very small and afterwards gets
re-enlarged to its previous size. */)
(Lisp_Object window, Lisp_Object horizontal)
{
struct window *w = decode_valid_window (window);
...
...
@@ -829,7 +852,11 @@ If HORIZONTAL is non-nil, return the normal width of WINDOW. */)
DEFUN ("window-new-normal", Fwindow_new_normal, Swindow_new_normal, 0, 1, 0,
doc: /* Return new normal size of window WINDOW.
WINDOW must be a valid window and defaults to the selected one. */)
WINDOW must be a valid window and defaults to the selected one.
The new normal size of WINDOW is the value set by the last call of
`set-window-new-normal' for WINDOW. If valid, it will be shortly
installed as WINDOW's normal size (see `window-normal-size'). */)
(Lisp_Object window)
{
return decode_valid_window (window)->new_normal;
...
...
@@ -837,7 +864,12 @@ WINDOW must be a valid window and defaults to the selected one. */)
DEFUN ("window-new-pixel", Fwindow_new_pixel, Swindow_new_pixel, 0, 1, 0,
doc: /* Return new pixel size of window WINDOW.
WINDOW must be a valid window and defaults to the selected one. */)
WINDOW must be a valid window and defaults to the selected one.
The new pixel size of WINDOW is the value set by the last call of
`set-window-new-pixel' for WINDOW. If it is valid, it will be shortly
installed as WINDOW's pixel height (see `window-pixel-height') or pixel
width (see `window-pixel-width'). */)
(Lisp_Object window)
{
return decode_valid_window (window)->new_pixel;
...
...
@@ -3705,6 +3737,10 @@ Return SIZE.
Optional argument ADD non-nil means add SIZE to the new pixel size of
WINDOW and return the sum.
The new pixel size of WINDOW, if valid, will be shortly installed as
WINDOW's pixel height (see `window-pixel-height') or pixel width (see
`window-pixel-width').
Note: This function does not operate on any child windows of WINDOW. */)