annotate lisp/textmodes/tildify.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
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1 ;;; tildify.el --- adding hard spaces into texts
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2
74509
f7702c5f335d Update copyright years.
Glenn Morris <rgm@gnu.org>
parents: 68648
diff changeset
3 ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
100908
a9dc0e7c3f2b Add 2009 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 94670
diff changeset
4 ;; 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
5
38690
ebcceabda1b5 Milan Zamazal has new address.
Pavel Janík <Pavel@Janik.cz>
parents: 37895
diff changeset
6 ;; Author: Milan Zamazal <pdm@zamazal.org>
43636
30dfcb85b1ca (tildify-string-alist): Entry for xml-mode added.
Pavel Janík <Pavel@Janik.cz>
parents: 38690
diff changeset
7 ;; Version: 4.5
31529
7f307e299d03 Minor doc/commentary fixes.
Dave Love <fx@gnu.org>
parents: 26187
diff changeset
8 ;; Keywords: text, TeX, SGML, wp
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
9
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
11
94670
f4a69fedbd46 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
26187
eca255a79645 *** 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
94670
f4a69fedbd46 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
f4a69fedbd46 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
15 ;; (at your option) any later version.
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
16
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
21
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
94670
f4a69fedbd46 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/>.
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
24
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
25 ;;; Commentary:
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
27 ;; This package can be typically used for adding forgotten tildes in TeX
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
28 ;; sources or adding `&nbsp;' sequences in SGML (e.g. HTML) texts.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
29 ;;
68068
cac26a791725 Fix typos (misspellings) in the commentary.
Eli Zaretskii <eliz@gnu.org>
parents: 65583
diff changeset
30 ;; For example, the Czech orthography requires avoiding one letter
31529
7f307e299d03 Minor doc/commentary fixes.
Dave Love <fx@gnu.org>
parents: 26187
diff changeset
31 ;; prepositions at line endings. So they should be connected with the
7f307e299d03 Minor doc/commentary fixes.
Dave Love <fx@gnu.org>
parents: 26187
diff changeset
32 ;; following words by a tilde. Some users forget to do this all the
7f307e299d03 Minor doc/commentary fixes.
Dave Love <fx@gnu.org>
parents: 26187
diff changeset
33 ;; time. The purpose of this program is to check the text and suggest
7f307e299d03 Minor doc/commentary fixes.
Dave Love <fx@gnu.org>
parents: 26187
diff changeset
34 ;; adding of missing tildes on some places. It works in a similar
7f307e299d03 Minor doc/commentary fixes.
Dave Love <fx@gnu.org>
parents: 26187
diff changeset
35 ;; manner to `query-replace-regexp'.
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
36 ;;
31529
7f307e299d03 Minor doc/commentary fixes.
Dave Love <fx@gnu.org>
parents: 26187
diff changeset
37 ;; The functionality of this program is actually performing query
7f307e299d03 Minor doc/commentary fixes.
Dave Love <fx@gnu.org>
parents: 26187
diff changeset
38 ;; replace on certain regions, but for historical reasons explained
7f307e299d03 Minor doc/commentary fixes.
Dave Love <fx@gnu.org>
parents: 26187
diff changeset
39 ;; above it is called `tildify'.
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
40 ;;
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
41 ;; The default variable settings are suited for Czech, so do not try to
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
42 ;; understand them if you are not familiar with Czech grammar and spelling.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
43 ;;
68068
cac26a791725 Fix typos (misspellings) in the commentary.
Eli Zaretskii <eliz@gnu.org>
parents: 65583
diff changeset
44 ;; The algorithm was inspired by Petr Ol¹įk's program `vlna'. Abilities of
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
45 ;; `tildify.el' are a little limited; if you have improvement suggestions, let
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
46 ;; me know.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
47
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
48 ;;; Code:
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
49
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
50
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
51 ;;; *** User configuration variables ***
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
52
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
53
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
54 (defgroup tildify nil
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
55 "Adding missing hard spaces or other text fragments into texts."
31529
7f307e299d03 Minor doc/commentary fixes.
Dave Love <fx@gnu.org>
parents: 26187
diff changeset
56 :version "21.1"
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
57 :group 'wp)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
58
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
59 (defcustom tildify-pattern-alist
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
60 '((t "\\([,:;(][ \t]*[a]\\|\\<[AIKOSUVZikosuvz]\\)\\([ \t]+\\|[ \t]*\n[ \t]*\\)\\(\\w\\|[([{\\]\\|<[a-zA-Z]\\)" 2))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
61 "Alist specifying where to insert hard spaces.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
62
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
63 Each alist item is of the form (MAJOR-MODE REGEXP NUMBER) or
37894
504c274ec49b (tildify-ignored-environments-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 33949
diff changeset
64 \(MAJOR-MODE . SYMBOL).
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
65
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
66 MAJOR-MODE defines major mode, for which the item applies. It can be either:
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
67 - a symbol equal to the major mode of the buffer to be fixed
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
68 - t for default item, this applies to all major modes not defined in another
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
69 alist item
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
70
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
71 REGEXP is a regular expression matching the part of a text, where a hard space
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
72 is missing. The regexp is always case sensitive, regardless of the current
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
73 `case-fold-search' setting.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
74
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
75 NUMBER defines the number of the REGEXP subexpression which should be replaced
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
76 by the hard space character.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
77
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
78 The form (MAJOR-MODE . SYMBOL) defines alias item for MAJOR-MODE. For this
31529
7f307e299d03 Minor doc/commentary fixes.
Dave Love <fx@gnu.org>
parents: 26187
diff changeset
79 mode, the item for the mode SYMBOL is looked up in the alist instead."
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
80 :group 'tildify
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
81 :type '(repeat (choice (list symbol regexp integer) (cons symbol symbol))))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
82
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
83 (defcustom tildify-string-alist
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
84 '((latex-mode . "~")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
85 (tex-mode . latex-mode)
33949
7012133c553b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 31529
diff changeset
86 (plain-tex-mode . latex-mode)
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
87 (sgml-mode . "&nbsp;")
43636
30dfcb85b1ca (tildify-string-alist): Entry for xml-mode added.
Pavel Janík <Pavel@Janik.cz>
parents: 38690
diff changeset
88 (xml-mode . sgml-mode)
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
89 (html-mode . sgml-mode)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
90 (t . " "))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
91 "Alist specifying what is a hard space in the current major mode.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
92
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
93 Each alist item is of the form (MAJOR-MODE . STRING) or
37894
504c274ec49b (tildify-ignored-environments-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 33949
diff changeset
94 \(MAJOR-MODE . SYMBOL).
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
95
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
96 MAJOR-MODE defines major mode, for which the item applies. It can be either:
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
97 - a symbol equal to the major mode of the buffer to be fixed
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
98 - t for default item, this applies to all major modes not defined in another
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
99 alist item
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
100
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
101 STRING defines the hard space, which is inserted at places defined by
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
102 `tildify-pattern-alist'. For example it can be \"~\" for TeX or \"&nbsp;\"
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
103 for SGML.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
104
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
105 The form (MAJOR-MODE . SYMBOL) defines alias item for MAJOR-MODE. For this
31529
7f307e299d03 Minor doc/commentary fixes.
Dave Love <fx@gnu.org>
parents: 26187
diff changeset
106 mode, the item for the mode SYMBOL is looked up in the alist instead."
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
107 :group 'tildify
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
108 :type '(repeat (cons symbol (choice string symbol))))
49599
5ade352e8d1c Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 43636
diff changeset
109
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
110 (defcustom tildify-ignored-environments-alist
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
111 '((latex-mode
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
112 ("\\\\\\\\" . "") ; do not remove this
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
113 ("\\\\begin{verbatim}" . "\\\\end{verbatim}")
37895
41ca5705b623 (tildify-ignored-environments-alist): Recognize \verb* right.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37894
diff changeset
114 ("\\\\verb\\*?\\(.\\)" . (1))
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
115 ("\\$\\$" . "\\$\\$")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
116 ("\\$" . "\\$")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
117 ("\\\\(" . "\\\\)")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
118 ("\\\\[[]" . "\\\\[]]")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
119 ("\\\\begin{math}" . "\\\\end{math}")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
120 ("\\\\begin{displaymath}" . "\\\\end{displaymath}")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
121 ("\\\\begin{equation}" . "\\\\end{equation}")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
122 ("\\\\begin{eqnarray\\*?}" . "\\\\end{eqnarray\\*?}")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
123 ("\\\\[a-zA-Z]+\\( +\\|{}\\)[a-zA-Z]*" . "")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
124 ("%" . "$"))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
125 (plain-tex-mode . latex-mode)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
126 (html-mode
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
127 ("<pre[^>]*>" . "</pre>")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
128 ("<dfn>" . "</dfn>")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
129 ("<code>" . "</code>")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
130 ("<samp>" . "</samp>")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
131 ("<kbd>" . "</kbd>")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
132 ("<var>" . "</var>")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
133 ("<PRE[^>]*>" . "</PRE>")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
134 ("<DFN>" . "</DFN>")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
135 ("<CODE>" . "</CODE>")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
136 ("<SAMP>" . "</SAMP>")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
137 ("<KBD>" . "</KBD>")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
138 ("<VAR>" . "</VAR>")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
139 ("<! *--" . "-- *>")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
140 ("<" . ">"))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
141 (sgml-mode . html-mode)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
142 (t nil))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
143 "Alist specifying ignored structured text environments.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
144 Parts of text defined in this alist are skipped without performing hard space
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
145 insertion on them. These setting allow skipping text parts like verbatim or
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
146 math environments in TeX or preformatted text in SGML.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
147
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
148 Each list element is of the form
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
149 (MAJOR-MODE (BEG-REGEX . END-REGEX) (BEG-REGEX . END-REGEX) ... )
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
150
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
151 MAJOR-MODE defines major mode, for which the item applies. It can be either:
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
152 - a symbol equal to the major mode of the buffer to be fixed
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
153 - t for default item, this applies to all major modes not defined in another
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
154 alist item
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
155
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
156 BEG-REGEX is a regexp matching beginning of a text part to be skipped.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
157 END-REGEX defines end of the corresponding text part and can be either:
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
158 - a regexp matching the end of the skipped text part
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
159 - a list of regexps and numbers, which will compose the ending regexp by
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
160 concatenating themselves, while replacing the numbers with corresponding
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
161 subexpressions of BEG-REGEX (this is used to solve cases like
31529
7f307e299d03 Minor doc/commentary fixes.
Dave Love <fx@gnu.org>
parents: 26187
diff changeset
162 \\\\verb<character> in TeX)."
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
163 :group 'tildify
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
164 :type '(repeat (cons symbol (choice symbol (repeat sexp)))))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
165
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
166
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
167 ;;; *** Internal variables ***
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
168
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
169 (defvar tildify-count nil
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
170 "Counter for replacements.")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
171
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
172
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
173 ;;; *** Interactive functions ***
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
174
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
175 ;;;###autoload
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
176 (defun tildify-region (beg end)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
177 "Add hard spaces in the region between BEG and END.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
178 See variables `tildify-pattern-alist', `tildify-string-alist', and
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
179 `tildify-ignored-environments-alist' for information about configuration
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
180 parameters.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
181 This function performs no refilling of the changed text."
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
182 (interactive "*r")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
183 (setq tildify-count 0)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
184 (let (a
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
185 z
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
186 (marker-end (copy-marker end))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
187 end-env
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
188 finish
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
189 (ask t)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
190 (case-fold-search nil)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
191 (regexp (tildify-build-regexp)) ; beginnings of environments
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
192 aux)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
193 (if regexp
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
194 ;; Yes, ignored environments exist for the current major mode,
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
195 ;; tildify just texts outside them
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
196 (save-excursion
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
197 (save-restriction
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
198 (widen)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
199 (goto-char (point-min))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
200 (while (not finish)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
201 (setq a (point))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
202 (setq end-env (tildify-find-env regexp))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
203 (setq z (copy-marker (if end-env (1- (point)) (point-max))))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
204 (if (>= (marker-position z) beg)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
205 (progn
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
206 (or (>= a beg) (setq a beg))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
207 (or (<= (marker-position z) (marker-position marker-end))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
208 (setq z marker-end))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
209 (setq aux (tildify-tildify a (marker-position z) ask))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
210 (if (eq aux 'force)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
211 (setq ask nil)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
212 (if (eq aux nil)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
213 (setq finish t)))))
31529
7f307e299d03 Minor doc/commentary fixes.
Dave Love <fx@gnu.org>
parents: 26187
diff changeset
214 (if (>= (marker-position z) (marker-position marker-end))
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
215 (setq finish t))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
216 (or (>= (point) (marker-position z))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
217 (goto-char (marker-position z)))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
218 (if (not finish)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
219 (if (re-search-forward end-env nil t)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
220 (if (> (point) (marker-position marker-end))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
221 (setq finish t))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
222 (message
65583
703495630901 Message format spec fixes (2)
Deepak Goel <deego@gnufans.org>
parents: 64751
diff changeset
223 "End of environment not found: %s" end-env)
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
224 (setq finish t))))))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
225 ;; No ignored environments, tildify directly
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
226 (tildify-tildify beg end ask)))
65583
703495630901 Message format spec fixes (2)
Deepak Goel <deego@gnufans.org>
parents: 64751
diff changeset
227 (message "%d spaces replaced." tildify-count))
49599
5ade352e8d1c Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 43636
diff changeset
228
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
229 ;;;###autoload
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
230 (defun tildify-buffer ()
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
231 "Add hard spaces in the current buffer.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
232 See variables `tildify-pattern-alist', `tildify-string-alist', and
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
233 `tildify-ignored-environments-alist' for information about configuration
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
234 parameters.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
235 This function performs no refilling of the changed text."
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
236 (interactive "*")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
237 (tildify-region (point-min) (point-max)))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
238
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
239
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
240 ;;; *** Auxiliary functions ***
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
241
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
242 (defun tildify-build-regexp ()
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
243 "Build start of environment regexp."
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
244 (let ((alist (tildify-mode-alist tildify-ignored-environments-alist))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
245 regexp)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
246 (when alist
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
247 (setq regexp (caar alist))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
248 (setq alist (cdr alist))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
249 (while alist
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
250 (setq regexp (concat regexp "\\|" (caar alist)))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
251 (setq alist (cdr alist)))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
252 regexp)))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
253
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
254 (defun tildify-mode-alist (mode-alist &optional mode)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
255 "Return alist item for the MODE-ALIST in the current major MODE."
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
256 (if (null mode)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
257 (setq mode major-mode))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
258 (let ((alist (cdr (or (assoc mode mode-alist)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
259 (assoc t mode-alist)))))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
260 (if (and alist
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
261 (symbolp alist))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
262 (tildify-mode-alist mode-alist alist)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
263 alist)))
49599
5ade352e8d1c Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 43636
diff changeset
264
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
265 (defun tildify-find-env (regexp)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
266 "Find environment using REGEXP.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
267 Return regexp for the end of the environment or nil if no environment was
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
268 found."
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
269 ;; Find environment
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
270 (if (re-search-forward regexp nil t)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
271 ;; Build end-env regexp
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
272 (let ((match (match-string 0))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
273 (alist (tildify-mode-alist tildify-ignored-environments-alist))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
274 expression)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
275 (save-match-data
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
276 (while (not (eq (string-match (caar alist) match) 0))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
277 (setq alist (cdr alist))))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
278 (if (stringp (setq expression (cdar alist)))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
279 expression
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
280 (let ((result "")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
281 aux)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
282 (while expression
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
283 (setq result (concat result
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
284 (if (stringp (setq aux (car expression)))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
285 expression
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
286 (regexp-quote (match-string aux)))))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
287 (setq expression (cdr expression)))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
288 result)))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
289 ;; Return nil if not found
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
290 nil))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
291
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
292 (defun tildify-tildify (beg end ask)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
293 "Add tilde characters in the region between BEG and END.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
294 This function does not do any further checking except of for comments and
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
295 macros.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
296
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
297 If ASK is nil, perform replace without asking user for confirmation.
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
298
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
299 Returns one of symbols: t (all right), nil (quit), force (replace without
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
300 further questions)."
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
301 (save-excursion
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
302 (goto-char beg)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
303 (let* ((alist (tildify-mode-alist tildify-pattern-alist))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
304 (regexp (car alist))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
305 (match-number (cadr alist))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
306 (tilde (tildify-mode-alist tildify-string-alist))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
307 (end-marker (copy-marker end))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
308 answer
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
309 bad-answer
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
310 replace
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
311 quit
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
312 (message-log-max nil))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
313 (while (and (not quit)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
314 (re-search-forward regexp (marker-position end-marker) t))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
315 (when (or (not ask)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
316 (progn
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
317 (goto-char (match-beginning match-number))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
318 (setq bad-answer t)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
319 (while bad-answer
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
320 (setq bad-answer nil)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
321 (message "Replace? (yn!q) ")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
322 (setq answer (read-event)))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
323 (cond
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
324 ((or (eq answer ?y) (eq answer ? ) (eq answer 'space))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
325 (setq replace t))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
326 ((eq answer ?n)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
327 (setq replace nil))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
328 ((eq answer ?!)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
329 (setq replace t
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
330 ask nil))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
331 ((eq answer ?q)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
332 (setq replace nil
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
333 quit t))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
334 (t
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
335 (message "Press y, n, !, or q.")
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
336 (setq bad-answer t)))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
337 replace))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
338 (replace-match tilde t t nil match-number)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
339 (setq tildify-count (1+ tildify-count))))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
340 ;; Return value
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
341 (cond
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
342 (quit nil)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
343 ((not ask) 'force)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
344 (t t)))))
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
345
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
346
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
347 ;;; *** Announce ***
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
348
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
349 (provide 'tildify)
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
350
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
351
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
352 ;; Local variables:
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
353 ;; coding: iso-latin-2
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
354 ;; End:
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
355
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79719
diff changeset
356 ;; arch-tag: fc9b05a6-7355-4639-8170-dcf57853ba22
26187
eca255a79645 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
357 ;;; tildify.el ends here