David Engster [Thu, 21 Mar 2013 22:11:03 +0000 (23:11 +0100)]
Merge with CEDET upstream (rev. 8499).
lisp/
* eieio/eieio-datadebug.el (data-debug/eieio-insert-slots):
Inhibit read only while inserting objects.
lisp/cedet/
* semantic.el (navigate-menu): Yank Tag :enable. Make sure
`senator-tag-ring' is bound.
(semantic-parse-region-default): Stop reversing the output of
parse-whole-stream.
(semantic-repeat-parse-whole-stream): Append returned tags
differently, so they come out in the right order.
* semantic/sb.el (semantic-sb-filter-tags-of-class): New option.
(semantic-sb-fetch-tag-table): Filter tags being bucketed to exclude
tags belonging to above filtered classes.
* semantic/find.el (semantic-filter-tags-by-class): New function.
* semantic/tag-ls.el (semantic-tag-similar-p-default): Add
short-circuit in case tag1 and 2 are identical.
* semantic/analyze/fcn.el
(semantic-analyze-dereference-metatype-stack): Use
`semantic-tag-similar-p' instead of 'eq' when comparing two tags
during metatype evaluation in case they are the same, but not the same
node. (Tweaked patch from Tomasz Gajewski) (Tiny change)
* semantic/db-find.el (semanticdb-partial-synchronize): Fix require to
semantic/db-typecache to be correct.
(semanticdb-find-tags-external-children-of-type): Make this a brutish
search by default.
* semantic/sort.el (semantic-tag-external-member-children-default):
When calling `semanticdb-find-tags-external-children-of-type', pass in
the input tag as the place to start searching for externally defined
methods.
* semantic/db-file.el (semanticdb-default-save-directory): Doc
fix: Add ref to default value.
* semantic/complete.el (semantic-complete-post-command-hook): When
detecting if cursor is outside completion area, do so if cursor moves
before start of overlay, or the original starting location of the
overlay (i.e., if user deletes past beginning of the overlay region).
(semantic-complete-inline-tag-engine): Initialize original start of
`semantic-complete-inline-overlay'.
* semantic/bovine/c.el (semantic-c-describe-environment): Update some
section titles. Test semanticdb table before printing it.
(semantic-c-reset-preprocessor-symbol-map): Update
`semantic-lex-spp-macro-symbol-obarray' outside the loop over all the
files contributing to its value.
(semantic-c-describe-environment): If there is an EDE project but no
spp symbols from it, say so.
* srecode/args.el (srecode-semantic-handle-:project): New argument
handler. Provide variable values if not in an EDE project.
* srecode/srt-mode.el (srecode-template-mode): Fix typo on srecode
name.
* srecode/cpp.el (srecode-semantic-handle-:c): Replace all characters
in FILENAME_SYMBOL that aren't valid CPP symbol chars.
* srecode/map.el (srecode-map-validate-file-for-mode): Force semantic
to load if it is not active in the template being added to the map.
* srecode/srt.el: Add local variables for setting the autoload file
name.
(srecode-semantic-handle-:srt): New autoload cookie
* ede.el (ede-apply-preprocessor-map): Apply map to
`semantic-lex-spp-project-macro-symbol-obarray' instead of the system
one. Add require for semantic.
* ede/proj-elisp.el (ede-update-version-in-source): In case a file has
both a version variable and a Version: comment, always use
`call-next-method'.
* ede/cpp-root.el (ede-set-project-variables): Deleted.
`ede-preprocessor-map' does the job this function was attempting to do
with :spp-table.
(ede-preprocessor-map): Update file tests to provide better messages.
Do not try to get symbols from a file that is the file in the current
buffer.
* ede/base.el (ede-project-placeholder): Add more documentation to
:file slot.
(ede-load-cache): Use `insert-file-contents' instead of
`find-file-noselect' in order to avoid activating other tools.
* semantic/bovine/c.el (semantic-get-local-variables): Also add a new
variable 'this' if we are in an inline member function. For detecting
this, we check overlays at point if there is a class spanning the
current function. Also, the variable 'this' has to be a pointer.
* semantic/bovine/gcc.el (semantic-gcc-setup): Fail gracefully when
querying g++ for defines returns an error.
* srecode/srt-mode.el:
* srecode/compile.el:
* semantic/elp.el:
* semantic/db-el.el:
* semantic/complete.el:
* ede.el:
* cogre.el:
* srecode/table.el:
* srecode/mode.el:
* srecode/insert.el:
* srecode/compile.el:
* semantic/decorate/include.el:
* semantic/db.el:
* semantic/adebug.el:
* ede/auto.el:
* srecode/dictionary.el:
* semantic/ede-grammar.el:
* semantic/db.el:
* semantic/db-find.el:
* semantic/db-file.el:
* semantic/complete.el:
* semantic/bovine/c.el:
* semantic/analyze.el:
* ede/util.el:
* ede/proj.el:
* ede/proj-elisp.el:
* ede/pconf.el:
* ede/locate.el:
* ede.el: Adapt to EIEIO namespace cleanup: Rename `object-name' to
`eieio-object-name', `object-set-name-string' to
`eieio-object-set-name-string', `object-class' to
`eieio-object-class', `class-parent' to `eieio-class-parent',
`class-parents' to `eieio-class-parents', `class-children' to
`eieio-class-children', `object-name-string' to
`eieio-object-name-string', `object-class-fast' to
`eieio--object-class'. Also replace direct access with new accessor
functions.
* ede/cpp-root.el (ede-project-autoload, initialize-instance): Fix EDE
file symbol to match rename. Fix ede-cpp-root symbol to include
-project in name.
* cedet-files.el (cedet-files-list-recursively): New function.
Recursively find files whose names are matching to given regex
* ede.el (ede-current-project): Rewrite to avoid imperative style.
* ede/files.el (ede-find-file): Simplify code.
* ede/base.el (ede-normalize-file/directory): Add function to
normalize :file or :directory slots if they are missing.
* ede/cpp-root.el (ede-cpp-root-project): Add compile-command slot.
(project-compile-project): Compiles project using value specified in
:compule-command slot or in compile-command local variable. Value of
slot or local variable could be string or function that receives
project and should return string that will be invoked as command.
(project-compile-target): Invokes compilation of whole project
* ede/files.el (ede-find-project-root): New function to find root of
project that contains specific file.
(ede-files-find-existing): New function which checks presence of given
directory in the list of registered projects.
etc/
* srecode/ede-autoconf.srt: Change Copyright to FSF.
(ede-empty): Change AC_INIT to use PROJECT_NAME, and PROJECT_VERSION.
* srecode/ede-make.srt (ede-empty): Add a dependency on :project. Add
header comment specifying the project's relative path.
* srecode/c.srt (header_guard): Upcase the filename symbol.
* emacs.c (main): Call syms_of_cygw32 on CYGWIN non-NTGUI builds
too so that these builds can use Cygwin's file conversion
functions. (We've been building and linking cygw32.o all along
and just not using it.)
Paul Eggert [Wed, 13 Mar 2013 18:42:22 +0000 (11:42 -0700)]
File synchronization fixes.
* admin/CPP-DEFINES (BSD_SYSTEM, HAVE_FSYNC): Remove.
* admin/merge-gnulib (GNULIB_MODULES): Add fsync, fdatasync.
* configure.ac (BSD_SYSTEM, BSD_SYSTEM_AHB): Remove; no longer needed.
(fsync): Remove check; now done by gnulib.
* lib/fdatasync.c, lib/fsync.c, m4/fdatasync.m4, m4/fsync.m4:
New files, from gnulib.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
* lib-src/Makefile.in (LIB_FDATASYNC): New macro.
(emacsclient${EXEEXT}): Use it.
* lib-src/emacsclient.c (main): Use fdatasync, not fsync, since we don't
care about metadata. Keep trying if interrupted.
* lib-src/movemail.c (main, popmail): Don't worry about BSD_SYSTEM, since
fsync is available everywhere (or there is a substitute). Don't
report an error if fsync returns EINVAL.
* nt/inc/ms-w32.h (fdatasync): New macro, suggested by Eli Zaretskii.
* src/Makefile.in (LIB_FDATASYNC): New macro.
(LIBES): Use it.
* src/conf_post.h (BSD_SYSTEM, BSD_SYSTEM_AHB): Remove; no longer needed.
* src/fileio.c (Fwrite_region, write_region_inhibit_fsync):
Don't worry about HAVE_FSYNC, since a substitute fsync is
available if the system lacks one.
(Fwrite_regin): Retry fsync if interrupted.
Paul Eggert [Wed, 13 Mar 2013 05:04:46 +0000 (22:04 -0700)]
* sysdep.c: Remove a use of BSD_SYSTEM, which I'm trying to phase out.
Include <sys/param.h> unconditionally, as that works elsewhere and
is simpler here. Include <sys/sysctl.h> if DARWIN_OS ||
__FreeBSD__, not if BSD_SYSTEM, since it's needed only for Darwin
and FreeBSD now.
Paul Eggert [Wed, 13 Mar 2013 00:38:42 +0000 (17:38 -0700)]
Merge from gnulib.
This incorporates:
2013-03-12 mktime: fix configure typo
2013-03-11 regex: port to mingw's recent addition of undeclared alarm
2013-03-11 putenv: avoid compilation warning on mingw
2013-03-11 unistd: don't prevent Tru64 Unix from using gnulib strtod.
Glenn Morris [Mon, 11 Mar 2013 08:09:21 +0000 (01:09 -0700)]
Small updates for make-manuals admin scripts
* admin/admin.el (make-manuals): Add emacs-lisp-intro and some more
doc/misc manuals.
(manual-html-mono, manual-html-node, manual-txt): Pass -I to makeinfo.
Stefan Monnier [Mon, 11 Mar 2013 04:24:15 +0000 (00:24 -0400)]
* lisp/term/xterm.el: Don't discard input. Use lexical-binding.
(xterm--report-background-handler, xterm--query): New functions.
(terminal-init-xterm): Use them.
Michael Mauger [Mon, 11 Mar 2013 04:09:37 +0000 (00:09 -0400)]
* progmodes/sql.el Version 3.2
Please note that my address changed to <michael@mauger.com>; the
<mmaug@yahoo.com> address remains active.
(sql-connection-alist): Updates documentation to fix bug#13715.
(sql-connect): Handle missing `sql-connection-alist' correctly.
(sql-mode-oracle-font-lock-keywords): Add missing keywords.
(sql-magic-go, sql-magic-semicolon): Mark with `delete-selection'
property.
(sql-default-value): New function.
(sql-get-login-ext, sql-get-login): Fixes bug where buffer-local
values were not used.
(sql-rename-buffer): Make sure alternate buffer name has no text
properties.
(sql-input-sender, sql-execute-feature): Fetch variable with
`buffer-local-value' rather than `with-current-buffer'.
(sql-*): Use #' function syntax consistently.
(sql-*): Use message/error/user-error consistently.
Stefan Monnier [Mon, 11 Mar 2013 01:17:40 +0000 (21:17 -0400)]
* src/keyboard.c: Move keyboard decoding to read_key_sequence.
(decode_keyboard_code): Remove.
(tty_read_avail_input): Don't try to decode input.
(read_decoded_char): New function.
(read_key_sequence): Use it.
* w32term.h (GUISTR, GUI_ENCODE_FILE, GUI_ENCODE_SYSTEM, GUI_FN)
(GUI_SDATA, guichar_t): Macros to abstract out differences between
NTGUI_UNICODE and !NTGUI_UNICODE builds, some moved out of
w32fns.c.
* w32term.c (construct_drag_n_drop): Use the above macros to make
drag-and-drop work for non-ASCII filenames in cygw32 builds.
* w32fns.c (x_set_name, x_set_title): Use the above macros to
properly display non-ASCII frame titles in cygw32 builds.
* w32fns.c (Fw32_shell_execute): Use the above macros to properly
call ShellExecute in cygw32 builds.
* w32fn.c (Fx_file_dialog): Use the above macros to simplify the
common file dialog code.
* w32fns.c (Ffile_system_info): Remove from cygw32 builds, which
can just use du like other systems.
Stefan Monnier [Sun, 10 Mar 2013 21:37:42 +0000 (17:37 -0400)]
* lisp/comint.el: Use with-silent-modifications.
(comint-send-input, comint-snapshot-last-prompt)
(comint-output-filter, comint-update-fence): Use with-silent-modifications.
Eli Zaretskii [Sun, 10 Mar 2013 17:28:04 +0000 (19:28 +0200)]
Use macros from dispextern.h where appropriate.
src/xdisp.c (display_tool_bar_line, redisplay_tool_bar)
(redisplay_internal, set_cursor_from_row, try_window)
(try_window_id, dump_glyph_row, extend_face_to_end_of_line)
(display_line, notice_overwritten_cursor)
(mouse_face_from_buffer_pos, note_mouse_highlight): Use
MATRIX_ROW_DISPLAYS_TEXT_P.
(note_mouse_highlight): Use MATRIX_ROW_GLYPH_START.
(mouse_face_from_string_pos, fast_find_string_pos): Use
MATRIX_ROW_VPOS.
src/xfns.c (Fx_show_tip): Use MATRIX_ROW_DISPLAYS_TEXT_P.
src/w32fns.c (Fx_show_tip): Use MATRIX_ROW_DISPLAYS_TEXT_P.
src/xdisp.c (try_cursor_movement): Use MATRIX_ROW and
MATRIX_MODE_LINE_ROW.
src/dispnew.c (update_window): Use MATRIX_ROW and MATRIX_MODE_LINE_ROW.
Jambunathan K [Sun, 10 Mar 2013 08:44:07 +0000 (14:14 +0530)]
Provide for customizing default regexp in occur commands (Bug#13892).
* lisp/replace.el (occur-read-regexp-defaults-function): New var.
(occur-read-regexp-defaults): New defun.
(occur-read-primary-args): Propagate above change.
Michael Albinus [Sat, 9 Mar 2013 11:06:23 +0000 (12:06 +0100)]
Major rewrite due to changed D-Bus interface of GVFS 1.14.
* net/tramp-gvfs.el (top): Extend check for gvfs availability.
(tramp-gvfs-methods-mounttracker, tramp-gvfs-listmounts)
(tramp-gvfs-mountlocation, tramp-gvfs-mountlocation-signature):
New defconst.
(tramp-gvfs-file-name-handler-alist) [directory-files]:
[directory-files-and-attributes, file-exists-p, file-modes]: Use
Tramp default handler.
[file-acl, file-selinux-context, process-file, set-file-acl]:
[set-file-modes, set-file-selinux-context, shell-command]:
[start-file-process ]: Remove handler.
[verify-visited-file-modtime]: New handler.
(tramp-gvfs-dbus-string-to-byte-array)
(tramp-gvfs-dbus-byte-array-to-string): New defuns. Replace all
calls of `dbus-string-to-byte-array' and
`tramp-gvfs-dbus-byte-array-to-string'.
(tramp-gvfs-handle-copy-file)
(tramp-gvfs-handle-delete-directory)
(tramp-gvfs-handle-delete-file, tramp-gvfs-handle-file-attributes)
(tramp-gvfs-handle-file-directory-p)
(tramp-gvfs-handle-file-executable-p)
(tramp-gvfs-handle-file-name-all-completions)
(tramp-gvfs-handle-file-readable-p)
(tramp-gvfs-handle-file-writable-p)
(tramp-gvfs-handle-insert-directory)
(tramp-gvfs-handle-insert-file-contents)
(tramp-gvfs-handle-make-directory, tramp-gvfs-handle-rename-file)
(tramp-gvfs-handle-set-visited-file-modtime)
(tramp-gvfs-handle-write-region): Rewrite.
(tramp-gvfs-handle-file-acl)
(tramp-gvfs-handle-file-selinux-context)
(tramp-gvfs-handle-process-file, tramp-gvfs-handle-set-file-acl)
(tramp-gvfs-handle-set-file-modes)
(tramp-gvfs-handle-set-file-selinux-context)
(tramp-gvfs-handle-shell-command)
(tramp-gvfs-handle-start-file-process)
(tramp-gvfs-handle-verify-visited-file-modtime): Remove defuns.
(tramp-gvfs-url-file-name): Do not use `file-truename', we work
over the symlinks. Fix user handling.
(top, tramp-gvfs-handler-mounted-unmounted): Handle different names
of the D-Bus signals.
(tramp-gvfs-connection-mounted-p): Handle different names of the
D-Bus methods.
(tramp-gvfs-mount-spec-entry): New defun.
(tramp-gvfs-mount-spec): Use it.
(tramp-gvfs-maybe-open-connection): Check, that in case of "smb"
there is a share name. Handle different names of the D-Bus
signals and methods.
(tramp-gvfs-maybe-open-connection): Set connection properties
needed for `tramp-check-cached-permissions'.
(tramp-gvfs-send-command): Apply `tramp-gvfs-maybe-open-connection'.
Return t or nil.
* net/tramp.el (tramp-backtrace): Move up.
(tramp-error): Apply a backtrace into the debug buffer when
`tramp-verbose > 9.
(tramp-file-mode-type-map, tramp-file-mode-from-int)
(tramp-file-mode-permissions, tramp-get-local-uid)
(tramp-get-local-gid, tramp-check-cached-permissions): Move from
tramp-sh.el.
Stefan Monnier [Sat, 9 Mar 2013 04:15:53 +0000 (23:15 -0500)]
Separate mouse-1-click-follows-link from mouse-drag-region.
* lisp/mouse.el (mouse--down-1-maybe-follows-link): New function.
(key-translation-map): Use it to implement mouse-1-click-follows-link.
(mouse-drag-line, mouse-drag-track): Remove mouse-1-click-follows-link code.
(mouse--remap-link-click-p): Remove.
* src/keyboard.c (access_keymap_keyremap): Accept nil return value from
functions to mean "no change".
* src/keyboard.h (EVENT_START, EVENT_END, POSN_WINDOW, POSN_POSN)
(POSN_WINDOW_POSN, POSN_TIMESTAMP): Be careful since events may come
from Elisp via unread-command-events.
Dmitry Antipov [Fri, 8 Mar 2013 09:34:35 +0000 (13:34 +0400)]
* search.c (find_newline): Accept start and end byte positions
as arguments and allow -1 if not known.
(find_newline_no_quit): Likewise for start position.
* lisp.h (find_newline, find_newline_no_quit): Adjust prototype.
* bidi.c (bidi_find_paragraph_start): Pass byte position to
find_newline_no_quit, thus eliminating CHAR_TO_BYTE.
* editfns.c (Fconstrain_to_field): Break long line. Adjust
call to find_newline.
* indent.c (vmotion): Adjust calls to find_newline_no_quit.
Use DEC_BOTH to start next search from the previous buffer
position, where appropriate.
* xdisp.c (back_to_previous_line_start, forward_to_next_line_start)
(get_visually_first_element, move_it_vertically_backward): Likewise.
Obtain byte position from the display iterator, where appropriate.
Dmitry Antipov [Thu, 7 Mar 2013 23:37:36 +0000 (03:37 +0400)]
* bidi.c (bidi_fetch_char): Swap first and second arguments
to match other functions accepting character and byte positions.
Adjust comment.
(bidi_resolve_explicit_1, bidi_level_of_next_char): Adjust users.
(bidi_paragraph_init): Likewise. Use DEC_BOTH which is faster
when you need just to move to the previous buffer position.
* xdisp.c (Fcurrent_bidi_paragraph_direction): Use DEC_BOTH.
Karl Fogel [Thu, 7 Mar 2013 22:35:47 +0000 (16:35 -0600)]
* bookmark.el: Define a face to highlight bookmark names in
bookmark menu buffers, where the default is a bold face similarly
to buffer names in buffer menu buffers. Patch by Matthias Meulien
<orontee {_AT_} gmail.com>.
(bookmark-menu-bookmark): New face to highlight bookmark names.
(bookmark-insert-location): Removes dupplicated text property to
conform to buffer list (see `list-buffers')
(bookmark-bmenu-list, bookmark-bmenu-hide-filenames): Apply face
`bookmark-menu-bookmark' to bookmark names.
Karl Fogel [Thu, 7 Mar 2013 22:33:22 +0000 (16:33 -0600)]
* bookmark.el: Display the bookmark list header similarly to the
buffer list header (see `list-buffers'), where the default is now
an immovable/immutable header line. Patch by Matthias Meulien
<orontee {_AT_} gmail.com> with a few tweaks by me.
(bookmark-bmenu-use-header-line): New variable.
(bookmark-bmenu-inline-header-height): New name for
`bookmark-bmenu-header-height', to avoid confusion with the code
for the new immovable header. All references changed.
(bookmark-bmenu-set-header): New function.
(bookmark-bmenu-list, bookmark-bmenu-toggle-filenames):
Conditionalize header construction accordingly.
(bookmark-bmenu-ensure-position): Conditionalize the skipping of
the inline header height.
(bookmark-bmenu-show-filenames, bookmark-bmenu-hide-filenames):
Conditionalize the skipping of the inline header height.
Dmitry Antipov [Thu, 7 Mar 2013 04:42:59 +0000 (08:42 +0400)]
Avoid character to byte conversions in motion subroutines.
* indent.h (compute_motion, vmotion): Add byte position argument.
* indent.c (compute_motion): Use it and avoid CHAR_TO_BYTE.
Add eassert.
(Fcompute_motion): Break long line. Adjust call to compute_motion.
Use list5 for return value.
(vmotion): Use byte position argument and avoid call to CHAR_TO_BYTE.
Adjust comments, style and calls to compute_motion.
(Fvertical_motion): Adjust call to vmotion.
* window.c (Fdelete_other_windows_internal): Record window start
byte position and adjust call to vmotion.
(window_scroll_line_based): Likewise with call to compute_motion.
Use SET_PT_BOTH.
(Frecenter): Adjust calls to vmotion.
Alan Mackenzie [Wed, 6 Mar 2013 14:24:39 +0000 (14:24 +0000)]
Correct the position of point in some line-up functions.
progmodes/cc-align.el (c-lineup-whitesmith-in-block, c-lineup-assignments)
(c-lineup-gcc-asm-reg ): take position of point at column 0 rather than
at a random place in the line.
doc/misc/cc-mode.texi (Custom Line-Up): State explicitly that point
starts at a random position in the line being indented.