Michael Albinus [Wed, 19 Dec 2012 13:01:16 +0000 (14:01 +0100)]
* net/tramp-sh.el (tramp-sh-handle-file-acl): Delete empty lines
and text properties from returned ACL string.
(tramp-sh-handle-set-file-acl): Do not use additional parentheses
for "setfacl" command.
Eli Zaretskii [Tue, 18 Dec 2012 19:05:56 +0000 (21:05 +0200)]
Follow symlinks in MS-Windows emulations of ACL functions.
src/w32.c (acl_get_file, acl_set_file): Run the file name through
map_w32_filename, and resolve any symlinks in the file name, like
Posix platforms do.
(acl_set_file): Call revert_to_self, if any privileges were
enabled.
Stefan Monnier [Mon, 17 Dec 2012 19:17:06 +0000 (14:17 -0500)]
* src/xdisp.c (select_frame_for_redisplay): Use select_window_1 to
propagate redisplay's scrolling (if any) to the right window.
(redisplay_internal): Use ensure_selected_frame.
(display_mode_lines): Complete last fix.
* src/window.c (select_window_1): New func, extracted from select_window.
(select_window): Use it.
* src/window.h (select_window_1): Declare.
Eli Zaretskii [Mon, 17 Dec 2012 19:14:34 +0000 (21:14 +0200)]
Support Posix ACL APIs on MS-Windows.
src/w32.c: Include sddl.h and sys/acl.h.
(SDDL_REVISION_1): Define if not already defined.
(g_b_init_get_security_descriptor_dacl)
(g_b_init_convert_sd_to_sddl, g_b_init_convert_sddl_to_sd)
(g_b_init_is_valid_security_descriptor)
(g_b_init_set_file_security): New static flags.
(globals_of_w32): Initialize them to zero.
(SetFileSecurity_Name): New string constant.
(SetFileSecurity_Proc, GetSecurityDescriptorDacl_Proc)
(ConvertStringSecurityDescriptorToSecurityDescriptor_Proc)
(ConvertSecurityDescriptorToStringSecurityDescriptor_Proc)
(IsValidSecurityDescriptor_Proc): New typedefs.
(get_file_security, get_security_descriptor_owner)
(get_security_descriptor_group): Set errno to ENOTSUP.
(set_file_security, get_security_descriptor_dacl)
(is_valid_security_descriptor, convert_sd_to_sddl)
(convert_sddl_to_sd, acl_valid, acl_to_text, acl_from_text)
(acl_free, acl_get_file, acl_set_file): New functions.
src/fileio.c (Fcopy_file) [WINDOWSNT]: Support copying ACLs.
nt/inc/sys/acl.h: New file.
nt/inc/ms-w32.h (ENOTSUP): Define if undefined.
nt/config.nt (HAVE_POSIX_ACL): Define.
doc/lispref/files.texi (File Attributes, Changing Files): Update to include
MS-Windows support for ACLs.
Paul Eggert [Mon, 17 Dec 2012 17:51:25 +0000 (09:51 -0800)]
Don't reraise SIGCHLD, as that can now lose.
With the 2012-12-03 fix for Bug#12980 in place, an old workaround
for some of that bug's symptoms can now cause Emacs to abort.
Remove the workaround.
* process.c (wait_reading_process_output): Don't reraise SIGCHLD.
The bug that caused SIGCHLD to get lost has been fixed, and the
workaround for it can now cause Emacs to abort.
Kelly Dean [Mon, 17 Dec 2012 07:54:57 +0000 (08:54 +0100)]
Fix some interactions of make-help-screen and other Help forms (Bug#13190).
* help-macro.el (make-help-screen): Instead of switch-to-buffer
use pop-to-buffer with NORECORD argument t. As buffer name use
*Metahelp* with a leading space (Bug#13190).
Romain Francoise [Sun, 16 Dec 2012 18:22:27 +0000 (19:22 +0100)]
Add support for preserving ACL entries of files.
* configure.ac (acl): New option.
(HAVE_POSIX_ACL): Test for POSIX ACL support. This is typically
provided by libacl on GNU/Linux.
* fileio.c (Ffile_acl, Fset_file_acl): New functions.
(Fcopy_file): Change last arg to `preserve_extended_attributes'
and copy ACL entries of file in addition to SELinux context if
set.
(syms_of_fileio): Add `file-acl' and `set-file-acl'.
* Makefile.in (LIBACL_LIBS): New macro.
(LIBES): Use it.
* files.el (file-extended-attributes)
(set-file-extended-attributes): New functions.
(backup-buffer): Use them to handle both SELinux context and ACL
entries.
(backup-buffer-copy): Work with an alist of extended attributes,
rather than an SELinux context.
(basic-save-buffer-2): Ditto.
* files.texi (File Attributes): Document ACL support and new
`file-acl' function.
(Changing Files): Mention argument name change of `copy-file' and
document new function `set-file-acl'.
Eli Zaretskii [Sat, 15 Dec 2012 13:38:21 +0000 (15:38 +0200)]
Fix bug #13079 on MS-Windows with temp files not being deleted.
src/w32.h (_child_process): New members input_file and
pending_deletion.
(register_child): First argument is now pid_t.
(record_infile, record_pending_deletion): New prototypes.
src/w32proc.c (new_child): Initialize input_file and
pending_deletion members of the child.
(delete_child): Delete the child's temporary input file, if any,
that is pending deletion.
(register_child): First argument is now pid_t.
(record_infile, record_pending_deletion): New functions.
(reap_subprocess): Fix a typo in DebPrint string.
(sys_spawnve, sys_kill): Use pid_t for PID arguments.
src/fileio.c (internal_delete_file): Return an int again: non-zero
if delete-file succeeds, zero otherwise.
src/lisp.h (internal_delete_file): Adjust prototype.
src/callproc.c (Fcall_process): Don't overwrite infile with result
of DECODE_FILE.
[WINDOWSNT] If BUFFER is an integer, i.e. we are launching an
asynchronous subprocess, record the name of the input file name,
if any.
(delete_temp_file) [WINDOWSNT]: If internal_delete_file fails to
delete the file, record it as pending deletion when the subprocess
exits.
Juri Linkov [Sat, 15 Dec 2012 13:03:17 +0000 (15:03 +0200)]
* lisp/isearch.el (isearch-mode-map): Bind `C-x 8 RET' to
`isearch-insert-char-by-name'.
(with-isearch-suspended): New defmacro with body mostly from
`isearch-edit-string' except the part that sets
`isearch-new-string' and `isearch-new-message'.
(isearch-edit-string): Use new macro `with-isearch-suspended' with
body that sets `isearch-new-string' and `isearch-new-message'.
(isearch-insert-char-by-name): New command.
* lisp/international/mule-cmds.el (read-char-by-name): Let-bind
`enable-recursive-minibuffers' to t.
http://lists.gnu.org/archive/html/emacs-devel/2012-12/msg00234.html
Paul Eggert [Fri, 14 Dec 2012 18:59:00 +0000 (10:59 -0800)]
Fix permissions bugs with setgid directories etc.
* configure.ac (BSD4_2): Remove; no longer needed.
* admin/CPP-DEFINES (BSD4_2): Remove.
* doc/lispintro/emacs-lisp-intro.texi (Files List):
directory-files-and-attributes now outputs t for attribute that's
now a placeholder.
* doc/lispref/files.texi (Testing Accessibility): Document GROUP arg
of file-ownership-preserved-p.
(File Attributes): Document that 9th element is now
just a placeholder.
* doc/lispref/os.texi (User Identification): Document new functions group-gid,
group-real-gid.
* etc/NEWS: Document changes to file-attributes,
file-ownership-preserved-p.
Mention new functions group-gid, group-real-gid.
* lisp/files.el (backup-buffer): Don't rely on 9th output of
file-attributes, as it's now a placeholder. Instead, use the new
optional arg of file-ownership-preserved-p.
(file-ownership-preserved-p): New optional arg GROUP.
Fix mishandling of setuid directories that would cause this
function to return t when it should have returned nil.
Document what happens if the file does not exist, and when
it's not known whether the ownership will be preserved.
* lisp/net/tramp-sh.el (tramp-sh-handle-file-ownership-preserved-p):
Likewise.
(tramp-get-local-gid): Use group-gid for integer, as that's
faster and more reliable.
* src/dired.c (Ffile_attributes): Return t as the 9th attribute,
to mark it as a placeholder. The old value was often wrong.
The only user of this attribute has been changed to use
file-ownership-preserved-p instead, with its new group arg.
* src/editfns.c (Fgroup_gid, Fgroup_real_gid): New functions.
Dave Abrahams [Fri, 14 Dec 2012 15:22:24 +0000 (10:22 -0500)]
* lisp/vc/ediff-util.el (ediff-buffer-type): New function.
(ediff-clone-buffer-for-current-diff-comparison): Compute the buf-type
rather than taking it as as argument.
(ediff-inferior-compare-regions): Adjust calls accordingly.
Ryan Crum [Fri, 14 Dec 2012 14:57:37 +0000 (09:57 -0500)]
* lisp/json.el: Add pretty-print option.
(json-encoding-separator, json-encoding-default-indentation)
(json--encoding-current-indentation, json-encoding-pretty-print)
(json-encoding-lisp-style-closings): New vars.
(json--with-indentation): New macro.
(json-encode-hash-table, json-encode-alist, json-encode-plist)
(json-encode-array): Use it to obey json-encoding-pretty-print.
(json-pretty-print-buffer, json-pretty-print): New commands.
Eli Zaretskii [Fri, 14 Dec 2012 14:05:01 +0000 (16:05 +0200)]
Speed up most calls to 'stat' and 'lstat' on MS-Windows.
src/w32.c (stat_worker): If w32_stat_get_owner_group is zero, do not
try to get accurate owner and group information from NT file
security APIs. This is to make most callers of 'stat' and
'lstat', which don't need that information, much faster.
src/dired.c (Ffile_attributes) [WINDOWSNT]: Set
w32_stat_get_owner_group to a non-zero value, to request accurate
owner and group information from 'lstat'.
Dmitry Gutov [Fri, 14 Dec 2012 06:58:15 +0000 (10:58 +0400)]
* lisp/progmodes/ruby-mode.el (ruby-syntax-propertize-function):
Extract `ruby-syntax-propertize-expansions'.
(ruby-syntax-propertize-expansions): Only change syntax on
certain string delimiters, to punctuation. This way the common
functions like forward-word and thing-at-point still work.
(ruby-match-expression-expansion): Improve readability.
(ruby-block-contains-point): New function.
(ruby-add-log-current-method): Handle several edge cases.
* test/automated/ruby-mode-tests.el
Rename one interpolation test; add three more.
(ruby-with-temp-buffer): New macro, use it where appropriate.
(ruby-add-log-current-method-examples): Use "_" for target point.
Add four tests for ruby-add-log-current-method.
Dmitry Gutov [Fri, 14 Dec 2012 04:55:23 +0000 (08:55 +0400)]
* lisp/progmodes/ruby-mode.el (ruby-syntax-propertize-function):
Extract `ruby-syntax-propertize-expansions'.
(ruby-syntax-propertize-expansions): Only change syntax on
certain string delimiters, to punctuation. This way the common
functions like forward-word and thing-at-point still work.
* test/automated/ruby-mode-tests.el
Rename one interpolation test; add three more.
Paul Eggert [Thu, 13 Dec 2012 19:35:10 +0000 (11:35 -0800)]
* fileio.c (Finsert_file_contents): Don't put tail into head area,
as that confuses set-auto-coding, so insist on the head-read
returning the full 1024 bytes. Let lseek compute the tail offset;
less work for us. Do not ignore I/O errors when reading the tail.
lisp/emacs-lisp/edebug.el: Fix previous change.
(edebug-unload-function): Make sure that unload-feature finishes even when
aborting an ongoing edebug session. Also, do not worry about edebug-mode,
unload-feature takes care of it.
lisp/emacs-lisp/edebug.el: Fix bug#13163.
(edebug--require-cl-read): New function.
(edebug-setup-hook, cl-read-load-hooks): Use it.
(edebug-unload-function): New function.
Dmitry Antipov [Thu, 13 Dec 2012 08:04:40 +0000 (12:04 +0400)]
Minor redisplay optimization when the region length is zero.
* xdisp.c (markpos_of_region): New function.
(init_iterator): Do not highlight the region of zero length.
(redisplay_window): Check whether the region is of non-zero length.
(try_cursor_movement): Allow if the region length is zero.
(try_window_reusing_current_matrix, try_window_id): Likewise.
Paul Eggert [Thu, 13 Dec 2012 02:17:49 +0000 (18:17 -0800)]
* fileio.c (Fcopy_file): Make fstat failure as serious as open failure.
fstat shouldn't fail, and if it does fail copy-file should not proceed.
Remove unnecessary S_ISLNK test, as (contra the comments) this
function can't copy symlinks. Improve quality of error message
when attempting to copy files that are neither regular files nor
directories.
Eric M. Ludlam [Wed, 12 Dec 2012 17:15:25 +0000 (09:15 -0800)]
Import srecode manual from CEDET trunk
Ref
http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00419.html
and preceding discussion
Imported from
bzr://cedet.bzr.sourceforge.net/bzrroot/cedet/code/trunk
doc/texi/srecode.texi
bzr log shows (very) tiny changes from authors with assignments:
Alex Ott <ottalex@users.sourceforge.net>
David Engster <dengste@eml.cc>
Vincent Belaïche <vincentb1@users.sourceforge.net>
and from:
emacsman@users.sourceforge.net
scymtym@users.sourceforge.net
Sam Steingold [Wed, 12 Dec 2012 14:43:45 +0000 (09:43 -0500)]
* lisp/frame.el (frame-maximization-style): New user option.
(toggle-frame-maximized): Toggle frame maximization according to
`frame-maximization-style', bound to <f11>.
(cycle-frame-maximized): Cycle between all maximization styles and
non-maximized frame, bound to shift-<f11>.
* unexcw.c (fixup_executable): use posix_fallocate to ensure that
the dumped Emacs is not a sparse file, greatly improving Cygwin
"make bootstrap" performance.
Jonas Bernoulli [Wed, 12 Dec 2012 02:16:05 +0000 (21:16 -0500)]
* lisp/emacs-lisp/eieio.el: Prettier object pretty-printing.
(eieio-override-prin1): Don't quote kewords and booleans.
(object-write) <eieio-default-superclass>: Don't put closing parens
on new line, avoid needless empty lines, align values that are objects
with the slot keyword (instead of beginning on the same line).
(eieio-list-prin1): Align value with slot keyword; increase
eieio-print-depth before printing members of the list.
Alan Mackenzie [Tue, 11 Dec 2012 19:06:57 +0000 (19:06 +0000)]
Make CC Mode not hang when _some_ lines end in CRLF. Bug #11841.
cc-engine.el (c-backward-comments): Add code to work around
`forward-comment' not recognizing ^M as whitespace.
Stefan Monnier [Tue, 11 Dec 2012 18:52:31 +0000 (13:52 -0500)]
* lisp/mail/emacsbug.el (report-emacs-bug): Move the intangible text to
a display text-property.
(report-emacs-bug-hook): Don't bother deleting it any more.
Stefan Monnier [Tue, 11 Dec 2012 18:51:27 +0000 (13:51 -0500)]
* lisp/hilit-chg.el (highlight-save-buffer-state): Delete.
Use with-silent-modifications instead.
(hilit-chg-set-face-on-change): Only fixup the text that's modified.
Stefan Monnier [Tue, 11 Dec 2012 18:49:25 +0000 (13:49 -0500)]
* lisp/button.el: Handle buttons in display text-properties.
(button--area-button-p, button--area-button-string):
Use (STRING . STRING-POS) representation instead of just STRING.
Paul Eggert [Tue, 11 Dec 2012 18:18:13 +0000 (10:18 -0800)]
Merge from gnulib for 'inline', incorporating:
2012-12-11 extern-inline: avoid incompatibility with Darwin Libc
* m4/extern-inline.m4: Update from gnulib.
Eli Zaretskii [Tue, 11 Dec 2012 12:22:35 +0000 (14:22 +0200)]
Fix part of bug #13011 with display of lines that have a box face.
src/xdisp.c (handle_face_prop): Fix logic of computing
it->start_of_box_run_p.
(append_space_for_newline): If the glyph row is R2L, reset the
iterator's end_of_box_run_p flag before prepending the space glyph.
(extend_face_to_end_of_line): If the glyph row is R2L, reset the
iterator's start_of_box_run_p flag before prepending the stretch.
(append_glyph, produce_image_glyph, append_composite_glyph)
(append_stretch_glyph, append_glyphless_glyph): Reverse the
left_box_line_p and right_box_line_p flags of the glyph for R2L
glyph rows.
Dmitry Antipov [Tue, 11 Dec 2012 09:51:12 +0000 (13:51 +0400)]
* buffer.c (Fset_buffer_multibyte): Do not force redisplay
if changed buffer is not shown in a window.
* insdel.c (prepare_to_modify_buffer): Likewise.
* window.c (replace_buffer_in_windows_safely): Do nothing
if buffer is not shown in a window.
(Fforce_window_update): Likewise if string or buffer argument
is passed.
Jay Belanger [Tue, 11 Dec 2012 02:29:21 +0000 (20:29 -0600)]
* lisp/calc/calc.el (calc-standard-date-formats): Add more date
formats.
* lisp/calc/calc-forms.el (math-parse-iso-date): New function.
(math-parse-date): Use `math-parse-iso-date' when appropriate.
(math-parse-iso-date-validate): Add extra error checking.
(calc-date-notation): Add ability to access new date formats.