annotate lisp/find-lisp.el @ 105973:b7d8222914b4

2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-clone-subtree-with-time-shift): Make it work at the end of the buffer. * org-mobile.el (org-mobile-write-checksums): Specify coding system. (org-mobile-timestamp-buffer): Keep local variable/mode line at beginning of buffer. * org-latex.el (org-latex-entities-regexp): Fix typo in regexp. * org.el (org-block-todo-from-children-or-siblings-or-parent) (org-block-todo-from-checkboxes): Do not block changes to a nil TODO state. 2009-11-13 James TD Smith <ahktenzero@mohorovi.cc> * org-habit.el (org-habit-parse-todo): Indicate which habit is wrongly set up in the error messages. * org-colview.el (org-columns-display-here): Don't try to calculate values if the underlying property is not set. (org-columns-string-to-number): Convert age strings back into fractional days. (org-agenda-colview-summarize): Handle extended summary types properly. * org-colview-xemacs.el (org-columns-display-here): Don't try to calculate values if the underlying property is not set. (org-columns-string-to-number): Convert age strings back into fractional days. (org-agenda-colview-summarize): Handle extended summary types properly. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-format-drawer-function): New variable. (org-export-format-drawer): New function. (org-export-preprocess-string): Pass the backend as a parameter to `org-export-remove-or-extract-drawers'. (org-export-remove-or-extract-drawers): New parameter BACKEND. * org-protocol.el (org-protocol-char-to-string): New defsubst. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-diary-entry-in-org-file): Add error message when no block is selected. * org-latex.el (org-export-latex-links): Check for protectedness in the last matched character, not after the match. * org-datetree.el (org-datetree-find-date-create): Respect restriction when KEEP-RESTRICTION is set. (org-datetree-file-entry-under): New function. (org-datetree-cleanup): New command. 2009-11-13 Dan Davison <davison@stats.ox.ac.uk> * org-src.el (org-edit-src-code): New optional argument context allows calling functions to avoid altering the saved window configuration. (org-edit-src-exit): Do not restore window configuration when this function is used in the context of saving the edit buffer. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-out, org-clock-cancel): Revert to instances to switching to with-current-buffer, because these seem to cause problems - no idea why. * org-agenda.el (org-agenda-add-entry-to-org-agenda-diary-file): Require diary-lib for (diary-date-display-form). 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-log-reschedule, org-log-redeadline): New options. (org-log-note-headings): Add templates for rescheduling and deadline changing. (org-startup-options): Add in-buffer settings for logging changing schedule and deadline time stamps. (org-deadline, org-schedule): Check for existing date and arrange for logging if the user requests it. (org-add-log-note): Prepare proper note buffers for rescheduling and deadline changes. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-diary-entry-in-org-file) (org-agenda-add-entry-to-org-agenda-diary-file) (org-agenda-insert-diary-make-new-entry): New functions. (org-agenda-diary-entry): Call `org-agenda-diary-entry-in-org-file' when appropriate. * org.el (org-calendar-insert-diary-entry-key): New option. (org-agenda-diary-file): New option. ("calendar"): Install our insertion function in the calendar. * org-remember.el (org-datetree): Require. (org-remember-templates): Add new positioning option. (org-remember-reference-date): New variable. (org-remember-apply-template): Store the reference date in a local variable. (org-remember-handler): Implement date tree positioning of entries. * org-datetree.el: New file. * org-latex.el (org-export-latex-preprocess): Protect targets in verbatim emphasis. * org-html.el (org-export-as-html): Protect targets in verbatim emphasis. * org-docbook.el (org-export-as-docbook): Protect targets in verbatim emphasis. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-show-notification): Handle messages that contain a percent character. * org-remember.el (org-remember-apply-template): Turn of partial completion. * org-mobile.el (org-mobile-before-process-capture-hook): New hook. (org-mobile-pull): Run `org-mobile-before-process-capture-hook'. * org.el (org-indent-mode): Define variable already in org.el. (org-unfontify-region): Remove line-prefix and wrap-prefix properties only if org-indent-mode is active. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-icalendar.el (org-print-icalendar-entries): Save match data around call to verify function. (org-print-icalendar-entries): Add a call to the verification function. * org.el (org-speedbar-set-agenda-restriction): Remove unnecessary save-restrivtion' form. 2009-11-13 Dan Davison <davison@stats.ox.ac.uk> * org-exp.el (org-export-format-source-code-or-example): restrict scope of preserve-indentp to the let binding. (org-src): require org-src, since org-src-preserve-indentation is used. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-timer.el (org-timer-set-timer): Set variables org-timer-timer[123] correctly. * org-mobile.el (org-mobile-files-alist): Make it work when `agenda-archives' is included in `org-agenda-text-search-extra-files'. (org-mobile-push): Restore agenda after mobile push. 2009-11-13 John Wiegley <jwiegley@gmail.com> * org-clock.el (org-resolve-clocks-if-idle): Another fix to the way the amount of idle time is presented in the minibuffer. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-icalendar.el (org-print-icalendar-entries): Use org-icalendar-verify-function only if non-nil. * org.el (org-refile): Refile to clock only if the prefix arg is 2. (org-sparse-tree): Fix docstring to be in line with prompt. (org-update-parent-todo-statistics): Call `org-after-todo-statistics-hook' on each level. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-remember.el (org-remember-apply-template): Make sure the buffer exists. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-tab-ind-state): New variable. (org-cycle-level): New function. (org-cycle-level-after-item/entry-creation): New option. (org-flag-subtree): New function. (org-hide-archived-subtrees): Call `org-flag-subtree'. (org-set-effort): Indexed access. * org-list.el (org-cycle-item-indentation): New function. * org.el (org-refile): Make prefix argument 2 refile to current clock. (org-priority): Interpret action `remove' as call to remove the priority cookie. * org-remember.el (org-remember-apply-template): Don't depend on buffer name being like file name. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-play-sound): Expand file in org-clock-sound, to allow ~ for home. * org-remember.el (org-remember-handler): Set text-before-node-creation even if this already looks like a node, because the string might be needed on non-org-mode target files. * org-agenda.el (org-agenda-open-link): Make this work in agenda clocktables. (org-agenda-switch-to): Follow a link at point if org-return-follows-link' is set and there is nothing else to do in this line. 2009-11-13 James TD Smith <ahktenzero@mohorovi.cc> * org-colview-xemacs.el: Add in changes from org-colview.el 2009-11-13 Dan Davison <davison@stats.ox.ac.uk> * org-exp-blocks.el: Modify split separator regexp to avoid empty strings. 2009-11-13 James TD Smith <ahktenzero@mohorovi.cc> * org-colview.el (org-columns-new): Make this work with the new operators. (org-columns-store-format): Make this work with the new operators. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-src.el (org-src-preserve-indentation): Document that this variable is also used during export. * org-exp.el (org-export-format-source-code-or-example): Preserve indentation if a block has a -i option, or if `org-src-preserve-indentation' is set. * org-exp-blocks.el (org-export-blocks-preprocess): Preserve indentation if a block has a -i option, or if `org-src-preserve-indentation' is set. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-mode-map): Define the new archiving keys. (org-speed-commands-default): Define an archiving key in the speed command map. (org-org-menu): Improve the menu structure concerning archiving. * org-archive.el (org-archive-subtree-default-with-confirmation): New command. * org-agenda.el (org-agenda-mode-map): Define the new archiving keys. (org-agenda-menu): Add the new archiving commands to the menu. (org-agenda-archive-default) (org-agenda-archive-default-with-confirmation): New commands. (org-agenda-archive, org-agenda-archive-to-archive-sibling): Just call `org-agenda-archive-with'. (org-agenda-archive-with): New function. * org-table.el (org-table-convert-region): Inert spaces around "|" to avoid line beginnings like "|-1" which will be mistaken as hlines. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-offer-links-in-entry): Return nil if there are no links, t if a link has been selected. (org-open-at-point): Open attachment directory when called in the headline and there are no links in the entry body. (org-speed-commands-default): Add "o" for open-at-point as a speed command. * org-attach.el (org-attach-reveal): Optional prefix arg IF-EXISTS, which avoids creating the attachment directory if it does not yet exist. * org-agenda.el (org-agenda, org-run-agenda-series): Evaluate MATCH. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org.el ("abbrev"): Work with abbrev tables only after they have been loaded. * org-list.el (org-list-send-list): Fix bug related to match data. * org-latex.el (org-export-latex-fontify): Apply verbatim emphasis. (org-export-latex-make-header): Insert \obeylines if line breaks should be preserved. * org-exp.el (org-export-protect-verbatim): Add an `org-verbatim-emph' property to such text. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-icalendar.el (org-icalendar-use-plain-timestamp): New option. (org-print-icalendar-entries): Skip entries where the timestamp is not a deadline and not scheduled, if the user requests that. * org-latex.el (org-export-latex-quotation-marks): Allow a bracket before an opening quote. * org-archive.el (org-archive-subtree): Keep archive after archiving something. * org-id.el (org-id-update-id-locations): Add archive files if that is required by `org-id-extra-files'. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-src.el (org-src-window-setup): New option. (org-src-switch-to-buffer): New function. (org-edit-src-exit): Add optional argument CONTEXT and use it to restore window configuration. (org-edit-src-code, org-edit-src-continue, org-edit-src-exit): Call `org-src-switch-to-buffer'. * org.el (org-default-properties): Add STYLE property. (org-files-list): Use the function call to get the files. (org-additional-option-like-keywords): Add SETUPFILE to completion list. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-table.el (org-table-convert-region): Correctly interpret quoting in csv import. * org.el (org-icompleting-read): Make iswitchb completion work with lists and tables. * org-agenda.el (org-agenda-add-entry-text): Never add entry text while pushing the mobile agenda. 2009-11-13 John Wiegley <jwiegley@gmail.com> * org-clock.el (org-clock-auto-clock-resolution): Now takes three values: nil, t and `when-no-clock-is-running'. (org-clock-in): Use `org-clock-auto-clock-resolution' to determine whether or not to resolve Org buffers on clock in. 2009-11-13 James TD Smith <ahktenzero@mohorovi.cc> * org-colview.el (org-format-time-period): Function to format times in fractional days for display. (org-columns-display-here): Add support for showing a calculated value in place of the property. (org-columns): Set `org-columns-time' to the current time so time difference calculations will work. (org-columns-time): Use to store the current time when column view is displayed, so all time differences will use the same reference point. (org-columns-compile-map): There is now an extra position in each entry specifying the function to use to calculate the displayed value for the non-calculated properties in the column, (org-columns-compute-all): Set `org-columns-time' to the current time so time difference calculations will work. (org-columns-compute): Handle column operators where the values used are calculated from the underlying property. (org-columns-number-to-string): Handle the 'age' column format (org-columns-string-to-number): Correct the function name (was org-column...). Add support for the 'age' column format. (org-columns-compile-format): Support the additional parameter in org-columns-compile-map. 2009-11-13 Bastien Guerry <bzg@altern.org> * org.el (org-mode-hook): Turn `org-mode-hook' into a customizable variable. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-has-been-used): New variable. (org-clock-in): Set `org-clock-has-been-used'. (org-clock-save): Save only if clock data has been used or created during this session. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-persist): New value, to store only the clock history. (org-clock-save): Don't save the clock if only the history should be stored. (org-clock-load): Turn off John Wiegley's auto resolving mechanism when restoring a saved clock. 2009-11-13 John Wiegley <jwiegley@gmail.com> * org-clock.el (org-clock-display, org-clock-put-overlay): Use `org-time-clock-use-fractional'. * org.el (org-time-clocksum-use-fractional) (org-time-clocksum-fractional-format): Two new customizable variables which allow the user to select fractional times (1.25 instead of 1:25) in the `org-clock-display' report. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-ascii.el (org-export-ascii-table-keep-all-vertical-lines): New option. * org.el (org-tag-alist): Fix customization type. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-mobile.el (org-mobile-update-checksum-for-capture-file): Make sure the regexp search can fail without throwing an error. (org-mobile-apply): Save the inbox buffer after removing successfully applied changes. 2009-11-13 John Wiegley <jwiegley@gmail.com> * org-clock.el (org-resolve-clocks-if-idle): Fix to the way idle time is reported after the user comes back (but before they resolve time). * org.el (org-get-repeat): Change so that this function can be called with either `org-scheduled-string' or `org-deadline-string'. * org-clock.el (org-clock-auto-clock-resolution): Renamed `org-clock-disable-clock-resolution', since negatives don't sound good in customization variables. (org-clock-in): Don't use the auto-resolution logic if the user is clocking into a different task while an active clock is running. This then allows the default behavior of clocking out of the open task and then into the new task. * org.el (org-modules): Made this variable more consistent, since it was referring to Org, OrgMode and Org-mode, whereas the docs for the variable always refer to Org-mode. 2009-11-13 James TD Smith <ahktenzero@mohorovi.cc> * org.el (org-repeat-re): The changed org-repeat-re no longer matched simple +2d type repeaters. Fix it so it does. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-preprocess): Protect the vspace macro in the VERSE environment. 2009-11-13 John Wiegley <jwiegley@gmail.com> * org-habit.el (org-habit-get-priority): A new function that determines the relative priority of a habit, based on how long past its scheduled date it is, and how near the deadline is. * org-agenda.el (org-agenda-get-scheduled): Set habit priority using `org-habit-get-priority'. * org-habit.el (org-habit-build-graph): Start displaying colors from the first scheduled date, if that date is earlier than the first completion date. * org-habit.el: Changed all "color" variables to faces, and made them appropriate for light and dark backgrounds. * org-habit.el (org-habit-duration-to-days): Made this function more general. (org-habit-parse-todo): Parse the new ".+N/N" style repeater. * org-agenda.el (org-agenda-get-deadlines): Removed all mention of habits, since they don't use DEADLINE anymore. * org.el (org-repeat-re, org-display-custom-time) (org-timestamp-change): Extended to support the new ".+N/N" syntax, used for habits. * org-clock.el (org-clock-resolve-clock): Fixed an incorrect variable reference. * org-agenda.el (org-agenda-set-mode-name): Show Habit in the modeline when habits are being displayed (if that module is being loaded). 2009-11-13 James TD Smith <ahktenzero@mohorovi.cc> * org-clock.el (org-x11-idle-seconds): Add a method to get the X11 idle time using the xscreensaver extension. (org-user-idle-seconds): Use X11 idle time if available. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-next-line): New command. (org-agenda-previous-line): New commands. (org-agenda-show-and-scroll-up, org-agenda-show-scroll-down): New commands. (org-agenda-follow-mode): Do the follow immediately if the mode is turned on here. (previous-line, next-line): Replace keys with the corresponding org functions. (org-agenda-mode-map): Bind backspace and delete to the scrolling command. * org.el (org-icompleting-read): Turn off partial completion mode for the duration of this completion round. * org-latex.el (org-export-latex-fontify-headline): Protect TeX macros in author lines and similar stuff. * org.el (org-file-tags): Fix docstring. (org-get-buffer-tags): Add the #+FILETAGS tags. ("ecb"): Maks ecb show context after jumping into an Org file. 2009-11-13 John Wiegley <johnw@newartisans.com> * org-agenda.el (org-finalize-agenda): Draw habit consistency graphs after everything else in the buffer has been setup. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-mobile.el (org-mobile-apply): Count success and failure. * org.el (org-indent-line-function): Fix regexp replace problem. 2009-11-13 John Wiegley <johnw@newartisans.com> * org-clock.el (org-clock-disable-clock-resolution): New customization variable that disable automatic clock resolution on clock in. (org-clock-in): If `org-clock-disable-clock-resolution' is set, do not automatically resolve anything. This is does not affect idle-time resolution, however, if `org-clock-idle-time' is set. 2009-11-13 John Wiegley <johnw@newartisans.com> * org-habit.el: New file, which implements code to build a "habit consistency graph". * org-agenda.el (org-agenda-get-deadlines) (org-agenda-get-scheduled): Display consistency graphs when outputting habits into the agenda. The graphs are always relative to the current time. (org-format-agenda-item): Added new parameter `habitp', which indicates whether we are formatting a habit or not. Do not display "extra" leading information if habitp is true. * org.el (org-repeat-re): Improved regexp to include .+ and ++ leaders for repeat strings. (org-get-repeat): Now takes a string parameter `tagline', so the caller can obtain the SCHEDULED repeat, or the DEADLINE repeat. 2009-11-13 John Wiegley <johnw@newartisans.com> * org-agenda.el (org-agenda-auto-exclude-function): New customization variable for allowing the user to create an "auto exclusion" filter for doing context-aware auto tag filtering. (org-agenda-filter-by-tag): Changes to support the use of `org-agenda-auto-exclude-function'. See the new manual addition,. 2009-11-13 John Wiegley <johnw@newartisans.com> * org.el (org-files-list): Don't attempt to return a file name for Org buffers which have no associated file. * org-agenda.el (org-agenda-do-action): Fixed a typo. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-mobile.el (org-mobile-locate-entry): Interpret files relative to org-directory. (org-mobile-inbox-for-pull): Document the best location for this file. (org-mobile-check-setup): Verify `org-directory'. (org-mobile-create-index-file): Sort the files to be listed in index.org. 2009-11-13 James TD Smith <ahktenzero@mohorovi.cc> * org.el (org-fast-tag-selection): Add a way to display a description for a tag group. This is done by adding a string to either the startgroup or endgroup cell. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-resolve, org-resolve-clocks) (org-emacs-idle-seconds): Use `org-float-time' instead of `time-to-seconds' 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-sorting-strategy): Fix customization type. * org.el (org-pre-cycle-hook): Document that `empty' can also be the value of ARG when doing local cycling. 2009-11-13 John Wiegley <johnw@newartisans.com> * org-clock.el (org-clock-resolve-clock): If keeping or subtracting time results in a clock out at a time in the past, and if the resolution occurred due to idleness or invoking `M-x org-resolve-clocks', remember that past moment in time. On the next clock in, the user will be prompted to see if they want to back-date their new clock to then. (org-clock-resolve): Do not jump the user to the location of a dangling clock if the resolution is occuring due to an idle timeout. In that case there is typically only one dangling clock, the active one, and there is no value gained by shuffling their windows around to show it to them. Being prompted to resolve an idle clock should be as inobtrusive as possible. (org-resolve-clocks-if-idle): New function that resolves only the currently active clock if the user has exceeded the time returned by `org-user-idle-seconds', based on the value of `org-clock-idle-time'. (org-clock-in): If, after resolving clocks, (org-clock-out): Cancel the `org-clock-idle-timer' on clock out. * org-clock.el (org-clock-resolve-clock): New function that resolves a clock to a specific time, closing or resuming as need be, and possibly even starting a new clock. (org-clock-resolve): New function used by `org-resolve-clocks' that sets up for the call to `org-clock-resolve-clock'. It determines the time to resolve to based on a single-character selection from the user to either keep time, subtract away time or cancel the clock. (org-resolve-clocks): New user command which resolves dangling clocks -- that is, open but not active -- anywhere in the file list returned by `org-files-list'. (org-clock-in): Automatically resolve dangling clocks whenever a user clocks in. (org-clock-cancel): If the user cancels the solely clock in a LOGBOOK, remove the empty drawer. * org-clock.el (org-clock-idle-time): New user customizable option for detecting whether the user has left a clock idle. Note: it is only used in this commit to test whether it's worthwhile to check OS X to get the Mac user's current idle time. If the Emacs idle time is less than the value, the user hasn't been away long enough to be worth checking (a more expensive test than just getting Emacs idle time). (org-user-idle-seconds, org-mac-idle-seconds) (org-emacs-idle-seconds): This three functions, in conjunction with the user customization variable `org-clock-idle-time', return the number of seconds (as a floating point) that the user has been away from their Emacs (or, if running on OS X, their computer). * org-clock.el (org-find-open-clocks): New function that returns a list of all open clocks in the given FILE. Note that each clock it returns is a cons cell of the format (MARKER . START-TIME). This "clock" value is used by several of the new clock module utility functions. (org-is-active-clock): New inline function which tests whether the given clock value is the same as the currently active clock. Returns non-nil if this is the case. (org-with-clock-position): New macro that evaluates FORMS with point in the buffer and at the position of the given clock. Changes to the current clock are global. (org-with-clock): New macro that evaluates FORMS with point in the buffer and at the position of the given clock. However, changes to the current clock are local and have no effect on the user's active clock. This allows, for example, far any clock to be cancelled without cancelling the active clock. (org-clock-clock-in): New inline function that switches the active clock to the given clock. If either the argument RESUME, or the global `org-clock-in-resume', are non-nil, it will resume a clock that was previously left open. (org-clock-clock-out): New inline function that clocks out the given clock value without affecting the currently active clock. (org-clock-clock-cancel): New inline function that cancels the given clock value without affecting the currently active clock. * org-clock.el (org-clock-in): Before creating `org-clock-mode-line-timer', check to make sure an older timer is not currently running. (org-clock-out): Accept new third parameter `at-time', which permits a clock to be clocked out at a specific time. Note that no attempt is made to verify that the clock out time is later than the clock in time. * org.el (org-files-list): New utility function for returning a list of all open org-mode buffers, plus all files used to build the agenda buffer. Note that not all the files will necessarily be visited by a buffer at time of call. (org-entry-beginning-position): Like the function `line-beginning-position', this inline function returns the beginning position of the current heading/entry. (org-entry-end-position): Like the function `line-end-position', this inline function returns the end position of the current heading/entry. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-list): Mark the all-todo items line as a header line. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-inlinetask-remove-END-maybe): Declare function. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-filter-make-matcher): Allow to filter entries that have no tags. (org-agenda-search-view): New customize group. (org-agenda-search-view-search-words-only): New option. (org-search-view): Implement substring search. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-outline-level): Add doc string. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-inlinetask.el (org-inlinetask-export): Re-introduce variable. (org-inlinetask-export-handler): Only export inline task if the user option calls for it. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-handle-export-tags): Remove inlinetask END if present. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-tables): Don't format in protected regions. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-src.el (org-edit-src-code) (org-edit-src-find-region-and-lang, org-edit-src-exit): Handle macro editing. * org-agenda.el (org-prefix-category-max-length): New variable. (org-format-agenda-item): Use `org-prefix-category-max-length'. (org-compile-prefix-format): Set `org-prefix-category-max-length'. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-mobile.el (org-mobile-create-index-file): Improve the listing of tags and todo keywords. * org-latex.el (org-export-latex-format-image): New function. (org-export-latex-links): Use `org-export-latex-format-image'. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org-inlinetask.el (org-inlinetask-get-current-indentation) (org-inlinetask-remove-terminator): New functions. (org-inlinetask-export-handler): Terminate the description list. * org-exp.el (org-export-select-backend-specific-text): Remove the region markers. * org-inlinetask.el (org-inlinetask-export-handler): fix bug for tasks without content. * org-clock.el: Make sure the clock-in target position does not move to a different node by widening the buffer. * org-html.el (org-export-html-format-image): Wrap image into figure div only when there is a caption. * org-archive.el (org-archive-mark-done): Change default value to nil. 2009-11-13 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-context): Call `bobp', not `eobp'. * org-clock.el (org-clock-cancel): Remove quotes from marker variables. * org.el (org-read-date-prefer-future): New allowed value `time'. (org-read-date-analyze): Shift day to tomorrow depending on time entered and value of `org-read-date-prefer-future'.
author Carsten Dominik <dominik@science.uva.nl>
date Fri, 13 Nov 2009 08:37:55 +0000
parents a9dc0e7c3f2b
children 1d1d5d9bd884
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38431
853c3674f20a Fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37471
diff changeset
1 ;;; find-lisp.el --- emulation of find in Emacs Lisp
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2
38431
853c3674f20a Fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37471
diff changeset
3 ;; Author: Peter Breton
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4 ;; Created: Fri Mar 26 1999
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
5 ;; Keywords: unix
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
6
74437
94b7821984ff Update copyright years.
Glenn Morris <rgm@gnu.org>
parents: 68866
diff changeset
7 ;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
100908
a9dc0e7c3f2b Add 2009 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 94678
diff changeset
8 ;; 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
9
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
15 ;; (at your option) any later version.
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
16
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
21
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
24
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
25 ;;; Commentary:
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26 ;;
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
27 ;; This is a very generalized form of find; it basically implements a
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
28 ;; recursive directory descent. The conditions which bound the search
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
29 ;; are expressed as predicates, and I have not addressed the question
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
30 ;; of how to wrap up the common chores that find does in a simpler
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
31 ;; format than writing code for all the various predicates.
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
32 ;;
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
33 ;; Some random thoughts are to express simple queries directly with
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
34 ;; user-level functions, and perhaps use some kind of forms interface
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
35 ;; for medium-level queries. Really complicated queries can be
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
36 ;; expressed in Lisp.
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
37 ;;
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
38
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
39 ;;; Todo
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
40 ;;
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
41 ;; It would be nice if we could sort the results without running the find
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
42 ;; again. Maybe that could work by storing the original file attributes?
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
43
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
44 ;;; Code:
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
45
66775
91dca36c0245 Require dired.
Luc Teirlinck <teirllm@auburn.edu>
parents: 65291
diff changeset
46 (require 'dired)
91dca36c0245 Require dired.
Luc Teirlinck <teirllm@auburn.edu>
parents: 65291
diff changeset
47
65291
8dbff69aa3ac (dired-buffers, dired-subdir-alist): Add defvars.
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
48 (defvar dired-buffers)
8dbff69aa3ac (dired-buffers, dired-subdir-alist): Add defvars.
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
49 (defvar dired-subdir-alist)
8dbff69aa3ac (dired-buffers, dired-subdir-alist): Add defvars.
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
50
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
51 ;; Internal variables
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
52
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
53 (defvar find-lisp-regexp nil
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
54 "Internal variable.")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
55
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
56 (defconst find-lisp-line-indent " "
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
57 "Indentation for dired file lines.")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
58
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
59 (defvar find-lisp-file-predicate nil
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
60 "Predicate for choosing to include files.")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
61
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
62 (defvar find-lisp-directory-predicate nil
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
63 "Predicate for choosing to descend into directories.")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
64
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
65 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
66 ;; Debugging Code
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
67 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
68
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
69 (defvar find-lisp-debug-buffer "*Find Lisp Debug*"
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
70 "Buffer for debugging information.")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
71
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
72 (defvar find-lisp-debug nil
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
73 "Whether debugging is enabled.")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
74
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
75 (defun find-lisp-debug-message (message)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
76 "Print a debug message MESSAGE in `find-lisp-debug-buffer'."
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
77 (set-buffer (get-buffer-create find-lisp-debug-buffer))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
78 (goto-char (point-max))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
79 (insert message "\n"))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
80
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
81 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
82 ;; Directory and File predicates
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
83 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
84
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
85 (defun find-lisp-default-directory-predicate (dir parent)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
86 "True if DIR is not a dot file, and not a symlink.
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
87 PARENT is the parent directory of DIR."
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
88 (and find-lisp-debug
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
89 (find-lisp-debug-message
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
90 (format "Processing directory %s in %s" dir parent)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
91 ;; Skip current and parent directories
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
92 (not (or (string= dir ".")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
93 (string= dir "..")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
94 ;; Skip directories which are symlinks
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
95 ;; Easy way to circumvent recursive loops
76230
3e1deb9ccdf5 (find-lisp-default-directory-predicate):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 75347
diff changeset
96 (file-symlink-p (expand-file-name dir parent)))))
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
97
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
98 (defun find-lisp-default-file-predicate (file dir)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
99 "True if FILE matches `find-lisp-regexp'.
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
100 DIR is the directory containing FILE."
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
101 (and find-lisp-debug
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
102 (find-lisp-debug-message
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
103 (format "Processing file %s in %s" file dir)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
104 (and (not (file-directory-p (expand-file-name file dir)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
105 (string-match find-lisp-regexp file)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
106
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
107 (defun find-lisp-file-predicate-is-directory (file dir)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
108 "True if FILE is a directory.
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
109 Argument DIR is the directory containing FILE."
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
110 (and find-lisp-debug
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
111 (find-lisp-debug-message
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
112 (format "Processing file %s in %s" file dir)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
113 (and (file-directory-p (expand-file-name file dir))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
114 (not (or (string= file ".")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
115 (string= file "..")))))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
116
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
117 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
118 ;; Find functions
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
119 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
120
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
121 (defun find-lisp-find-files (directory regexp)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
122 "Find files in DIRECTORY which match REGEXP."
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
123 (let ((file-predicate 'find-lisp-default-file-predicate)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
124 (directory-predicate 'find-lisp-default-directory-predicate)
33710
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
125 (find-lisp-regexp regexp))
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
126 (find-lisp-find-files-internal
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
127 directory
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
128 file-predicate
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
129 directory-predicate)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
130
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
131 ;; Workhorse function
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
132 (defun find-lisp-find-files-internal (directory file-predicate
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
133 directory-predicate)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
134 "Find files under DIRECTORY which satisfy FILE-PREDICATE.
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
135 FILE-PREDICATE is a function which takes two arguments: the file and its
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
136 directory.
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
137
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
138 DIRECTORY-PREDICATE is used to decide whether to descend into directories.
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
139 It is a function which takes two arguments, the directory and its parent."
33710
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
140 (setq directory (file-name-as-directory directory))
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
141 (let (results sub-results)
33710
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
142 (dolist (file (directory-files directory nil nil t))
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
143 (let ((fullname (expand-file-name file directory)))
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
144 (when (file-readable-p (expand-file-name file directory))
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
145 ;; If a directory, check it we should descend into it
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
146 (and (file-directory-p fullname)
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
147 (funcall directory-predicate file directory)
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
148 (progn
33710
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
149 (setq sub-results
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
150 (find-lisp-find-files-internal
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
151 fullname
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
152 file-predicate
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
153 directory-predicate))
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
154 (if results
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
155 (nconc results sub-results)
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
156 (setq results sub-results))))
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
157 ;; For all files and directories, call the file predicate
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
158 (and (funcall file-predicate file directory)
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
159 (if results
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
160 (nconc results (list fullname))
bec245584796 (find-lisp-find-files-internal):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32116
diff changeset
161 (setq results (list fullname)))))))
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
162 results))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
163
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
164 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
165 ;; Find-dired all in Lisp
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
166 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
167
37471
f335708a19f2 (find-lisp-find-dired-filter)
Eli Zaretskii <eliz@gnu.org>
parents: 33710
diff changeset
168 ;;;###autoload
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
169 (defun find-lisp-find-dired (dir regexp)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
170 "Find files in DIR, matching REGEXP."
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
171 (interactive "DFind files in directory: \nsMatching regexp: ")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
172 (let ((find-lisp-regexp regexp))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
173 (find-lisp-find-dired-internal
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
174 dir
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
175 'find-lisp-default-file-predicate
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
176 'find-lisp-default-directory-predicate
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
177 "*Find Lisp Dired*")))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
178
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
179 ;; Just the subdirectories
37471
f335708a19f2 (find-lisp-find-dired-filter)
Eli Zaretskii <eliz@gnu.org>
parents: 33710
diff changeset
180 ;;;###autoload
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
181 (defun find-lisp-find-dired-subdirectories (dir)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
182 "Find all subdirectories of DIR."
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
183 (interactive "DFind subdirectories of directory: ")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
184 (find-lisp-find-dired-internal
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
185 dir
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
186 'find-lisp-file-predicate-is-directory
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
187 'find-lisp-default-directory-predicate
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
188 "*Find Lisp Dired Subdirectories*"))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
189
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
190 ;; Most of this is lifted from find-dired.el
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
191 ;;
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
192 (defun find-lisp-find-dired-internal (dir file-predicate
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
193 directory-predicate buffer-name)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
194 "Run find (Lisp version) and go into Dired mode on a buffer of the output."
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
195 (let ((dired-buffers dired-buffers)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
196 buf
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
197 (regexp find-lisp-regexp))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
198 ;; Expand DIR ("" means default-directory), and make sure it has a
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
199 ;; trailing slash.
66775
91dca36c0245 Require dired.
Luc Teirlinck <teirllm@auburn.edu>
parents: 65291
diff changeset
200 (setq dir (file-name-as-directory (expand-file-name dir)))
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
201 ;; Check that it's really a directory.
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
202 (or (file-directory-p dir)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
203 (error "find-dired needs a directory: %s" dir))
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
204 (or
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
205 (and (buffer-name)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
206 (string= buffer-name (buffer-name)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
207 (switch-to-buffer (setq buf (get-buffer-create buffer-name))))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
208 (widen)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
209 (kill-all-local-variables)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
210 (setq buffer-read-only nil)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
211 (erase-buffer)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
212 (setq default-directory dir)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
213 (dired-mode dir)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
214
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
215 (use-local-map (append (make-sparse-keymap) (current-local-map)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
216
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
217 (make-local-variable 'find-lisp-file-predicate)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
218 (setq find-lisp-file-predicate file-predicate)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
219 (make-local-variable 'find-lisp-directory-predicate)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
220 (setq find-lisp-directory-predicate directory-predicate)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
221 (make-local-variable 'find-lisp-regexp)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
222 (setq find-lisp-regexp regexp)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
223
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
224 (make-local-variable 'revert-buffer-function)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
225 (setq revert-buffer-function
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
226 (function
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
227 (lambda(ignore1 ignore2)
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
228 (find-lisp-insert-directory
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
229 default-directory
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
230 find-lisp-file-predicate
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
231 find-lisp-directory-predicate
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
232 'ignore)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
233 )
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
234 ))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
235
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
236 ;; Set subdir-alist so that Tree Dired will work:
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
237 (if (fboundp 'dired-simple-subdir-alist)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
238 ;; will work even with nested dired format (dired-nstd.el,v 1.15
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
239 ;; and later)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
240 (dired-simple-subdir-alist)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
241 ;; else we have an ancient tree dired (or classic dired, where
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
242 ;; this does no harm)
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
243 (set (make-local-variable 'dired-subdir-alist)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
244 (list (cons default-directory (point-min-marker)))))
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
245 (find-lisp-insert-directory
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
246 dir file-predicate directory-predicate 'ignore)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
247 (goto-char (point-min))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
248 (dired-goto-next-file)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
249
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
250 (defun find-lisp-insert-directory (dir
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
251 file-predicate
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
252 directory-predicate
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
253 sort-function)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
254 "Insert the results of `find-lisp-find-files' in the current buffer."
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
255 (let ((buffer-read-only nil)
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
256 (files (find-lisp-find-files-internal
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
257 dir
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
258 file-predicate
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
259 directory-predicate))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
260 (len (length dir)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
261 (erase-buffer)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
262 ;; Subdir headlerline must come first because the first marker in
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
263 ;; subdir-alist points there.
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
264 (insert find-lisp-line-indent dir ":\n")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
265 ;; Make second line a ``find'' line in analogy to the ``total'' or
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
266 ;; ``wildcard'' line.
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
267 ;;
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
268 ;; No analog for find-lisp?
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
269 (insert find-lisp-line-indent "\n")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
270 ;; Run the find function
84869
9ee30350a5a4 (find-lisp-insert-directory): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
271 (mapc
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
272 (function
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
273 (lambda(file)
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
274 (find-lisp-find-dired-insert-file
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
275 (substring file len)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
276 (current-buffer))))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
277 (sort files 'string-lessp))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
278 ;; FIXME: Sort function is ignored for now
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
279 ;; (funcall sort-function files))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
280 (goto-char (point-min))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
281 (dired-goto-next-file)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
282
37471
f335708a19f2 (find-lisp-find-dired-filter)
Eli Zaretskii <eliz@gnu.org>
parents: 33710
diff changeset
283 ;;;###autoload
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
284 (defun find-lisp-find-dired-filter (regexp)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
285 "Change the filter on a find-lisp-find-dired buffer to REGEXP."
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
286 (interactive "sSet filter to regexp: ")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
287 (setq find-lisp-regexp regexp)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
288 (revert-buffer))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
289
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
290 (defun find-lisp-find-dired-insert-file (file buffer)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
291 (set-buffer buffer)
32116
3f09592bbc80 * find-lisp.el (find-lisp-find-files-internal):
Peter Breton <pbreton@attbi.com>
parents: 29696
diff changeset
292 (insert find-lisp-line-indent
66829
dce32a0d407f (find-lisp-find-dired-insert-file): Pass 'string arg to `file-attributes'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 66775
diff changeset
293 (find-lisp-format file (file-attributes file 'string) (list "")
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
294 (current-time))))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
295
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
296 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
297 ;; Lifted from ls-lisp. We don't want to require it, because that
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
298 ;; would alter the insert-directory function.
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
299 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
300
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
301 (defun find-lisp-format (file-name file-attr switches now)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
302 (let ((file-type (nth 0 file-attr)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
303 (concat (if (memq ?i switches) ; inode number
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
304 (format "%6d " (nth 10 file-attr)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
305 ;; nil is treated like "" in concat
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
306 (if (memq ?s switches) ; size in K
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
307 (format "%4d " (1+ (/ (nth 7 file-attr) 1024))))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
308 (nth 8 file-attr) ; permission bits
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
309 (format " %3d %-8s %-8s %8d "
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
310 (nth 1 file-attr) ; no. of links
66829
dce32a0d407f (find-lisp-find-dired-insert-file): Pass 'string arg to `file-attributes'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 66775
diff changeset
311 (if (numberp (nth 2 file-attr))
dce32a0d407f (find-lisp-find-dired-insert-file): Pass 'string arg to `file-attributes'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 66775
diff changeset
312 (int-to-string (nth 2 file-attr))
dce32a0d407f (find-lisp-find-dired-insert-file): Pass 'string arg to `file-attributes'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 66775
diff changeset
313 (nth 2 file-attr)) ; uid
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
314 (if (eq system-type 'ms-dos)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
315 "root" ; everything is root on MSDOS.
66829
dce32a0d407f (find-lisp-find-dired-insert-file): Pass 'string arg to `file-attributes'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 66775
diff changeset
316 (if (numberp (nth 3 file-attr))
dce32a0d407f (find-lisp-find-dired-insert-file): Pass 'string arg to `file-attributes'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 66775
diff changeset
317 (int-to-string (nth 3 file-attr))
dce32a0d407f (find-lisp-find-dired-insert-file): Pass 'string arg to `file-attributes'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 66775
diff changeset
318 (nth 3 file-attr))) ; gid
29696
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
319 (nth 7 file-attr) ; size in bytes
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
320 )
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
321 (find-lisp-format-time file-attr switches now)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
322 " "
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
323 file-name
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
324 (if (stringp file-type) ; is a symbolic link
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
325 (concat " -> " file-type)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
326 "")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
327 "\n")))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
328
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
329 (defun find-lisp-time-index (switches)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
330 ;; Return index into file-attributes according to ls SWITCHES.
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
331 (cond
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
332 ((memq ?c switches) 6) ; last mode change
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
333 ((memq ?u switches) 4) ; last access
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
334 ;; default is last modtime
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
335 (t 5)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
336
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
337 (defun find-lisp-format-time (file-attr switches now)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
338 ;; Format time string for file with attributes FILE-ATTR according
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
339 ;; to SWITCHES (a list of ls option letters of which c and u are recognized).
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
340 ;; Use the same method as `ls' to decide whether to show time-of-day or year,
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
341 ;; depending on distance between file date and NOW.
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
342 (let* ((time (nth (find-lisp-time-index switches) file-attr))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
343 (diff16 (- (car time) (car now)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
344 (diff (+ (ash diff16 16) (- (car (cdr time)) (car (cdr now)))))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
345 (past-cutoff (- (* 6 30 24 60 60))) ; 6 30-day months
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
346 (future-cutoff (* 60 60))) ; 1 hour
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
347 (format-time-string
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
348 (if (and
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
349 (<= past-cutoff diff) (<= diff future-cutoff)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
350 ;; Sanity check in case `diff' computation overflowed.
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
351 (<= (1- (ash past-cutoff -16)) diff16)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
352 (<= diff16 (1+ (ash future-cutoff -16))))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
353 "%b %e %H:%M"
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
354 "%b %e %Y")
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
355 time)))
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
356
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
357 (provide 'find-lisp)
a5051216d618 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
358
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87649
diff changeset
359 ;; arch-tag: a711374c-f12a-46f6-aa18-ba7d77b9602a
38431
853c3674f20a Fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37471
diff changeset
360 ;;; find-lisp.el ends here