Now on revision 111891. ------------------------------------------------------------ revno: 111891 [merge] committer: Glenn Morris branch nick: trunk timestamp: Wed 2013-02-27 22:30:48 -0800 message: Merge from emacs-24; up to r111307 diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2013-02-25 17:36:03 +0000 +++ doc/emacs/ChangeLog 2013-02-28 06:30:48 +0000 @@ -1,3 +1,7 @@ +2013-02-28 Bastien Guerry + + * xresources.texi (GTK resources): Fix broken link. + 2013-02-25 Eli Zaretskii * files.texi (Interlocking): Don't refer to symlinks as the === modified file 'doc/emacs/xresources.texi' --- doc/emacs/xresources.texi 2013-01-01 09:11:05 +0000 +++ doc/emacs/xresources.texi 2013-02-27 07:32:16 +0000 @@ -507,7 +507,7 @@ The following sections describe how to customize GTK+ resources for Emacs. For details about GTK+ resources, see the GTK+ API document at -@uref{http://developer.gnome.org/doc/API/2.0/gtk/gtk-Resource-Files.html}. +@uref{http://developer.gnome.org/gtk2/stable/gtk2-Resource-Files.html}. In GTK+ version 3, GTK+ resources have been replaced by a completely different system. The appearance of GTK+ widgets is now determined by === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2013-02-24 19:45:17 +0000 +++ doc/lispref/ChangeLog 2013-02-28 06:30:48 +0000 @@ -1,3 +1,7 @@ +2013-02-28 Bastien Guerry + + * variables.texi (File Local Variables): Fix reference. + 2013-02-24 Eli Zaretskii * files.texi (Magic File Names): Improve wording and indexing. === modified file 'doc/lispref/variables.texi' --- doc/lispref/variables.texi 2013-01-01 09:11:05 +0000 +++ doc/lispref/variables.texi 2013-02-27 12:12:20 +0000 @@ -1556,7 +1556,7 @@ A file can specify local variable values; Emacs uses these to create buffer-local bindings for those variables in the buffer visiting that -file. @xref{File variables, , Local Variables in Files, emacs, The +file. @xref{File Variables, , Local Variables in Files, emacs, The GNU Emacs Manual}, for basic information about file-local variables. This section describes the functions and variables that affect how file-local variables are processed. === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2013-02-24 19:45:17 +0000 +++ doc/misc/ChangeLog 2013-02-28 06:30:48 +0000 @@ -1,3 +1,15 @@ +2013-02-28 Bastien Guerry + + * org.texi (Visibility cycling): Suggest to set + `org-agenda-inhibit-startup' to nil if user wants the startup + visibility settings to be honored in any circumstances. + (Progress logging, Checkboxes): Fix typos. + +2013-02-28 Michael Albinus + + * tramp.texi (top) [xxx, yyy, trampfn]: Provide two versions of + the macros, for Texinfo 4.13 and 5.0. + 2013-02-24 Michael Albinus Port Tramp documentation to Texinfo 5.0. === modified file 'doc/misc/org.texi' --- doc/misc/org.texi 2013-02-13 04:31:09 +0000 +++ doc/misc/org.texi 2013-02-28 06:30:48 +0000 @@ -2,7 +2,7 @@ @c %**start of header @setfilename ../../info/org @settitle The Org Manual -@set VERSION 7.9.3e (GNU Emacs 24.3) +@set VERSION 7.9.3f (GNU Emacs 24.3) @c Use proper quote and backtick for code sections in PDF output @c Cf. Texinfo manual 14.2 @@ -1296,6 +1296,7 @@ @end table @vindex org-startup-folded +@vindex org-agenda-inhibit-startup @cindex @code{overview}, STARTUP keyword @cindex @code{content}, STARTUP keyword @cindex @code{showall}, STARTUP keyword @@ -1314,6 +1315,10 @@ #+STARTUP: showeverything @end example +The startup visibility options are ignored when the file is open for the +first time during the agenda generation: if you want the agenda to honor +the startup visibility, set @code{org-agenda-inhibit-startup} to nil. + @cindex property, VISIBILITY @noindent Furthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties @@ -2439,7 +2444,7 @@ references connected by two dots @samp{..}. If both fields are in the current row, you may simply use @samp{$2..$7}, but if at least one field is in a different row, you need to use the general @code{@@row$column} -format at least for the first field (i.e., the reference must start with +format at least for the first field (i.e the reference must start with @samp{@@} in order to be interpreted correctly). Examples: @example @@ -4075,7 +4080,7 @@ Org mode can automatically record a timestamp and possibly a note when you mark a TODO item as DONE, or even each time you change the state of -a TODO item. This system is highly configurable, settings can be on a +a TODO item. This system is highly configurable; settings can be on a per-keyword basis and can be localized to a file or even a subtree. For information on how to clock working time for a task, see @ref{Clocking work time}. @@ -4431,7 +4436,7 @@ accordingly.} (@pxref{Plain lists}) can be made into a checkbox by starting it with the string @samp{[ ]}. This feature is similar to TODO items (@pxref{TODO Items}), but is more lightweight. Checkboxes are not included -into the global TODO list, so they are often great to split a task into a +in the global TODO list, so they are often great to split a task into a number of simple steps. Or you can use them in a shopping list. To toggle a checkbox, use @kbd{C-c C-c}, or use the mouse (thanks to Piotr Zielinski's @file{org-mouse.el}). === modified file 'doc/misc/tramp.texi' --- doc/misc/tramp.texi 2013-02-24 19:45:17 +0000 +++ doc/misc/tramp.texi 2013-02-28 06:30:48 +0000 @@ -20,6 +20,11 @@ @c xxx and yyy are auxiliary macros in order to omit leading and @c trailing whitespace. Not very elegant, but I don't know it better. +@c There are subtle differences between texinfo 4.13 and 5.0. We must +@c declare two versions of the macro. This will be improved, hopefully. + +@c Texinfo 5.0. +@ifset txicommandconditionals @macro xxx {one} @set \one\ @end macro @@ -38,6 +43,26 @@ @yyy{\user\,@@}@c \host\@value{postfix}\localname\ @end macro +@end ifset + +@c Texinfo 4.13. +@ifclear txicommandconditionals +@macro xxx {one}@c +@set \one\@c +@end macro + +@macro yyy {one, two}@c +@xxx{x\one\}@c +@ifclear x@c +\one\@w{}\two\@c +@end ifclear +@clear x\one\@c +@end macro + +@macro trampfn {method, user, host, localname}@c +@value{prefix}@yyy{\method\,@value{postfixhop}}@yyy{\user\,@@}\host\@value{postfix}\localname\@c +@end macro +@end ifclear @copying Copyright @copyright{} 1999--2013 Free Software Foundation, Inc. @@ -3892,3 +3917,4 @@ @c * Use `filename' resp. `file name' consistently. @c * Use `host' resp. `machine' consistently. @c * Consistent small or capitalized words especially in menus. +@c * Make a unique declaration of @trampfn. === modified file 'etc/NEWS' --- etc/NEWS 2013-02-25 17:36:03 +0000 +++ etc/NEWS 2013-02-28 06:30:48 +0000 @@ -829,6 +829,63 @@ *** The calendars produced by cal-html include holidays. Customize `cal-html-holidays' to change this. +** CEDET + +*** The major modes from the parser generators "Bovine" and "Wisent" +are now properly integrated in Emacs. The file suffixes ".by" and ".wy" +are in `auto-mode-alist', and the corresponding manuals are included. + +*** EDE + +**** Menu support for the "Configuration" feature. This allows users to +choose the active configuration (such as debug or install) from the menu. + +**** New command `ede-set' to interactively set project-local variables. + +**** Support for compiling, debugging, and running in "generic" projects. + +**** Autoconf editing support for M4 macros with complex arguments. + +**** Compilation support for the "linux" project type. + +**** "simple" projects have been removed; use "generic" projects instead. + +*** Semantic + +**** Support for parsing #include statements inside a namespace in C/C++. + +**** Improved support for 'extern "C"' declarations in C/C++. + +**** The ability to ignore more common special C/C++ preprocessor symbols, +such as '__nonnull' and '__asm'. Add '__cplusplus' macro when parsing C++. +If available, include cdefs.h as an additional source of preprocessor symbols. + +**** Improved C/C++ function pointer parsing. + +**** In Python, support for converting imports to include file names. + +**** Ability to dynamically determine the Python load path. + +**** Support for the Python 'WITH' and 'AT' keywords. + +**** Improved tooltip completion. + +*** SRecode + +**** The SRecode manual is now included. + +**** Tag generation supports constructor/destructor settings and system +include differentiation. + +**** Addition of 'Framework' support: Frameworks are specified when a +particular kind of library (such as Android) is needed in a common language +mode (like Java). + +**** Support for nested templates and let variables override based on priority. + +**** Support for merging tables from multiple related modes, such as +default -> c++ -> arduino. + ** Compile has a new option `compilation-always-kill'. ** Customize @@ -1168,6 +1225,25 @@ *** Last-modified time stamps in undo lists now are of the form (t HI-SECS LO-SECS USECS PSECS) instead of (t HI-SECS . LO-SECS). +** EIEIO + +*** Improved security when handling persistent objects: + +**** `eieio-persistent-read' now features optional arguments for specifying +the class to load, as well as a flag stating whether subclasses are allowed; +if provided, other classes will be rejected by the reader. For +compatibility with existing code, if the class is omitted only a +warning is issued. + +**** New specialized reader for pulling in classes and signaling errors +without evaluation of suspicious code. + +**** All slots that contain objects must have a :type. Slots with lists +of objects must use a new type predicate for a list of an object type. + +*** Support for `find-function' and similar utilities, through the addition +of filename support to generated symbols. + ** Floating point functions now always return special values like NaN, instead of signaling errors, if given invalid args; e.g., (log -1.0). Previously, they returned NaNs on some platforms but signaled errors === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-02-28 04:02:36 +0000 +++ lisp/ChangeLog 2013-02-28 06:30:48 +0000 @@ -1,3 +1,7 @@ +2013-02-28 Glenn Morris + + * textmodes/paragraphs.el (mark-paragraph): Doc fix. + 2013-02-28 Stefan Monnier * doc-view.el: Preserve h&v scroll across C-c C-c C-c C-c. === modified file 'lisp/org/ChangeLog' --- lisp/org/ChangeLog 2013-02-07 08:31:21 +0000 +++ lisp/org/ChangeLog 2013-02-28 06:30:48 +0000 @@ -1,3 +1,73 @@ +2013-02-28 Achim Gratz + + * org.el (org-org-menu): Use correct key "C-u C-c C-x !" to do + org-reload uncompiled in the menu. + +2013-02-28 Bastien Guerry + + * org-indent.el (org-indent-add-properties): Bugfix: prevent + negative value for `added-ind-per-lvl'. + + * org.el (org-mode): Add `org-fix-ellipsis-at-bol' to + `isearch-mode-end-hook' so that any isearch fixes the problem with + ellipsis on the first line. + (org-fix-ellipsis-at-bol): New defsubst. + (org-show-context, org-isearch-end): Use it. + + * org.el (org-show-context): Remove useless catch. + Make sure the top of the window is a visible headline. + (org-activate-plain-links): Remove unused catch. + + * org-macs.el (org-get-alist-option): Return nil, not (nil), + so that `org-show-context' DTRT. + + * org.el (org-imenu-get-tree): Fix bug when matching against empty + headlines. + + * org.el (org-overview): Stay on current line. + (org-map-entries): Fix docstring. + (org-at-clock-log-p): Delete. + * org-clock.el (org-at-clock-log-p): Move here. + + * org.el (org-tsr-regexp-both): Don't activate dates in links. + (org-activate-dates): Change match boundaries according to the new + value of `org-tsr-regexp-both'. + + * org-agenda.el (org-agenda-to-appt): Fix typos. + + * org-agenda.el (org-agenda-local-vars): Don't include + `org-agenda-show-window' as it needs to be checked outside of the + agenda window. + + * org.el (org-set-tags-command): Fix bug when setting tags for + multiple headlines in an active region. + + * org-mobile.el (org-mobile-edit): DTRT when inserting a heading + in an invisible region. + + * org.el (org-insert-heading-respect-content): Add docstring. + New `invisible-ok' parameter. + (org-insert-todo-heading-respect-content): Add docstring. + + * ob-tangle.el (org-babel-tangle-collect-blocks): + Bugfix: remove code references from blocks. + + * org-agenda.el (org-agenda-schedule, org-agenda-deadline): + Cosmetic changes. + (org-agenda-show-new-time): Fix bug when displaying a temporary + overlay with the scheduled/deadline information. + + * org.el (org-fill-paragraph-with-timestamp-nobreak-p): New function. + (org-setup-filling): Use it to prevent breaking a timestamp when + filling a paragraph. + + * org-id.el (org-id-get-with-outline-path-completion): Fix docstring. + +2013-02-28 Tim Burt (tiny change) + + * org-datetree.el (org-datetree-find-year-create): + Match headlines with tags. + 2013-02-07 Bastien Guerry * org-agenda.el (org-agenda-get-deadlines) === modified file 'lisp/org/ob-tangle.el' --- lisp/org/ob-tangle.el 2013-01-01 09:11:05 +0000 +++ lisp/org/ob-tangle.el 2013-02-28 00:31:26 +0000 @@ -371,6 +371,10 @@ (unless (and language (not (string= language src-lang))) (let* ((info (org-babel-get-src-block-info)) (params (nth 2 info)) + (extra (nth 3 info)) + (cref-fmt (or (and (string-match "-l \"\\(.+\\)\"" extra) + (match-string 1 extra)) + org-coderef-label-format)) (link ((lambda (link) (and (string-match org-bracket-link-regexp link) (match-string 1 link))) @@ -388,6 +392,11 @@ ((lambda (body) ;; run the tangle-body-hook (with-temp-buffer (insert body) + (when (string-match "-r" extra) + (goto-char (point-min)) + (while (re-search-forward + (replace-regexp-in-string "%s" ".+" cref-fmt) nil t) + (replace-match ""))) (run-hooks 'org-babel-tangle-body-hook) (buffer-string))) ((lambda (body) ;; expand the body in language specific manner === modified file 'lisp/org/org-agenda.el' --- lisp/org/org-agenda.el 2013-02-07 07:11:59 +0000 +++ lisp/org/org-agenda.el 2013-02-28 00:31:26 +0000 @@ -1934,11 +1934,6 @@ (message "Sticky agenda was %s" (if org-agenda-sticky "enabled" "disabled")))))) -(autoload 'org-toggle-sticky-agenda "org-agenda" "\ -Toggle `org-agenda-sticky'. - -\(fn &optional ARG)" t nil) - (defvar org-agenda-buffer nil "Agenda buffer currently being generated.") @@ -1971,7 +1966,6 @@ org-agenda-last-search-view-search-was-boolean org-agenda-filtered-by-category org-agenda-filter-form - org-agenda-show-window org-agenda-cycle-counter org-agenda-last-prefix-arg) "Variables that must be local in agenda buffers to allow multiple buffers.") @@ -2615,43 +2609,6 @@ ((equal org-keys "!") (customize-variable 'org-stuck-projects)) (t (error "Invalid agenda key")))))) -(autoload 'org-agenda "org-agenda" "\ -Dispatch agenda commands to collect entries to the agenda buffer. -Prompts for a command to execute. Any prefix arg will be passed -on to the selected command. The default selections are: - -a Call `org-agenda-list' to display the agenda for current day or week. -t Call `org-todo-list' to display the global todo list. -T Call `org-todo-list' to display the global todo list, select only - entries with a specific TODO keyword (the user gets a prompt). -m Call `org-tags-view' to display headlines with tags matching - a condition (the user is prompted for the condition). -M Like `m', but select only TODO entries, no ordinary headlines. -L Create a timeline for the current buffer. -e Export views to associated files. -s Search entries for keywords. -S Search entries for keywords, only with TODO keywords. -/ Multi occur across all agenda files and also files listed - in `org-agenda-text-search-extra-files'. -< Restrict agenda commands to buffer, subtree, or region. - Press several times to get the desired effect. -> Remove a previous restriction. -# List \"stuck\" projects. -! Configure what \"stuck\" means. -C Configure custom agenda commands. - -More commands can be added by configuring the variable -`org-agenda-custom-commands'. In particular, specific tags and TODO keyword -searches can be pre-defined in this way. - -If the current buffer is in Org-mode and visiting a file, you can also -first press `<' once to indicate that the agenda should be temporarily -\(until the next use of \\[org-agenda]) restricted to the current file. -Pressing `<' twice means to restrict to the current subtree or region -\(if active). - -\(fn &optional ARG ORG-KEYS RESTRICTION)" t nil) - (defun org-agenda-append-agenda () "Append another agenda view to the current one. This function allows interactive building of block agendas. @@ -2947,17 +2904,6 @@ (set-buffer org-agenda-buffer-name) (princ (buffer-string))) -(autoload 'org-batch-agenda "org-agenda" "\ -Run an agenda command in batch mode and send the result to STDOUT. -If CMD-KEY is a string of length 1, it is used as a key in -`org-agenda-custom-commands' and triggers this command. If it is a -longer string it is used as a tags/todo match string. -Parameters are alternating variable names and values that will be bound -before running the agenda command. - -\(fn CMD-KEY &rest PARAMETERS)" nil t) -(def-edebug-spec org-batch-agenda (form &rest sexp)) - (defvar org-agenda-info nil) ;;;###autoload @@ -3015,44 +2961,6 @@ ",")) (princ "\n"))))) -(autoload 'org-batch-agenda-csv "org-agenda" "\ -Run an agenda command in batch mode and send the result to STDOUT. -If CMD-KEY is a string of length 1, it is used as a key in -`org-agenda-custom-commands' and triggers this command. If it is a -longer string it is used as a tags/todo match string. -Parameters are alternating variable names and values that will be bound -before running the agenda command. - -The output gives a line for each selected agenda item. Each -item is a list of comma-separated values, like this: - -category,head,type,todo,tags,date,time,extra,priority-l,priority-n - -category The category of the item -head The headline, without TODO kwd, TAGS and PRIORITY -type The type of the agenda entry, can be - todo selected in TODO match - tagsmatch selected in tags match - diary imported from diary - deadline a deadline on given date - scheduled scheduled on given date - timestamp entry has timestamp on given date - closed entry was closed on given date - upcoming-deadline warning about deadline - past-scheduled forwarded scheduled item - block entry has date block including g. date -todo The todo keyword, if any -tags All tags including inherited ones, separated by colons -date The relevant date, like 2007-2-14 -time The time, like 15:00-16:50 -extra Sting with extra planning info -priority-l The priority letter if any was given -priority-n The computed numerical priority -agenda-day The day in the agenda where this is listed - -\(fn CMD-KEY &rest PARAMETERS)" nil t) -(def-edebug-spec org-batch-agenda-csv (form &rest sexp)) - (defun org-fix-agenda-info (props) "Make sure all properties on an agenda item have a canonical form. This ensures the export commands can easily use it." @@ -3100,11 +3008,6 @@ (interactive) (eval (list 'org-batch-store-agenda-views))) -(autoload 'org-store-agenda-views "org-agenda" "\ - - -\(fn &rest PARAMETERS)" t nil) - ;;;###autoload (defmacro org-batch-store-agenda-views (&rest parameters) "Run all custom agenda commands that have a file argument." @@ -3140,12 +3043,6 @@ (and (get-buffer bufname) (kill-buffer bufname))))))) -(autoload 'org-batch-store-agenda-views "org-agenda" "\ -Run all custom agenda commands that have a file argument. - -\(fn &rest PARAMETERS)" nil t) -(def-edebug-spec org-batch-store-agenda-views (&rest sexp)) - (defvar org-agenda-current-span nil "The current span used in the agenda view.") ; local variable in the agenda buffer (defun org-agenda-mark-header-line (pos) @@ -4204,20 +4101,6 @@ (setq buffer-read-only t) (message "")))) -(autoload 'org-agenda-list "org-agenda" "\ -Produce a daily/weekly view from all files in variable `org-agenda-files'. -The view will be for the current day or week, but from the overview buffer -you will be able to go to other days/weeks. - -With a numeric prefix argument in an interactive call, the agenda will -span ARG days. Lisp programs should instead specify SPAN to change -the number of days. SPAN defaults to `org-agenda-span'. - -START-DAY defaults to TODAY, or to the most recent match for the weekday -given in `org-agenda-start-on-weekday'. - -\(fn &optional ARG START-DAY SPAN)" t nil) - (defun org-agenda-ndays-to-span (n) "Return a span symbol for a span of N days, or N if none matches." (cond ((symbolp n) n) @@ -4527,52 +4410,6 @@ (org-agenda-finalize) (setq buffer-read-only t)))) -(autoload 'org-search-view "org-agenda" "\ -Show all entries that contain a phrase or words or regular expressions. - -With optional prefix argument TODO-ONLY, only consider entries that are -TODO entries. The argument STRING can be used to pass a default search -string into this function. If EDIT-AT is non-nil, it means that the -user should get a chance to edit this string, with cursor at position -EDIT-AT. - -The search string can be viewed either as a phrase that should be found as -is, or it can be broken into a number of snippets, each of which must match -in a Boolean way to select an entry. The default depends on the variable -`org-agenda-search-view-always-boolean'. -Even if this is turned off (the default) you can always switch to -Boolean search dynamically by preceding the first word with \"+\" or \"-\". - -The default is a direct search of the whole phrase, where each space in -the search string can expand to an arbitrary amount of whitespace, -including newlines. - -If using a Boolean search, the search string is split on whitespace and -each snippet is searched separately, with logical AND to select an entry. -Words prefixed with a minus must *not* occur in the entry. Words without -a prefix or prefixed with a plus must occur in the entry. Matching is -case-insensitive. Words are enclosed by word delimiters (i.e. they must -match whole words, not parts of a word) if -`org-agenda-search-view-force-full-words' is set (default is nil). - -Boolean search snippets enclosed by curly braces are interpreted as -regular expressions that must or (when preceded with \"-\") must not -match in the entry. Snippets enclosed into double quotes will be taken -as a whole, to include whitespace. - -- If the search string starts with an asterisk, search only in headlines. -- If (possibly after the leading star) the search string starts with an - exclamation mark, this also means to look at TODO entries only, an effect - that can also be achieved with a prefix argument. -- If (possibly after star and exclamation mark) the search string starts - with a colon, this will mean that the (non-regexp) snippets of the - Boolean search must match as full words. - -This command searches the agenda files, and in addition the files listed -in `org-agenda-text-search-extra-files'. - -\(fn &optional TODO-ONLY STRING EDIT-AT)" t nil) - ;;; Agenda TODO list (defvar org-select-this-todo-keyword nil) @@ -4663,15 +4500,6 @@ (org-agenda-finalize) (setq buffer-read-only t)))) -(autoload 'org-todo-list "org-agenda" "\ -Show all (not done) TODO entries from all agenda file in a single list. -The prefix arg can be used to select a specific TODO keyword and limit -the list to these. When using \\[universal-argument], you will be prompted -for a keyword. A numeric prefix directly selects the Nth keyword in -`org-todo-keywords-1'. - -\(fn &optional ARG)" t nil) - ;;; Agenda tags match ;;;###autoload @@ -4757,12 +4585,6 @@ (org-agenda-finalize) (setq buffer-read-only t)))) -(autoload 'org-tags-view "org-agenda" "\ -Show all headlines for all `org-agenda-files' matching a TAGS criterion. -The prefix arg TODO-ONLY limits the search to TODO entries. - -\(fn &optional TODO-ONLY MATCH)" t nil) - ;;; Agenda Finding stuck projects (defvar org-agenda-skip-regexp nil @@ -4991,14 +4813,6 @@ (setq org-agenda-redo-command `(org-agenda-list-stuck-projects ,current-prefix-arg))))) -(autoload 'org-agenda-list-stuck-projects "org-agenda" "\ -Create agenda view for projects that are stuck. -Stuck projects are project that have no next actions. For the definitions -of what a project is and how to check if it stuck, customize the variable -`org-stuck-projects'. - -\(fn &rest IGNORE)" t nil) - ;;; Diary integration (defvar org-disable-agenda-to-diary nil) ;Dynamically-scoped param. @@ -5177,35 +4991,6 @@ (if results (concat (org-agenda-finalize-entries results) "\n")))) -(autoload 'org-diary "org-agenda" "\ -Return diary information from org files. -This function can be used in a \"sexp\" diary entry in the Emacs calendar. -It accesses org files and extracts information from those files to be -listed in the diary. The function accepts arguments specifying what -items should be listed. For a list of arguments allowed here, see the -variable `org-agenda-entry-types'. - -The call in the diary file should look like this: - - &%%(org-diary) ~/path/to/some/orgfile.org - -Use a separate line for each org file to check. Or, if you omit the file name, -all files listed in `org-agenda-files' will be checked automatically: - - &%%(org-diary) - -If you don't give any arguments (as in the example above), the default -arguments (:deadline :scheduled :timestamp :sexp) are used. -So the example above may also be written as - - &%%(org-diary :deadline :timestamp :sexp :scheduled) - -The function expects the lisp variables `entry' and `date' to be provided -by the caller, because this is how the calendar works. Don't use this -function from a program - use `org-agenda-get-day-entries' instead. - -\(fn &rest ARGS)" nil nil) - ;;; Agenda entry finders (defun org-agenda-get-day-entries (file date &rest args) @@ -5401,11 +5186,6 @@ (match-string 1) org-agenda-todo-ignore-timestamp)) (t)))))))))) -(autoload 'org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item "org-agenda" "\ -Do we have a reason to ignore this TODO entry because it has a time stamp? - -\(fn &optional END)" nil nil) - (defun org-agenda-get-timestamps (&optional deadline-results) "Return the date stamp information for agenda display." (let* ((props (list 'face 'org-agenda-calendar-event @@ -8686,9 +8466,8 @@ (defun org-agenda-show-new-time (marker stamp &optional prefix) "Show new date stamp via text properties." ;; We use text properties to make this undoable - (let ((inhibit-read-only t) - (buffer-invisibility-spec)) - (setq stamp (concat " " prefix " => " stamp)) + (let ((inhibit-read-only t)) + (setq stamp (concat prefix " => " stamp " ")) (save-excursion (goto-char (point-max)) (while (not (bobp)) @@ -8750,7 +8529,7 @@ (widen) (goto-char pos) (setq ts (org-schedule arg time))) - (org-agenda-show-new-time marker ts "S")) + (org-agenda-show-new-time marker ts " S")) (message "%s" ts))) (defun org-agenda-deadline (arg &optional time) @@ -8770,7 +8549,7 @@ (widen) (goto-char pos) (setq ts (org-deadline arg time))) - (org-agenda-show-new-time marker ts "D")) + (org-agenda-show-new-time marker ts " D")) (message "%s" ts))) (defun org-agenda-clock-in (&optional arg) @@ -9131,12 +8910,6 @@ (calendar-cursor-to-date)) nil)) -(autoload 'org-calendar-goto-agenda "org-agenda" "\ -Compute the Org-mode agenda for the calendar date displayed at the cursor. -This is a command that has to be installed in `calendar-mode-map'. - -\(fn)" t nil) - (defun org-agenda-convert-date () (interactive) (org-agenda-check-type t 'agenda 'timeline) @@ -9519,7 +9292,7 @@ and :timestamp entries. See the docstring of `org-diary' for details and examples. -If an entry as a APPT_WARNTIME property, its value will be used +If an entry has a APPT_WARNTIME property, its value will be used to override `appt-message-warning-time'." (interactive "P") (if refresh (setq appt-time-msg-list nil)) @@ -9579,40 +9352,6 @@ (message "No event to add") (message "Added %d event%s for today" cnt (if (> cnt 1) "s" ""))))) -(autoload 'org-agenda-to-appt "org-agenda" "\ -Activate appointments found in `org-agenda-files'. -With a \\[universal-argument] prefix, refresh the list of -appointments. - -If FILTER is t, interactively prompt the user for a regular -expression, and filter out entries that don't match it. - -If FILTER is a string, use this string as a regular expression -for filtering entries out. - -If FILTER is a function, filter out entries against which -calling the function returns nil. This function takes one -argument: an entry from `org-agenda-get-day-entries'. - -FILTER can also be an alist with the car of each cell being -either 'headline or 'category. For example: - - '((headline \"IMPORTANT\") - (category \"Work\")) - -will only add headlines containing IMPORTANT or headlines -belonging to the \"Work\" category. - -ARGS are symbols indicating what kind of entries to consider. -By default `org-agenda-to-appt' will use :deadline, :scheduled -and :timestamp entries. See the docstring of `org-diary' for -details and examples. - -If an entry as a APPT_WARNTIME property, its value will be used -to override `appt-message-warning-time'. - -\(fn &optional REFRESH FILTER &rest ARGS)" t nil) - (defun org-agenda-todayp (date) "Does DATE mean today, when considering `org-extend-today-until'?" (let ((today (org-today)) === modified file 'lisp/org/org-clock.el' --- lisp/org/org-clock.el 2013-02-07 07:11:59 +0000 +++ lisp/org/org-clock.el 2013-02-28 00:31:26 +0000 @@ -1545,12 +1545,6 @@ (org-remove-empty-drawer-at clock-drawer (point)) (forward-line 1)))))) -(defun org-at-clock-log-p nil - "Is the cursor on the clock log line?" - (save-excursion - (move-beginning-of-line 1) - (looking-at "^[ \t]*CLOCK:"))) - (defun org-clock-timestamps-up nil "Increase CLOCK timestamps at cursor." (interactive) === modified file 'lisp/org/org-datetree.el' --- lisp/org/org-datetree.el 2013-01-01 09:11:05 +0000 +++ lisp/org/org-datetree.el 2013-02-28 00:31:26 +0000 @@ -72,7 +72,7 @@ (goto-char (prog1 (point) (widen)))))) (defun org-datetree-find-year-create (year) - (let ((re "^\\*+[ \t]+\\([12][0-9][0-9][0-9]\\)\\s-*$") + (let ((re "^\\*+[ \t]+\\([12][0-9]\\{3\\}\\)\\(.*?\\([ \t]:[[:alnum:]:_@#%]+:\\)?\\s-*$\\)") match) (goto-char (point-min)) (while (and (setq match (re-search-forward re nil t)) === modified file 'lisp/org/org-docview.el' --- lisp/org/org-docview.el 2013-01-01 09:11:05 +0000 +++ lisp/org/org-docview.el 2013-02-28 00:31:26 +0000 @@ -49,7 +49,7 @@ (declare-function image-mode-window-get "ext:image-mode" (prop &optional winprops)) -(autoload 'doc-view-goto-page "doc-view") +(org-autoload "doc-view" '(doc-view-goto-page)) (org-add-link-type "docview" 'org-docview-open) (add-hook 'org-store-link-functions 'org-docview-store-link) === modified file 'lisp/org/org-id.el' --- lisp/org/org-id.el 2013-01-13 10:33:16 +0000 +++ lisp/org/org-id.el 2013-02-28 00:31:26 +0000 @@ -259,11 +259,11 @@ id))))) (defun org-id-get-with-outline-path-completion (&optional targets) - "Use outline-path-completion to retrieve the ID of an entry. -TARGETS may be a setting for `org-refile-targets' to define the eligible -headlines. When omitted, all headlines in all agenda files are -eligible. -It returns the ID of the entry. If necessary, the ID is created." + "Use `outline-path-completion' to retrieve the ID of an entry. +TARGETS may be a setting for `org-refile-targets' to define +eligible headlines. When omitted, all headlines in the current +file are eligible. This function returns the ID of the entry. +If necessary, the ID is created." (let* ((org-refile-targets (or targets '((nil . (:maxlevel . 10))))) (org-refile-use-outline-path (if (caar org-refile-targets) 'file t)) === modified file 'lisp/org/org-indent.el' --- lisp/org/org-indent.el 2013-02-07 07:11:59 +0000 +++ lisp/org/org-indent.el 2013-02-28 00:31:26 +0000 @@ -328,7 +328,7 @@ ;; inline task or not. (let* ((case-fold-search t) (limited-re (org-get-limited-outline-regexp)) - (added-ind-per-lvl (1- org-indent-indentation-per-level)) + (added-ind-per-lvl (abs (1- org-indent-indentation-per-level))) (pf (save-excursion (and (ignore-errors (let ((outline-regexp limited-re)) (org-back-to-heading t))) === modified file 'lisp/org/org-macs.el' --- lisp/org/org-macs.el 2013-02-07 07:11:59 +0000 +++ lisp/org/org-macs.el 2013-02-28 00:31:26 +0000 @@ -263,7 +263,8 @@ (cond ((eq key t) t) ((eq option t) t) ((assoc key option) (cdr (assoc key option))) - (t (cdr (assq 'default option))))) + (t (let ((r (cdr (assq 'default option)))) + (if (listp r) (delq nil r) r))))) (defsubst org-check-external-command (cmd &optional use no-error) "Check if external program CMD for USE exists, error if not. === modified file 'lisp/org/org-mobile.el' --- lisp/org/org-mobile.el 2013-01-13 10:33:16 +0000 +++ lisp/org/org-mobile.el 2013-02-28 00:31:26 +0000 @@ -1064,7 +1064,7 @@ (if (org-on-heading-p) ; if false we are in top-level of file (progn (end-of-line 1) - (org-insert-heading-respect-content) + (org-insert-heading-respect-content t) (org-demote)) (beginning-of-line) (insert "* ")) === modified file 'lisp/org/org-version.el' --- lisp/org/org-version.el 2013-02-07 07:11:59 +0000 +++ lisp/org/org-version.el 2013-02-28 00:31:26 +0000 @@ -5,13 +5,13 @@ (defun org-release () "The release version of org-mode. Inserted by installing org-mode or when a release is made." - (let ((org-release "7.9.3e")) + (let ((org-release "7.9.3f")) org-release)) ;;;###autoload (defun org-git-version () "The Git version of org-mode. Inserted by installing org-mode or when a release is made." - (let ((org-git-version "7.9.3e-3-gb07a9b")) + (let ((org-git-version "release_7.9.3f-17-g7524ef")) org-git-version)) ;;;###autoload (defvar org-odt-data-dir "/usr/share/emacs/etc/org" === modified file 'lisp/org/org.el' --- lisp/org/org.el 2013-02-12 17:36:54 +0000 +++ lisp/org/org.el 2013-02-28 00:31:26 +0000 @@ -114,7 +114,6 @@ (declare-function org-inlinetask-outline-regexp "org-inlinetask" ()) (declare-function org-inlinetask-toggle-visibility "org-inlinetask" ()) (declare-function org-pop-to-buffer-same-window "org-compat" (&optional buffer-or-name norecord label)) -(declare-function org-at-clock-log-p "org-clock" ()) (declare-function org-clock-timestamps-up "org-clock" ()) (declare-function org-clock-timestamps-down "org-clock" ()) (declare-function org-clock-sum-current-item "org-clock" (&optional tstart)) @@ -467,7 +466,11 @@ #+STARTUP: fold (or `overview', this is equivalent) #+STARTUP: nofold (or `showall', this is equivalent) #+STARTUP: content - #+STARTUP: showeverything" + #+STARTUP: showeverything + +By default, this option is ignored when Org opens agenda files +for the first time. If you want the agenda to honor the startup +option, set `org-agenda-inhibit-startup' to nil." :group 'org-startup :type '(choice (const :tag "nofold: show all" nil) @@ -3913,6 +3916,7 @@ (save-excursion (goto-char (org-table-begin 'any)) (looking-at org-table1-hline-regexp)))) + (defun org-table-recognize-table.el () "If there is a table.el table nearby, recognize it and move into it." (if org-table-tab-recognizes-table.el @@ -3948,7 +3952,6 @@ nil)) (defvar org-table-clean-did-remove-column nil) - (defun org-table-map-tables (function &optional quietly) "Apply FUNCTION to the start of all tables in the buffer." (save-excursion @@ -4969,7 +4972,8 @@ (org-add-hook 'isearch-mode-end-hook 'org-isearch-end 'append 'local) ;; Emacs 22 deals with this through a special variable (org-set-local 'outline-isearch-open-invisible-function - (lambda (&rest ignore) (org-show-context 'isearch)))) + (lambda (&rest ignore) (org-show-context 'isearch))) + (org-add-hook 'isearch-mode-end-hook 'org-fix-ellipsis-at-bol 'append 'local)) ;; Setup the pcomplete hooks (set (make-local-variable 'pcomplete-command-completion-function) @@ -5008,6 +5012,8 @@ (put 'org-mode 'flyspell-mode-predicate 'org-mode-flyspell-verify) +(defsubst org-fix-ellipsis-at-bol () + (save-excursion (goto-char (window-start)) (recenter 0))) (defun org-find-invisible-foreground () (let ((candidates (remove @@ -5205,8 +5211,9 @@ (defconst org-tsr-regexp (concat org-ts-regexp "\\(--?-?" org-ts-regexp "\\)?") "Regular expression matching a time stamp or time stamp range.") -(defconst org-tsr-regexp-both (concat org-ts-regexp-both "\\(--?-?" - org-ts-regexp-both "\\)?") +(defconst org-tsr-regexp-both + (concat org-ts-regexp-both "\\(--?-?" + org-ts-regexp-both "\\)?") "Regular expression matching a time stamp or time stamp range. The time stamps may be either active or inactive.") @@ -5298,21 +5305,20 @@ (defun org-activate-plain-links (limit) "Run through the buffer and add overlays to links." - (catch 'exit - (let (f) - (when (and (re-search-forward (concat org-plain-link-re) limit t) - (not (org-in-src-block-p))) - (org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0)) - (setq f (get-text-property (match-beginning 0) 'face)) - (unless (or (org-in-src-block-p) - (eq f 'org-tag) - (and (listp f) (memq 'org-tag f))) - (add-text-properties (match-beginning 0) (match-end 0) - (list 'mouse-face 'highlight - 'face 'org-link - 'keymap org-mouse-map)) - (org-rear-nonsticky-at (match-end 0))) - t)))) + (let (f) + (when (and (re-search-forward (concat org-plain-link-re) limit t) + (not (org-in-src-block-p))) + (org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0)) + (setq f (get-text-property (match-beginning 0) 'face)) + (unless (or (org-in-src-block-p) + (eq f 'org-tag) + (and (listp f) (memq 'org-tag f))) + (add-text-properties (match-beginning 0) (match-end 0) + (list 'mouse-face 'highlight + 'face 'org-link + 'keymap org-mouse-map)) + (org-rear-nonsticky-at (match-end 0))) + t))) (defun org-activate-code (limit) (if (re-search-forward "^[ \t]*\\(:\\(?: .*\\|$\\)\n?\\)" limit t) @@ -5510,7 +5516,8 @@ (defun org-activate-dates (limit) "Run through the buffer and add overlays to dates." - (if (re-search-forward org-tsr-regexp-both limit t) + (if (and (re-search-forward org-tsr-regexp-both limit t) + (not (equal (char-before (match-beginning 0)) 91))) (progn (org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0)) (add-text-properties (match-beginning 0) (match-end 0) @@ -6431,13 +6438,16 @@ first headline is not level one, then (hide-sublevels 1) gives confusing results." (interactive) - (let ((level (save-excursion + (let ((l (org-current-line)) + (level (save-excursion (goto-char (point-min)) (if (re-search-forward (concat "^" outline-regexp) nil t) (progn (goto-char (match-beginning 0)) (funcall outline-level)))))) - (and level (hide-sublevels level)))) + (and level (hide-sublevels level)) + (recenter '(4)) + (org-goto-line l))) (defun org-content (&optional arg) "Show all headlines in the buffer, like a table of contents. @@ -7231,12 +7241,14 @@ (org-move-subtree-down) (end-of-line 1)) -(defun org-insert-heading-respect-content () - (interactive) +(defun org-insert-heading-respect-content (invisible-ok) + "Insert heading with `org-insert-heading-respect-content' set to t." + (interactive "P") (let ((org-insert-heading-respect-content t)) - (org-insert-heading t))) + (org-insert-heading t invisible-ok))) (defun org-insert-todo-heading-respect-content (&optional force-state) + "Insert TODO heading with `org-insert-heading-respect-content' set to t." (interactive "P") (let ((org-insert-heading-respect-content t)) (org-insert-todo-heading force-state t))) @@ -12835,27 +12847,27 @@ (following-p (org-get-alist-option org-show-following-heading key)) (entry-p (org-get-alist-option org-show-entry-below key)) (siblings-p (org-get-alist-option org-show-siblings key))) - (catch 'exit - ;; Show heading or entry text - (if (and heading-p (not entry-p)) - (org-flag-heading nil) ; only show the heading - (and (or entry-p (outline-invisible-p) (org-invisible-p2)) - (org-show-hidden-entry))) ; show entire entry - (when following-p - ;; Show next sibling, or heading below text - (save-excursion - (and (if heading-p (org-goto-sibling) (outline-next-heading)) - (org-flag-heading nil)))) - (when siblings-p (org-show-siblings)) - (when hierarchy-p - ;; show all higher headings, possibly with siblings - (save-excursion - (while (and (condition-case nil - (progn (org-up-heading-all 1) t) - (error nil)) - (not (bobp))) - (org-flag-heading nil) - (when siblings-p (org-show-siblings)))))))) + ;; Show heading or entry text + (if (and heading-p (not entry-p)) + (org-flag-heading nil) ; only show the heading + (and (or entry-p (outline-invisible-p) (org-invisible-p2)) + (org-show-hidden-entry))) ; show entire entry + (when following-p + ;; Show next sibling, or heading below text + (save-excursion + (and (if heading-p (org-goto-sibling) (outline-next-heading)) + (org-flag-heading nil)))) + (when siblings-p (org-show-siblings)) + (when hierarchy-p + ;; show all higher headings, possibly with siblings + (save-excursion + (while (and (condition-case nil + (progn (org-up-heading-all 1) t) + (error nil)) + (not (bobp))) + (org-flag-heading nil) + (when siblings-p (org-show-siblings))))) + (org-fix-ellipsis-at-bol))) (defvar org-reveal-start-hook nil "Hook run before revealing a location.") @@ -13597,7 +13609,9 @@ (if (or (org-at-heading-p) (and arg (org-before-first-heading-p))) (org-set-tags arg just-align) (save-excursion - (org-back-to-heading t) + (unless (and (org-region-active-p) + org-loop-over-headlines-in-active-region) + (org-back-to-heading t)) (org-set-tags arg just-align)))) (defun org-set-tags-to (data) @@ -14101,13 +14115,13 @@ The remaining args are treated as settings for the skipping facilities of the scanner. The following items can be given here: - archive skip trees with the archive tag. + archive skip trees with the archive tag comment skip trees with the COMMENT keyword function or Emacs Lisp form: - will be used as value for `org-agenda-skip-function', so whenever - the function returns t, FUNC will not be called for that - entry and search will continue from the point where the - function leaves it. + will be used as value for `org-agenda-skip-function', so + whenever the function returns a position, FUNC will not be + called for that entry and search will continue from the + position returned If your function needs to retrieve the tags including inherited tags at the *current* entry, you can use the value of the variable @@ -16401,6 +16415,12 @@ (message "Timestamp is now %sactive" (if (equal (char-after beg) ?<) "" "in"))))) +(defun org-at-clock-log-p nil + "Is the cursor on the clock log line?" + (save-excursion + (move-beginning-of-line 1) + (looking-at "^[ \t]*CLOCK:"))) + (defvar org-clock-history) ; defined in org-clock.el (defvar org-clock-adjust-closest nil) ; defined in org-clock.el (defun org-timestamp-change (n &optional what updown) @@ -18737,8 +18757,7 @@ (throw 'exit t)))) nil)))) -(autoload 'org-element-at-point "org-element") -(autoload 'org-element-type "org-element") +(org-autoload "org-element" '(org-element-at-point org-element-type)) (declare-function org-element-at-point "org-element" (&optional keep-trail)) (declare-function org-element-type "org-element" (element)) @@ -19840,7 +19859,7 @@ ("Refresh/Reload" ["Refresh setup current buffer" org-mode-restart t] ["Reload Org (after update)" org-reload t] - ["Reload Org uncompiled" (org-reload t) :active t :keys "C-u C-c C-x r"]) + ["Reload Org uncompiled" (org-reload t) :active t :keys "C-u C-c C-x !"]) )) (defun org-info (&optional node) @@ -20970,7 +20989,8 @@ (org-uniquify (append fill-nobreak-predicate '(org-fill-paragraph-separate-nobreak-p - org-fill-line-break-nobreak-p))))) + org-fill-line-break-nobreak-p + org-fill-paragraph-with-timestamp-nobreak-p))))) (org-set-local 'fill-paragraph-function 'org-fill-paragraph) (org-set-local 'auto-fill-inhibit-regexp nil) (org-set-local 'adaptive-fill-function 'org-adaptive-fill-function) @@ -20989,6 +21009,11 @@ (skip-chars-backward "\\\\") (looking-at "\\\\\\\\\\($\\|[^\\\\]\\)"))) +(defun org-fill-paragraph-with-timestamp-nobreak-p () + "Non-nil when a line break at point would insert a new item." + (and (org-at-timestamp-p t) + (not (looking-at org-ts-regexp-both)))) + (declare-function message-in-body-p "message" ()) (defvar org-element--affiliated-re) ; From org-element.el (defvar orgtbl-line-start-regexp) ; From org-table.el @@ -22159,7 +22184,8 @@ isearch-mode-end-hook-quit) ;; Only when the isearch was not quitted. (org-add-hook 'post-command-hook 'org-isearch-post-command - 'append 'local))))) + 'append 'local))) + (org-fix-ellipsis-at-bol))) (defun org-isearch-post-command () "Remove self from hook, and show context." @@ -22190,7 +22216,7 @@ (re (concat "^" (org-get-limited-outline-regexp))) (subs (make-vector (1+ n) nil)) (last-level 0) - m level head) + m level head0 head) (save-excursion (save-restriction (widen) @@ -22198,9 +22224,9 @@ (while (re-search-backward re nil t) (setq level (org-reduced-level (funcall outline-level))) (when (and (<= level n) - (looking-at org-complex-heading-regexp)) - (setq head (org-link-display-format - (org-match-string-no-properties 4)) + (looking-at org-complex-heading-regexp) + (setq head0 (org-match-string-no-properties 4))) + (setq head (org-link-display-format head0) m (org-imenu-new-marker)) (org-add-props head nil 'org-imenu-marker m 'org-imenu t) (if (>= level last-level) === modified file 'lisp/textmodes/paragraphs.el' --- lisp/textmodes/paragraphs.el 2013-01-01 09:11:05 +0000 +++ lisp/textmodes/paragraphs.el 2013-02-25 19:43:44 +0000 @@ -379,8 +379,8 @@ If ARG is negative, point is put at end of this paragraph, mark is put at beginning of this or a previous paragraph. -Interactively, if this command is repeated -or (in Transient Mark mode) if the mark is active, +Interactively (or if ALLOW-EXTEND is non-nil), if this command is +repeated or (in Transient Mark mode) if the mark is active, it marks the next ARG paragraphs after the ones already marked." (interactive "p\np") (unless arg (setq arg 1)) === modified file 'src/ChangeLog' --- src/ChangeLog 2013-02-27 18:37:31 +0000 +++ src/ChangeLog 2013-02-28 06:30:48 +0000 @@ -1,3 +1,8 @@ +2013-02-28 Eli Zaretskii + + * w32.c (sys_open): Don't reset the flags for FD in fd_info[]. + (Bug#13546). + 2013-02-27 Eli Zaretskii * filelock.c (create_lock_file) [WINDOWSNT]: Use _sopen with === modified file 'src/w32.c' --- src/w32.c 2013-02-25 17:36:03 +0000 +++ src/w32.c 2013-02-28 06:30:48 +0000 @@ -3411,8 +3411,6 @@ res = _open (mpath, (oflag & ~_O_CREAT) | _O_NOINHERIT, mode); if (res < 0) res = _open (mpath, oflag | _O_NOINHERIT, mode); - if (res >= 0 && res < MAXDESC) - fd_info[res].flags = 0; return res; } === modified file 'test/ChangeLog' --- test/ChangeLog 2013-02-21 16:56:49 +0000 +++ test/ChangeLog 2013-02-28 06:30:48 +0000 @@ -1,3 +1,22 @@ +2013-02-28 Fabián Ezequiel Gallina + + * automated/python-tests.el (python-tests-with-temp-buffer): Doc fix. + (python-tests-with-temp-file): New macro. + (python-tests-shell-interpreter): New var. + (python-shell-get-process-name-1) + (python-shell-internal-get-process-name-1) + (python-shell-parse-command-1) + (python-shell-calculate-process-environment-1) + (python-shell-calculate-process-environment-2) + (python-shell-calculate-process-environment-3) + (python-shell-calculate-exec-path-1) + (python-shell-calculate-exec-path-2) + (python-shell-make-comint-1) + (python-shell-make-comint-2) + (python-shell-get-process-1) + (python-shell-get-or-create-process-1) + (python-shell-internal-get-or-create-process-1): New tests. + 2013-02-21 Fabián Ezequiel Gallina * automated/python-tests.el: New file. === modified file 'test/automated/python-tests.el' --- test/automated/python-tests.el 2013-02-25 07:49:40 +0000 +++ test/automated/python-tests.el 2013-02-28 06:30:48 +0000 @@ -34,6 +34,21 @@ (goto-char (point-min)) ,@body)) +(defmacro python-tests-with-temp-file (contents &rest body) + "Create a `python-mode' enabled file with CONTENTS. +BODY is code to be executed within the temp buffer. Point is +always located at the beginning of buffer." + (declare (indent 1) (debug t)) + `(let* ((temp-file (concat (make-temp-file "python-tests") ".py")) + (buffer (find-file-noselect temp-file))) + (unwind-protect + (with-current-buffer buffer + (python-mode) + (insert ,contents) + (goto-char (point-min)) + ,@body) + (and buffer (kill-buffer buffer))))) + (defun python-tests-look-at (string &optional num restore-point) "Move point at beginning of STRING in the current buffer. Optional argument NUM defaults to 1 and is an integer indicating @@ -1161,6 +1176,260 @@ ;;; Shell integration +(defvar python-tests-shell-interpreter "python") + +(ert-deftest python-shell-get-process-name-1 () + "Check process name calculation on different scenarios." + (python-tests-with-temp-buffer + "" + (should (string= (python-shell-get-process-name nil) + python-shell-buffer-name)) + ;; When the `current-buffer' doesn't have `buffer-file-name', even + ;; if dedicated flag is non-nil should not include its name. + (should (string= (python-shell-get-process-name t) + python-shell-buffer-name))) + (python-tests-with-temp-file + "" + ;; `buffer-file-name' is non-nil but the dedicated flag is nil and + ;; should be respected. + (should (string= (python-shell-get-process-name nil) + python-shell-buffer-name)) + (should (string= + (python-shell-get-process-name t) + (format "%s[%s]" python-shell-buffer-name buffer-file-name))))) + +(ert-deftest python-shell-internal-get-process-name-1 () + "Check the internal process name is config-unique." + (let* ((python-shell-interpreter python-tests-shell-interpreter) + (python-shell-interpreter-args "") + (python-shell-prompt-regexp ">>> ") + (python-shell-prompt-block-regexp "[.][.][.] ") + (python-shell-setup-codes "") + (python-shell-process-environment "") + (python-shell-extra-pythonpaths "") + (python-shell-exec-path "") + (python-shell-virtualenv-path "") + (expected (python-tests-with-temp-buffer + "" (python-shell-internal-get-process-name)))) + ;; Same configurations should match. + (should + (string= expected + (python-tests-with-temp-buffer + "" (python-shell-internal-get-process-name)))) + (let ((python-shell-interpreter-args "-B")) + ;; A minimal change should generate different names. + (should + (not (string= + expected + (python-tests-with-temp-buffer + "" (python-shell-internal-get-process-name)))))))) + +(ert-deftest python-shell-parse-command-1 () + "Check the command to execute is calculated correctly. +Using `python-shell-interpreter' and +`python-shell-interpreter-args'." + :expected-result (if (executable-find python-tests-shell-interpreter) + :passed + :failed) + (let ((python-shell-interpreter (executable-find + python-tests-shell-interpreter)) + (python-shell-interpreter-args "-B")) + (should (string= + (format "%s %s" + python-shell-interpreter + python-shell-interpreter-args) + (python-shell-parse-command))))) + +(ert-deftest python-shell-calculate-process-environment-1 () + "Test `python-shell-process-environment' modification." + (let* ((original-process-environment process-environment) + (python-shell-process-environment + '("TESTVAR1=value1" "TESTVAR2=value2")) + (process-environment + (python-shell-calculate-process-environment))) + (should (equal (getenv "TESTVAR1") "value1")) + (should (equal (getenv "TESTVAR2") "value2")))) + +(ert-deftest python-shell-calculate-process-environment-2 () + "Test `python-shell-extra-pythonpaths' modification." + (let* ((original-process-environment process-environment) + (original-pythonpath (getenv "PYTHONPATH")) + (paths '("path1" "path2")) + (python-shell-extra-pythonpaths paths) + (process-environment + (python-shell-calculate-process-environment))) + (should (equal (getenv "PYTHONPATH") + (concat + (mapconcat 'identity paths path-separator) + path-separator original-pythonpath))))) + +(ert-deftest python-shell-calculate-process-environment-3 () + "Test `python-shell-virtualenv-path' modification." + (let* ((original-process-environment process-environment) + (original-path (or (getenv "PATH") "")) + (python-shell-virtualenv-path + (directory-file-name user-emacs-directory)) + (process-environment + (python-shell-calculate-process-environment))) + (should (not (getenv "PYTHONHOME"))) + (should (string= (getenv "VIRTUAL_ENV") python-shell-virtualenv-path)) + (should (equal (getenv "PATH") + (format "%s/bin%s%s" + python-shell-virtualenv-path + path-separator original-path))))) + +(ert-deftest python-shell-calculate-exec-path-1 () + "Test `python-shell-exec-path' modification." + (let* ((original-exec-path exec-path) + (python-shell-exec-path '("path1" "path2")) + (exec-path (python-shell-calculate-exec-path))) + (should (equal + exec-path + (append python-shell-exec-path + original-exec-path))))) + +(ert-deftest python-shell-calculate-exec-path-2 () + "Test `python-shell-exec-path' modification." + (let* ((original-exec-path exec-path) + (python-shell-virtualenv-path + (directory-file-name user-emacs-directory)) + (exec-path (python-shell-calculate-exec-path))) + (should (equal + exec-path + (append (cons + (format "%s/bin" python-shell-virtualenv-path) + original-exec-path)))))) + +(ert-deftest python-shell-make-comint-1 () + "Check comint creation for global shell buffer." + :expected-result (if (executable-find python-tests-shell-interpreter) + :passed + :failed) + (let* ((python-shell-interpreter + (executable-find python-tests-shell-interpreter)) + (proc-name (python-shell-get-process-name nil)) + (shell-buffer + (python-tests-with-temp-buffer + "" (python-shell-make-comint + (python-shell-parse-command) proc-name))) + (process (get-buffer-process shell-buffer))) + (unwind-protect + (progn + (set-process-query-on-exit-flag process nil) + (should (process-live-p process)) + (with-current-buffer shell-buffer + (should (eq major-mode 'inferior-python-mode)) + (should (string= (buffer-name) (format "*%s*" proc-name))))) + (kill-buffer shell-buffer)))) + +(ert-deftest python-shell-make-comint-2 () + "Check comint creation for internal shell buffer." + :expected-result (if (executable-find python-tests-shell-interpreter) + :passed + :failed) + (let* ((python-shell-interpreter + (executable-find python-tests-shell-interpreter)) + (proc-name (python-shell-internal-get-process-name)) + (shell-buffer + (python-tests-with-temp-buffer + "" (python-shell-make-comint + (python-shell-parse-command) proc-name nil t))) + (process (get-buffer-process shell-buffer))) + (unwind-protect + (progn + (set-process-query-on-exit-flag process nil) + (should (process-live-p process)) + (with-current-buffer shell-buffer + (should (eq major-mode 'inferior-python-mode)) + (should (string= (buffer-name) (format " *%s*" proc-name))))) + (kill-buffer shell-buffer)))) + +(ert-deftest python-shell-get-process-1 () + "Check dedicated shell process preference over global." + :expected-result (if (executable-find python-tests-shell-interpreter) + :passed + :failed) + (python-tests-with-temp-file + "" + (let* ((python-shell-interpreter + (executable-find python-tests-shell-interpreter)) + (global-proc-name (python-shell-get-process-name nil)) + (dedicated-proc-name (python-shell-get-process-name t)) + (global-shell-buffer + (python-shell-make-comint + (python-shell-parse-command) global-proc-name)) + (dedicated-shell-buffer + (python-shell-make-comint + (python-shell-parse-command) dedicated-proc-name)) + (global-process (get-buffer-process global-shell-buffer)) + (dedicated-process (get-buffer-process dedicated-shell-buffer))) + (unwind-protect + (progn + (set-process-query-on-exit-flag global-process nil) + (set-process-query-on-exit-flag dedicated-process nil) + ;; Prefer dedicated if global also exists. + (should (equal (python-shell-get-process) dedicated-process)) + (kill-buffer dedicated-shell-buffer) + ;; If there's only global, use it. + (should (equal (python-shell-get-process) global-process)) + (kill-buffer global-shell-buffer) + ;; No buffer available. + (should (not (python-shell-get-process)))) + (ignore-errors (kill-buffer global-shell-buffer)) + (ignore-errors (kill-buffer dedicated-shell-buffer)))))) + +(ert-deftest python-shell-get-or-create-process-1 () + "Check shell process creation fallback." + :expected-result :failed + (python-tests-with-temp-file + "" + ;; XXX: Break early until we can skip stuff. We need to mimic + ;; user interaction because `python-shell-get-or-create-process' + ;; asks for all arguments interactively when a shell process + ;; doesn't exist. + (should nil) + (let* ((python-shell-interpreter + (executable-find python-tests-shell-interpreter)) + (use-dialog-box) + (dedicated-process-name (python-shell-get-process-name t)) + (dedicated-process (python-shell-get-or-create-process)) + (dedicated-shell-buffer (process-buffer dedicated-process))) + (unwind-protect + (progn + (set-process-query-on-exit-flag dedicated-process nil) + ;; Prefer dedicated if not buffer exist. + (should (equal (process-name dedicated-process) + dedicated-process-name)) + (kill-buffer dedicated-shell-buffer) + ;; No buffer available. + (should (not (python-shell-get-process)))) + (ignore-errors (kill-buffer dedicated-shell-buffer)))))) + +(ert-deftest python-shell-internal-get-or-create-process-1 () + "Check internal shell process creation fallback." + :expected-result (if (executable-find python-tests-shell-interpreter) + :passed + :failed) + (python-tests-with-temp-file + "" + (should (not (process-live-p (python-shell-internal-get-process-name)))) + (let* ((python-shell-interpreter + (executable-find python-tests-shell-interpreter)) + (internal-process-name (python-shell-internal-get-process-name)) + (internal-process (python-shell-internal-get-or-create-process)) + (internal-shell-buffer (process-buffer internal-process))) + (unwind-protect + (progn + (set-process-query-on-exit-flag internal-process nil) + (should (equal (process-name internal-process) + internal-process-name)) + (should (equal internal-process + (python-shell-internal-get-or-create-process))) + ;; No user buffer available. + (should (not (python-shell-get-process))) + (kill-buffer internal-shell-buffer)) + (ignore-errors (kill-buffer internal-shell-buffer)))))) + ;;; Shell completion ------------------------------------------------------------ revno: 111890 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2013-02-27 23:02:36 -0500 message: * lisp/doc-view.el: Preserve h&v scroll across C-c C-c C-c C-c. (doc-view-fallback-mode): Remove overlays here. (doc-view-toggle-display): Instead of here. Don't throw away image-mode-winprops-alist. (doc-view-goto-page): Don't mess with hscroll. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-02-27 15:25:55 +0000 +++ lisp/ChangeLog 2013-02-28 04:02:36 +0000 @@ -1,3 +1,11 @@ +2013-02-28 Stefan Monnier + + * doc-view.el: Preserve h&v scroll across C-c C-c C-c C-c. + (doc-view-fallback-mode): Remove overlays here. + (doc-view-toggle-display): Instead of here. Don't throw away + image-mode-winprops-alist. + (doc-view-goto-page): Don't mess with hscroll. + 2013-02-27 Thierry Volpiatto * font-lock.el (lisp-font-lock-keywords-2): Fix highlighting of === modified file 'lisp/doc-view.el' --- lisp/doc-view.el 2013-02-13 08:28:47 +0000 +++ lisp/doc-view.el 2013-02-28 04:02:36 +0000 @@ -485,8 +485,7 @@ (defun doc-view-goto-page (page) "View the page given by PAGE." (interactive "nPage: ") - (let ((len (doc-view-last-page-number)) - (hscroll (window-hscroll))) + (let ((len (doc-view-last-page-number))) (if (< page 1) (setq page 1) (when (and (> page len) @@ -520,7 +519,6 @@ (format doc-view--image-file-pattern page) (doc-view-current-cache-dir)))) (doc-view-insert-image file :pointer 'arrow) - (set-window-hscroll (selected-window) hscroll) (when (and (not (file-exists-p file)) doc-view-current-converter-processes) ;; The PNG file hasn't been generated yet. @@ -1381,8 +1379,6 @@ (progn (doc-view-kill-proc) (setq buffer-read-only nil) - (remove-overlays (point-min) (point-max) 'doc-view t) - (setq-local image-mode-winprops-alist t) ;; Switch to the previously used major mode or fall back to ;; normal mode. (doc-view-fallback-mode) @@ -1725,6 +1721,7 @@ (mapcar (lambda (var) (cons var (symbol-value var))) '(doc-view-resolution image-mode-winprops-alist))))) + (remove-overlays (point-min) (point-max) 'doc-view t) (if doc-view-previous-major-mode (funcall doc-view-previous-major-mode) (let ((auto-mode-alist ------------------------------------------------------------ revno: 111889 committer: Ken Brown branch nick: trunk timestamp: Wed 2013-02-27 22:19:51 -0500 message: * configure.ac (HAVE_DATA_START): Fix test. (Bug#13818) diff: === modified file 'ChangeLog' --- ChangeLog 2013-02-25 05:55:37 +0000 +++ ChangeLog 2013-02-28 03:19:51 +0000 @@ -1,3 +1,7 @@ +2013-02-28 Ken Brown + + * configure.ac (HAVE_DATA_START): Fix test. (Bug#13818) + 2013-02-25 Paul Eggert Simplify data_start configuration (Bug#13783). === modified file 'configure.ac' --- configure.ac 2013-02-25 05:55:37 +0000 +++ configure.ac 2013-02-28 03:19:51 +0000 @@ -1648,7 +1648,7 @@ [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[extern char data_start[]; char ch;]], - [[return data_start == &ch;]])], + [[return data_start < &ch;]])], [emacs_cv_data_start=yes], [emacs_cv_data_start=no])]) if test $emacs_cv_data_start = yes; then ------------------------------------------------------------ revno: 111888 fixes bug: http://debbugs.gnu.org/13807 committer: Eli Zaretskii branch nick: trunk timestamp: Wed 2013-02-27 20:37:31 +0200 message: Fix race conditions with MS-Windows lock files by using _sopen. src/filelock.c (create_lock_file) [WINDOWSNT]: Use _sopen with _SH_DENYRW flag, instead of emacs_open, to deny any other process access to the lock file until it is written and closed. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-02-27 07:42:43 +0000 +++ src/ChangeLog 2013-02-27 18:37:31 +0000 @@ -1,3 +1,10 @@ +2013-02-27 Eli Zaretskii + + * filelock.c (create_lock_file) [WINDOWSNT]: Use _sopen with + _SH_DENYRW flag, instead of emacs_open, to deny any other process + access to the lock file until it is written and closed. + (Bug#13807) + 2013-02-27 Paul Eggert * callint.c (Qcall_interactively): === modified file 'src/filelock.c' --- src/filelock.c 2013-02-25 17:36:03 +0000 +++ src/filelock.c 2013-02-27 18:37:31 +0000 @@ -44,6 +44,7 @@ #include "coding.h" #include "systime.h" #ifdef WINDOWSNT +#include #include "w32.h" /* for dostounix_filename */ #endif @@ -353,12 +354,17 @@ create a regular file with the lock info written as its contents. */ { - int fd = emacs_open (lfname, O_WRONLY | O_BINARY | O_CREAT | O_EXCL, - S_IREAD | S_IWRITE); + /* Deny everybody else any kind of access to the file until we are + done writing it and close the handle. This makes the entire + open/write/close operation atomic, as far as other processes + are concerned. */ + int fd = _sopen (lfname, + _O_WRONLY | _O_BINARY | _O_CREAT | _O_EXCL | _O_NOINHERIT, + _SH_DENYRW, S_IREAD | S_IWRITE); if (fd < 0 && errno == EEXIST && force) - fd = emacs_open (lfname, O_WRONLY | O_BINARY | O_TRUNC, - S_IREAD | S_IWRITE); + fd = _sopen (lfname, _O_WRONLY | _O_BINARY | _O_TRUNC |_O_NOINHERIT, + _SH_DENYRW, S_IREAD | S_IWRITE); if (fd >= 0) { ssize_t lock_info_len = strlen (lock_info_str); ------------------------------------------------------------ revno: 111887 fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13819 author: Thierry Volpiatto committer: Stefan Monnier branch nick: trunk timestamp: Wed 2013-02-27 10:25:55 -0500 message: * lisp/font-lock.el (lisp-font-lock-keywords-2): Fix highlighting of &optional. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-02-27 09:20:13 +0000 +++ lisp/ChangeLog 2013-02-27 15:25:55 +0000 @@ -1,3 +1,8 @@ +2013-02-27 Thierry Volpiatto + + * font-lock.el (lisp-font-lock-keywords-2): Fix highlighting of + &optional (bug#13819). + 2013-02-27 Michael Albinus * net/tramp-adb.el (tramp-adb-parse-device-names) @@ -5,8 +10,8 @@ 2013-02-26 Michael Albinus - * net/tramp-sh.el (tramp-sh-handle-insert-directory): Add - "2>/dev/null" to the ls command, in case "en_US.utf8" is not + * net/tramp-sh.el (tramp-sh-handle-insert-directory): + Add "2>/dev/null" to the ls command, in case "en_US.utf8" is not defined. POSIX environments fall back to the "C" locale then and emit a warning, which shall be suppressed. === modified file 'lisp/font-lock.el' --- lisp/font-lock.el 2013-02-17 16:58:12 +0000 +++ lisp/font-lock.el 2013-02-27 15:25:55 +0000 @@ -2336,9 +2336,9 @@ ("`\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)'" (1 font-lock-constant-face prepend)) ;; Constant values. - ("\\<:\\(?:\\sw\\|\\s_\\)+\\>" 0 font-lock-builtin-face) + ("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face) ;; ELisp and CLisp `&' keywords as types. - ("\\<\\&\\(?:\\sw\\|\\s_\\)+\\>" . font-lock-type-face) + ("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face) ;; ELisp regexp grouping constructs ((lambda (bound) (catch 'found ------------------------------------------------------------ revno: 111886 committer: Michael Albinus + + * net/tramp-adb.el (tramp-adb-parse-device-names) + (tramp-adb-maybe-open-connection): Add timeouts. (Bug#13299) + 2013-02-26 Michael Albinus * net/tramp-sh.el (tramp-sh-handle-insert-directory): Add === modified file 'lisp/net/tramp-adb.el' --- lisp/net/tramp-adb.el 2013-02-12 14:35:10 +0000 +++ lisp/net/tramp-adb.el 2013-02-27 09:20:13 +0000 @@ -157,13 +157,14 @@ ;;;###tramp-autoload (defun tramp-adb-parse-device-names (ignore) "Return a list of (nil host) tuples allowed to access." - (with-temp-buffer - (when (zerop (call-process (tramp-adb-program) nil t nil "devices")) - (let (result) - (goto-char (point-min)) - (while (search-forward-regexp "^\\(\\S-+\\)[[:space:]]+device$" nil t) - (add-to-list 'result (list nil (match-string 1)))) - result)))) + (with-timeout (10) + (with-temp-buffer + (when (zerop (call-process (tramp-adb-program) nil t nil "devices")) + (let (result) + (goto-char (point-min)) + (while (search-forward-regexp "^\\(\\S-+\\)[[:space:]]+device$" nil t) + (add-to-list 'result (list nil (match-string 1)))) + result))))) (defun tramp-adb-handle-expand-file-name (name &optional dir) "Like `expand-file-name' for Tramp files." @@ -1106,7 +1107,7 @@ (tramp-message vec 6 "%s" (mapconcat 'identity (process-command p) " ")) ;; Wait for initial prompt. - (tramp-adb-wait-for-output p) + (tramp-adb-wait-for-output p 30) (unless (eq 'run (process-status p)) (tramp-error vec 'file-error "Terminated!")) (tramp-compat-set-process-query-on-exit-flag p nil) ------------------------------------------------------------ revno: 111885 committer: Paul Eggert branch nick: trunk timestamp: Tue 2013-02-26 23:42:43 -0800 message: Qcall_interactively and Qexecute_kbd_macro are now static. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-02-26 14:28:37 +0000 +++ src/ChangeLog 2013-02-27 07:42:43 +0000 @@ -1,3 +1,9 @@ +2013-02-27 Paul Eggert + + * callint.c (Qcall_interactively): + * macros.c (Qexecute_kbd_macro): + Now static. + 2013-02-26 Bastien Guerry * window.c (Frecenter): Tiny docstring enhancement. === modified file 'src/callint.c' --- src/callint.c 2013-02-25 16:05:49 +0000 +++ src/callint.c 2013-02-27 07:42:43 +0000 @@ -29,7 +29,7 @@ #include "keymap.h" Lisp_Object Qminus, Qplus; -Lisp_Object Qcall_interactively; +static Lisp_Object Qcall_interactively; static Lisp_Object Qcommand_debug_status; static Lisp_Object Qenable_recursive_minibuffers; === modified file 'src/lisp.h' --- src/lisp.h 2013-02-20 05:18:20 +0000 +++ src/lisp.h 2013-02-27 07:42:43 +0000 @@ -3366,7 +3366,7 @@ extern Lisp_Object Qminus, Qplus; extern Lisp_Object Qwhen; -extern Lisp_Object Qcall_interactively, Qmouse_leave_buffer_hook; +extern Lisp_Object Qmouse_leave_buffer_hook; extern void syms_of_callint (void); /* Defined in casefiddle.c. */ @@ -3527,7 +3527,6 @@ Lisp_Object, ptrdiff_t, Lisp_Object *); /* Defined in macros.c. */ -extern Lisp_Object Qexecute_kbd_macro; extern void init_macros (void); extern void syms_of_macros (void); === modified file 'src/macros.c' --- src/macros.c 2013-02-17 16:49:27 +0000 +++ src/macros.c 2013-02-27 07:42:43 +0000 @@ -28,7 +28,7 @@ #include "window.h" #include "keyboard.h" -Lisp_Object Qexecute_kbd_macro; +static Lisp_Object Qexecute_kbd_macro; static Lisp_Object Qkbd_macro_termination_hook; /* Number of successful iterations so far ------------------------------------------------------------ Use --include-merged or -n0 to see merged revisions.