Mercurial > emacs
annotate lisp/newcomment.el @ 104164:ac1a55cc2c38
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-create-formula-image): Remove the -E option for
dvipng.
* org-exp.el (org-default-export-plist): Respect #+BIND.
(org-export-confirm-letbind): New function.
* org.el (org-paste-subtree): Test the kill ring entry if it is
going to be used.
(org-copy-subtree): Use `org-forward-same-level'.
(org-forward-same-level): Respect the `invisibe-ok' arg for
back-to-heading.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-table-map-tables): Make sure cursor is back at table
beginning after funcall.
* org-agenda.el (org-agenda-bulk-action): Make sure parents are
handled before children, and do not error if an entry is not
found, probably because it hase been remove when the parent was
archived or refiled.
* org.el (org-ido-completing-read): Accept straight lists for
completion as well as alists.
* org-timer.el (org-timer-cancel-timers): Renamed from
`org-timer-cancel-timers'.
* org.el (org-cycle-internal-local): Fix problem with finding next
invisible line.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-list.el (org-list-send-list): Call
`org-list-goto-true-beginning' instead of
`org-list-find-true-beginning', which does not exist.
* org-timer.el (org-timer-reset-timers): Use `mapc'.
(org-timer-set-timer): Do not assign to heading.
* org-id.el (org-id-open): Quote function name.
* org-macs.el (org-unmodified): Turn off recording undo
information while running inside the macro.
* org-table.el (org-table-export): Also work in file-less
buffers.
* org.el (org-startup-indented): New option.
(org-startup-options): Add new options indent and noindent.
(org-unfontify-region): Remove line-prefix and wrap-prefix
properties.
(org-after-demote-entry-hook, org-after-promote-entry-hook): New
hooks.
(org-promote, org-demote): Run the new hooks.
* org-table.el (org-table-align): Replace leading \n as well.
* org-exp.el (org-export-push-to-kill-ring): Remove `line-prefix'
and `line-wrap' text properties.
* org-compat.el (org-kill-new): New function.
* org-agenda.el (org-format-agenda-item): Remove `line-prefix' and
`line-wrap' text properties.
* org-indent.el: New file.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-provide-todo-statistics): Tweak docstring.
* org-id.el (org-id-open): Honor `org-link-frame-setup'.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-as-org): Insert the "-source" string
before the extension.
* org.el (org-read-date): Make sure the calendar is in the current
frame.
(org-set-emph-re): Remove the ? from the post-match.
(org-emphasis-regexp-components): Add backslash to the
postmatch class.
(org-set-font-lock-defaults): Write \n instead of \xa, and make it
optional so that also lines at the end of the buffers will still
be matched as headlines.
* org-table.el (org-table-error-on-row-ref-crossing-hline):
Variable made obsolete.
(org-table-relative-ref-may-cross-hline): New option.
(org-table-find-row-type): Honow the new option
`org-table-relative-ref-may-cross-hline'.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-table.el (org-table-cut-region, org-table-copy-region): Work
on single field if no active region.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-latex.el (org-export-latex-make-header): Only insert title
if one is defined.
* org.el (org-make-options-regexp): Allow empty values.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-cycle-internal-local): Improved version of finding
next visible line.
(org-cycle-hide-drawers): Only hide drawers if this is really
necessary.
(outline-end-of-subtree): Make `outline-end-of-subtree' use the
org-version of this function in Org-mode. We use advice to
implement this change, so that future changes to this function in
outline.el wil be handled properly.
(org-forward-same-level, org-backward-same-level): New commands.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-remove-empty-overlays-at)
(org-clean-visibility-after-subtree-move): New functons.
(org-move-subtree-down): Simplify cleanup of display.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-mac-message.el (org-mac-message-get-links): Improve
docstring. Make argument SELECT-OR-FLAGGED optional, default to
"s". Fix the return value.
(org-mac-message-insert-flagged): Simplify.
* org.el (org-refile-get-location): Tamper with refile history o
that history contains compete matches instead of the entered
string.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-store-link): Never store a link to an inline task.
* org-footnote.el (org-footnote-goto-local-insertion-point): Skip
inline tasks when positioning footnotes.
* org.el (org-refile): Remove the END line when archiving an
inline task that does have an END line.
* org-archive.el (org-archive-subtree): Remove the END line when
archiving an inline task that does have an END line.
* org-macs.el (org-with-limited-levels): New macro.
(org-get-limited-outline-regexp): New function.
* org-exp.el (org-export-format-source-code-or-example): Fix bug
that did not enumerate first line.
(org-export-mark-radio-links): Skip matches in links.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-activate-plain-links): Make single-match.
(org-adapt-indentation): Fix docstring.
* org-macs.el (org-unmodified): Turn of modification hooks while
running this macro.
2009-08-06 Bastien Guerry <bzg@altern.org>
* org.el (org-adapt-indentation): Slightly improve the docstring.
(org-occur): Sends an error when the user inputs an empty string.
(org-priority): Bugfix: the tag alignement should happen within
save-excursion.
2009-08-06 Bastien Guerry <bzg@altern.org>
* org.el (org-make-link-regexps): Don't exclude parentheses from
`org-plain-link-re'
(org-cycle-internal-local): When locally cycling, switch directly
from CHILDREN to FOLDED if there is no subtree
(org-cycle): Update the docstring to document the new behavior of
`org-cycle-internal-local'.
2009-08-06 Nicolas Goaziou <n.goaziou@neuf.fr> (tiny change)
* org-clock.el (org-clock-in): Bugfix: recognize timestamps with
an abbreviated format for days.
2009-08-06 Bastien Guerry <bzg@altern.org>
* org-protocol.el (org-protocol-default-template-key): New
option.
* org.el (org-refile): Bugfix: save-excursion before reading the
refile target, otherwise cursor moves might confuse `org-refile'.
* org.el (org-toggle-heading): Bugfix: correctly convert list
items before the first headline.
* org.el (org-provide-todo-statistics): Allow a list of TODO
keywords to compute statistics against headlines containing a
keyword from this list.
(org-update-parent-todo-statistics): Possibly use the new allowed
value of `org-provide-todo-statistics'.
2009-08-06 Bastien Guerry <bzg@altern.org>
* org-timer.el: Add autoload cookie.
* org.el (org-occur-link-in-agenda-files): New function.
* org-timer.el (org-timer-last-timer): New variable.
* org-agenda.el (org-agenda-mode-map): New key for
org-timer-set-timer called from the agenda.
* org.el (org-mode-map): New key for org-timer-set-timer.
* org-timer.el (org-timer-reset-timers)
(org-timer-show-remaining-time, org-timer-set-timer): New
functions.
* org-clock.el (org-show-notification): Update the docstring.
* org.el (org-provide-todo-statistics): Allow new value
'all-headlines for this option, which includes entries with no
TODO keywords in the todo statistics.
(org-update-parent-todo-statistics): Possibly use the new
'all-headline value from `org-provide-todo-statistics'.
2009-08-06 Bastien Guerry <bzg@altern.org>
* org-clock.el (org-dblock-write:clocktable): Add a new option
:timestamp which allows display of timestamps in clock reports.
* org.el (org-mode-map): Define new key `C-c C-*': convert a plain
list to a subtree, preserving the structure of the list.
(org-set-emph-re): Make the last element optional in the regexp.
This regexp now matches an emphasized string at the end of a line.
* org-list.el (org-list-goto-true-beginning)
(org-list-make-subtree, org-list-make-subtrees): New functions.
* org.el (org-eval-in-calendar): Select the right frame.
(org-save-frame-excursion): Remove this macro.
2009-08-06 Bastien Guerry <bzg@altern.org>
* org-list.el (org-list-beginning-re): Bugfix: don't use * when
trying to find the beginning of a list.
* org-exp.el (org-get-file-contents): Use a new argument: markup.
When present, tell org-get-file-contents not to protect org-like
lines.
* org-id.el (org-id-uuid-program): New option to set the name of
the uuidgen program.
(org-id-method): Use `org-id-uuid-program'.
(org-id-new): Use `org-id-uuid-program'.
2009-08-06 Bastien Guerry <bzg@altern.org>
* org-exp.el (org-export-number-lines): Allow whitespace in code
references. Allow the -r switch to remove the references in the
source code even when the lines are not numbered: the labels can
be explicit enough.
* org.el (org-fontify-whole-heading-line): New option.
(org-set-font-lock-defaults): Use the new option.
* org-clock.el (org-show-notification-handler): New option.
(org-show-notification): Use the new option.
2009-08-06 Bastien Guerry <bzg@altern.org>
* org.el (org-eval-in-calendar): Fix a bug about calendar
navigation when `calendar-setup' value is 'calendar-only.
2009-08-06 Bastien Guerry <bzg@altern.org>
* org.el (orgstruct++-mode): Fix typo in docstring.
(org-insert-link): Clean up: (or (...)) => (...)
(org-insert-link): Use TAB for stored links completion.
2009-08-06 Bastien Guerry <bzg@altern.org>
* org.el (org-get-refile-targets): Fix bug: don't ignore case when
building the list of targets.
* org-remember.el (org-remember-delete-empty-lines-at-end): New
option.
(org-remember-handler): Use the new option.
2009-08-06 James TD Smith <ahktenzero@mohorovi.cc>
* org.el (org-tags-sort-function): New option for sorting tags.
(org-set-tags): Use the new option to sort tags.
* org-plot.el (org-plot/gnuplot): Run with an idle timer to avoid
premature deletion of the data when using org-plot in a script.
2009-08-06 Bastien Guerry <bzg@altern.org>
* org-clock.el (org-clock-in-prepare-hook): New hook.
(org-clock-in): Use this new hook.
2009-08-06 Bastien Guerry <bzg@altern.org>
* org.el (org-special-ctrl-a/e): Explicitely bind the value
'reversed for this option to the "true line boundary first"
behavior.
(org-tags-match-list-sublevels): Document the 'indented value for
this variable.
* org-latex.el (org-export-latex-first-lines): Fix problem with
publishing the region.
* org-exp.el (org-export-format-source-code-or-example): Fix
bad line numbering when exporting examples in HTML.
2009-08-06 James TD Smith <ahktenzero@mohorovi.cc>
* org-colview.el (org-format-time-period): Formats a time in
fractional days as days, hours, mins, seconds.
(org-columns-display-here): Add special handling for SINCE and
SINCE_IA to format for display.
* org.el (org-time-since): Add a function to get the time since an
org timestamp.
(org-entry-properties): Add two new special properties: SINCE and
SINCE_IA. These give the time since any active or inactive
timestamp in an entry.
(org-special-properties): Add SINCE, SINCE_IA.
(org-tags-sort-function): Add custom declaration for tags
sorting function.
(org-set-tags): Sort tags if org-tags-sort-function is set
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-clock.el (org-clock-goto): Find hidden headlines as well.
* org.el (org-narrow-to-subtree): Find hidden headlines as well.
* org-plot.el (org-plot/add-options-to-plist): Add timeind
option.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-publish.el (org-publish-remove-all-timestamps): New function.
(org-publish-all): Remove all timestamp files if `org-publish-all'
is called with a prefix argument.
* org-list.el (org-indent-item): Fix typo.
(org-item-indent-positions): Normalize ordered bullet.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-macs.el (org-set-local): Make a local variable, do not make
the variable buffer-local!
* org-latex.el (org-export-as-latex): Call `org-install-letbind'.
* org-exp.el (org-infile-export-plist): Read BIND lines.
(org-install-letbind): New function.
(org-export-as-org, org-export-preprocess-string): Call
`org-install-letbind'.
* org-list.el (org-list-demote-modify-bullet): New option.
(org-first-list-item-p): Save point.
(org-fix-bullet-type): New optional argument FORCE-BULLET.
(org-indent-item): Honor `org-list-demote-modify-bullet'.
(org-item-indent-positions): Return bullet types along with
indentation.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-show-entry): Hide drawers.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-footnote.el (org-footnote-auto-adjust): New option.
(org-footnote-auto-adjust-maybe): New function.
(org-footnote-new, org-footnote-delete): Call
`org-footnote-auto-adjust-maybe'.
* org.el (org-startup-options): Add new footnote-related
keywords.
* org-publish.el (org-publish-timestamp-filename): Additional
arguments PUB-DIR and PUB-FUNC, which are included in the hash.
(org-publish-needed-p): Additional arguments PUB-DIR PUB-FUNC
TRUE-PUB-DIR. Pass them through to
`org-publish-timestamp-filename'.
(org-publish-update-timestamp): Additional arguments PUB-DIR and
PUB-FUNC, which are included in the hash.
(org-publish-file): Delay timestamp test until the publishing
function is known.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-agenda.el (org-agenda-bulk-action): Add scheduling and
setting the deadline.
* org.el (org-read-date-final-answer): New variable.
(org-read-date): Store the final answer string, including the date
from the calendar, for reuse by agenda bulk commands.
* org-publish.el (org-publish-attachment): Fix publishing of
attachments.
* org-latex.el (org-export-latex-quotation-marks): Fix export of
quotation makrs in parenthesis.
(org-remove-initial-hash): New function.
(org-export-latex-preprocess): Fix bug with infinite loop if
environment is not properly closed.
* org-table.el (org-table-get-remote-range): Find #+TBLNAME also
when indented.
* org.el (org-fontify-meta-lines-and-blocks): Make #+TBLNAME
highlight also when indented.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-footnote.el (org-footnote-renumber-fn:N): New command.
(org-footnote-action): Offer renumbering.
* org.el (org-cycle): Honor the `integrate' value of
org-cycle-include-plain-lists'.
* org-list.el (org-cycle-include-plain-lists): New allowed value
`internal'. Improve the docstring.
* org.el (org-set-autofill-regexps): Improve the paragraph-start
regexp to work better with LaTeX commands.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-latex.el (org-export-latex-inline-image-extensions): Add ps
and eps extensions.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-agenda.el (org-write-agenda): Make sure org-icalendar is
loaded.
* org.el (org-map-entries): No longer force
`org-tags-match-list-sublevels' to t during a todo-only tags
search.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-latex.el (org-export-latex-low-levels): Allow user-defined
environment.
(org-export-latex-subcontent): Handle user-defined environment.
* org-agenda.el (org-agenda-view-mode-dispatch): Add more keys to
the View dispatcher.
* org.el (org-hide-block-toggle): Use `org-make-overlay' instead of
`make-overlay'.
* org-latex.el (org-export-as-pdf): Protect match data during call
to shell-quote-argument.
* org-agenda.el (org-agenda-mode-map): Modify bulk action keys.
(org-agenda-view-mode-dispatch): New function.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-agenda.el (org-agenda-mode): Reset list of marks.
(org-agenda-mode-map): Define new keys for refile and bulk action.
(org-agenda-menu): Add menu itesm for refile and bulk action.
(org-agenda-refile): New function.
(org-agenda-set-tags): Optional arguments TAG and ONOFF.
(org-agenda-marked-entries): New variable.
(org-agenda-bulk-select, org-agenda-remove-bulk-action-overlays)
(org-agenda-remove-all-bulk-action-marks)
(org-agenda-bulk-action): New functions/commands.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-get-file-contents): Protect org-like lines in
included files.
(org-export-format-source-code-or-example): Remove newlines.
* org-latex.el (org-export-latex-links): Check for no-description
marking.
* org-exp.el (org-export-preprocess-apply-macros): Switch macro
argument separator back to comma.
(org-export-normalize-links): Mark links without description.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-infile-export-plist): Fix bug in macro
processing.
* org-agenda.el (org-agenda-clock-out): Update line after clocking
out.
(org-agenda-highlight-todo): Fix bug with highlighting.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-set-font-lock-defaults): Adapt formatting to capture
new alignment strings.
* org-table.el (orgtbl-self-insert-command): Add yas/expand to
command list.
(org-table-align): Check for forced align type.
* org.el (org-self-insert-command): Add yas/expand to command
list.
* org-clock.el (org-clock-in-hook): New hook.
(org-clock-in): Run `org-clock-in-hook.
(org-clock-out-hook): New hook.
(org-clock-out): Run `org-clock-out-hook.
(org-clock-cancel-hook): New hook.
(org-clock-cancel): Run `org-clock-cancel-hook.
(org-clock-goto-hook): New hook.
(org-clock-goto): Run `org-clock-goto-hook.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-store-link): Better default description for link to
Org-mode headline.
* org-exp.el (org-export-generic): Autoload the generic exporter
function.
(org-export): Implement the `g' key for the generic exporter.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-table.el (orgtbl-setup): Add a binding for `S-iso-lefttab',
and for zbacktab'.
* org-exp.el (org-infile-export-plist): Get macros also from
#+SETUPFILE.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-colview.el (org-columns-capture-view): Protect vertical bars
in column values.
(org-columns-capture-view): Exclude comment and archived trees.
* org-colview-xemacs.el (org-columns-capture-view): Protect
vertical bars in column values.
(org-columns-capture-view): Exclude comment and archived trees.
* org.el (org-quote-vert): New function.
* org-latex.el (org-export-latex-verbatim-wrap): New option.
* org-exp.el (org-export-format-source-code-or-example): Use
`org-export-latex-verbatim-wrap'.
* org.el (org-clone-subtree-with-time-shift): Also shift inactive
time stamps.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp-blocks.el: New file.
* org-remember.el (org-remember-templates): Allow the headline
element to be a function.
(org-remember-apply-template): If the headline is a function, call
it to get the true function.
* org-clock.el (org-clock-menu): New function.
(org-clock-update-mode-line): Update help string.
(org-clock-modify-effort-estimate): New function.
(org-clock-mark-default-task): New function.
* org.el (org-hh:mm-string-to-minutes): Also take just a number of
minutes as input.
(org-org-menu): Add new clocking stuff.
(org-clock-is-active): New function.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-open-non-existing-files): Improve docstring.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-icalendar.el (org-icalendar-include-bbdb-anniversaries): New
option.
(org-export-icalendar): Call `org-bbdb-anniv-export-ical'.
* org-bbdb.el (org-bbdb-anniv-export-ical): New function.
* org-list.el (org-get-checkbox-statistics-face): Use the new
faces.
* org-faces.el (org-checkbox-statistics-todo)
(org-checkbox-statistics-done): New faces.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-latex.el (org-export-latex-use-verb): New variable.
(org-export-latex-emph-format): Prefer \texttt over \verb when
org-export-latex-use-verb is set.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-remember.el (org-remember-handler): Abort remember if the
buffer is empty.
* org-exp.el (org-export-format-source-code-or-example): Run
`org-src-mode-hook'.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-indent-line-function): Fix indentation of +#end lines.
2009-08-06 Tassilo Horn <tassilo@member.fsf.org>
* org-gnus.el (org-gnus-store-link): Require message.el in
org-gnus-store-link.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-src.el: New file, split out of org.el
* org-macs.el (org-replace-match-keep-properties): New function.
* org-exp.el (org-export-mark-blockquote-verse-center): Better
preprocessing of center and quote and verse blocks.
* org-list.el (org-list-end): Respect the stored "original"
indentation when determining the end of the list.
* org-exp.el (org-export-replace-src-segments-and-examples):
Remember indentation correctly.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-clock.el (org-clock-update-mode-line): Apply face
org-mode-line-clock.
* org-faces.el (org-mode-line-clock): New face.
2009-08-06 Tassilo Horn <tassilo@member.fsf.org>
* org-gnus.el (org-gnus-store-link): Fix bug where
`org-gnus-store-link' used wrong subject when called in an article
buffer. Patch provided by fengli AT gmail DOT com.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-format-source-code-or-example): Remember
the original indentation of source code snippets and examples.
* org-latex.el (org-export-as-latex): Relocate the table of
contents.
* org.el (org-ctrl-c-ctrl-c): Update clock lines.
* org-agenda.el (org-run-agenda-series): Scope global options also
when creating the agenda buffer.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-adapt-indentation): Improve documentation.
(org-insert-property-drawer): Respect org-adapt-indentation when
inserting the drawer.
(org-remove-flyspell-overlays-in): New function.
(org-do-emphasis-faces, org-activate-plain-links)
(org-activate-code, org-fontify-meta-lines-and-blocks)
(org-activate-angle-links, org-activate-footnote-links)
(org-activate-bracket-links, org-activate-dates)
(org-activate-target-links, org-activate-tags): Remove flyspell
overlays.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-edit-src-save): New function.
* org-clock.el (org-clock-out-switch-to-state): New option.
(org-clock-out): Honor `org-clock-out-switch-to-state'.
* org-compat.el (org-compatible-face): Improve macro.
* org.el (org-global-properties-fixed): Add default for
CLOCK_MODELINE_TOTAL.
* org-clock.el (org-clock-sum): Accept lists and strigs as tstart
andd tend.
(org-clock-sum-current-item): Optional argument TSTART, pass it to
org-clock-sum.
(org-clock-get-sum-start): New function.
* org.el (org-startup-options): New keywords blockhide and
blockshow.
(org-mode): Add new invisibility spec.
(org-set-startup-visibility): Hide block on startup if so
desired.
(org-hide-block-startup): New option.
(org-block-regexp): New constant.
(org-hide-block-overlays): New variable.
(org-block-map, org-hide-block-toggle-all, org-hide-block-all)
(org-show-block-all, org-hide-block-toggle-maybe)
(org-hide-block-toggle): New functions.
(org-edit-src-exit): Do not quote lines starting with # and no +
behind it.
(org-auto-repeat-maybe): Add LAST_REPEAT properter for a repeating
entry.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-buffer-property-keys): Add Effort property for
completion.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-clock.el (org-clock-sum-current-item): Fix positioning bug
when retrieving total clocked time in the subtree.
* org.el (org-quoting-blocks): New variable.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-table.el (org-table-store-formulas)
(org-table-get-stored-formulas, org-table-fix-formulas)
(org-table-edit-formulas, orgtbl-ctrl-c-ctrl-c)
(orgtbl-gather-send-defs): Allow indented #+TBLFM line.
* org.el (org-fontify-meta-lines, org-ctrl-c-ctrl-c): Allow
indented #+TBLFM line.
* org-footnote.el (org-footnote-goto-local-insertion-point): Allow
indented #+TBLFM line.
* org-colview.el (org-dblock-write:columnview): Allow indented
#+TBLFM line.
* org-colview-xemacs.el (org-dblock-write:columnview): Allow
indented #+TBLFM line.
* org-clock.el (org-dblock-write:clocktable): Allow indented
#+TBLFM line.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-format-source-code-or-example): Make
editing indented blocks work correctly.
* org.el (org-edit-src-nindent): New variable.
(org-edit-src-code, org-edit-fixed-width-region)
(org-edit-src-find-region-and-lang, org-edit-src-exit): Make
editing indented blocks work correctly.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-replace-src-segments-and-examples): FInd
indented blocks.
(org-export-format-source-code-or-example): Fix indentation of
blocks.
(org-export-remove-indentation): New function.
(org-export-select-backend-specific-text): Allow backend-specific
code to be indented.
(org-export-mark-blockquote-verse-center): Allow markers to be
indented.
* org.el (org-fontify-meta-lines): New function.
(org-set-font-lock-defaults): Call the new fontification
function.
* org-faces.el (org-meta-line): New face
(org-block): New face.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-treat-insert-todo-heading-as-state-change)
(org-treat-S-cursor-todo-selection-as-state-change): New
variables.
(org-insert-todo-heading): Honor
`org-treat-insert-todo-heading-as-state-change'.
(org-shiftright, org-shiftleft): Honor
`org-treat-S-cursor-todo-selection-as-state-change'.
(org-inhibit-logging): New variable.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-agenda.el (org-remove-subtree-entries-from-agenda): Reduce
range for marker position checking.
* org-latex.el (org-export-latex-first-lines): Fix bug when
exporting a region.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-push-to-kill-ring): Protect using
x-set-selection, because that does not always work.
* org-agenda.el (org-agenda-list): Apply the new face
`org-agenda-date-today'.
* org-faces.el (org-agenda-date-today): New face.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-agenda.el (org-agenda-to-appt): Turn off restriction when
creating appointments.
* org-latex.el (org-export-latex-low-levels): Fix customization
type.
* org.el (org-priority, org-shiftup, org-shiftdown): Disable
priority commands.
* org-agenda.el (org-agenda-priority): Disable priority commands.
* org.el (org-enable-priority-commands): New option.
* org-colview-xemacs.el (org-columns-compute)
(org-columns-number-to-string): Fix problems with empty fields.
* org-colview.el (org-columns-compute)
(org-columns-number-to-string): Fix problems with empty fields.
* org-exp.el (org-export-push-to-kill-ring): New function.
(org-export-copy-to-kill-ring): New option.
* org-latex.el (org-export-as-latex): Call
`org-export-push-to-kill-ring'.
* org-exp.el (org-export-show-temporary-export-buffer): New
option.
* org-latex.el (org-export-as-latex): Use
`org-export-show-temporary-export-buffer'.
* org-exp.el (org-export-show-temporary-export-buffer): New
option.
(org-export-push-to-kill-ring): New function.
* org-colview.el (org-columns-compile-map): New variable.
(org-columns-new, org-columns-compute)
(org-columns-number-to-string, org-columns-uncompile-format)
(org-columns-compile-format): Implement new operators.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-plist-vars): Add :xml-declaration.
* org-list.el (org-update-checkbox-count): Make property
dependent.
* org.el (org-hierarchical-todo-statistics): New option.
(org-update-parent-todo-statistics): Modified to handle recursive
statistics.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-publish.el (org-publish): Make this function behave
correctly in interactive use when called with a prefix argument.
* org.el (org-todo-statistics-hook): New hook.
(org-update-parent-todo-statistics): Use new hook.
(org-log-into-drawer): New function.
(org-add-log-setup): Use the new `org-log-into-drawer' function to
determine if we should be logging into a drawer.
(org-log-into-drawer): Update docstring.
(org-default-properties): Add LOG_INTO_DRAWER as a property.
* org-list.el (org-checkbox-statistics-hook): New hook.
(org-update-checkbox-count-maybe): Use new hook.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-edit-src-code, org-edit-fixed-width-region): Use a
better bufer-generating mechanism.
(org-edit-src-find-buffer): New function.
* org-icalendar.el (org-print-icalendar-entries): Don't check for
archive tag, this is already done by `org-agenda-skip'.
data while constructing lost of tags.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-preprocess-apply-macros): Use semicolon
as argument separator in macros.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-after-sorting-entries-or-items-hook): New hook.
(org-sort-entries-or-items): Run the new hook.
(org-after-refile-insert-hook): New hook.
(org-refile): Run `org-after-refile-insert-hook'.
* org-agenda.el (org-agenda-get-progress): Never take time of day
from headline when displaying progress.
* org-latex.el (org-export-latex-complex-heading-re): New variable.
(org-export-as-latex): Force the correct regexp in the
preprocessor buffer.
(org-export-latex-set-initial-vars): Set
`org-export-latex-complex-heading-re'.
* org-agenda.el (org-agenda-start-with-log-mode): New option.
(org-agenda-mode): Use `org-agenda-start-with-log-mode'.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-latex.el (org-export-latex-tables-centered): New option.
(org-export-latex-tables): Use `org-export-latex-tables-centered'.
* org-exp.el (org-export-as-org): New command.
(org-export-as-org): New command.
* org-publish.el (org-publish-org-to-org): New function.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-yank): Just call `org-yank-generic'.
(org-yank-generic): New function, containing the formaer
functionality of `org-yank'.
* org-latex.el (org-export-latex-not-done-keywords)
(org-export-latex-done-keywords): New variables.
(org-export-latex-todo-keyword-markup): New option.
(org-export-latex-set-initial-vars): Remember the TODO keywords.
(org-export-latex-keywords-maybe): Apply the TODO markup.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-infile-export-plist): Add more default macros.
(org-export-preprocess-apply-macros): Process macro arguments.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-icalendar.el (org-icalendar-include-todo): New allowedvalue
`unblocked'.
(org-print-icalendar-entries): Respect the new value of
`org-icalendar-include-todo'.
* org.el (org-link-try-special-completion)
(org-file-complete-link): New functions.
(org-insert-link): Add special completion support for some link
types.
* org-bbdb.el (org-bbdb-complete-link): New function.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-list.el (org-update-checkbox-count): Allow recursive
statistics.
(org-hierarchical-checkbox-statistics): New option.
* org.el (org-cycle): Remove erraneous space character.
* org-icalendar.el (org-icalendar-timezone): Initialize from
environment.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-autoload): Fix autoloading of ascii export
functions.
(org-modules): Add org-special-blocks.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-icalendar.el (org-start-icalendar-file): Use the new option.
(org-ical-timezone): New option.
* org-exp.el (org-export-get-coderef-format): Use the description
is present.
* org.el (org-sort-entries-or-items): Improve docstring, and make
better implementation for time sorting.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-edit-src-persistent-message): New option.
(org-edit-src-code, org-edit-fixed-width-region): Use the new
option.
* org-clock.el (org-clock-insert-selection-line): Fix prefious
patch.
* org.el (org-edit-src-code, org-edit-fixed-width-region): Use
separate buffer instead of indirect buffer to edit source code.
(org-edit-src-exit): Make this function work with the new setup.
* org-clock.el (org-clock-insert-selection-line): Make sure tasks
are properly fontified before shown in the selection menu.
* org.el (org-fontify-like-in-org-mode): New function.
* org-latex.el (org-export-latex-links): Use the property list to
retrieve the default image attributes.
* org-exp.el (org-export-plist-vars): Add a new option.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export, org-export-visible): Support ASCII
export to buffer
(org-export-normalize-links): Do not protect the description if it
is explicitly given.
* org-list.el (org-reset-checkbox-state-subtree): Moved here from
org-checklist.el.
(org-reset-checkbox-state-subtree): Call
`org-reset-checkbox-state-subtree'.
* org-remember.el (org-select-remember-template): For the
selection of a valid template.
* org-latex.el (org-export-region-as-latex): Supply the
force-no-subtree argument.
(org-export-as-latex): Provide better limits when exporting the
first line. When exporting to string, we still want the first
lines.
(org-export-latex-first-lines): New argument END, to force the end
of the region.
(org-export-region-as-latex): Use the property list.
(org-export-as-latex):
* org-colview-xemacs.el (org-columns-remove-overlays)
(org-columns): Fix call to `local-variable-p'.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-latex.el (org-export-latex-after-blockquotes-hook): New hook.
(org-export-latex-preprocess): Run the new hook.
* org-exp.el (org-export-preprocess-after-blockquote-hook): New hook.
(org-export-preprocess-string): Run the new hook.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-macs.el (org-check-external-command): New defsubst.
* org.el (org-mode-map): New key for reload.
(org-format-latex): Better error message when external programs
are not available.
* org-agenda.el (org-agenda-mode-map): Bind `org-reload'.
* org.el (org-sort-entries-or-items): Explicit sorting function
for priorities, needed for XEmacs compatibility.
* org-remember.el (org-remember-apply-template): Improve auto-save
behavior.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-latex.el (org-export-latex-preprocess): Also protect
environments ending in a star.
* org-list.el (org-at-item-p): Fix regular expression.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-end-of-subtree): Improve speed.
* org-agenda.el (org-agenda-get-timestamps)
(org-agenda-get-progress, org-agenda-get-deadlines)
(org-agenda-get-scheduled, org-agenda-get-blocks): Optimizations,
in particular, wait as long as possible to collect the tags.
(org-stuck-projects): Improve docstring.
* org.el (org-store-link): No errors when getting custom id before
first headline.
(org-get-tags-at): Use `org-up-heading-safe' when getting tags.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-prepare-agenda-buffers): Catch a throw to nextfile.
* org-protocol.el: Remove dependency on url.el.
(org-protocol-unhex-compound, org-protocol-open-source): Remove
dependency on url.el.
* org-latex.el (org-export-as-pdf): Use
`org-latex-to-pdf-process'.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-latex.el (org-latex-to-pdf-process): New option.
* org-agenda.el (org-agenda-skip-additional-timestamps-same-entry):
New option.
(org-agenda-get-timestamps): Honor
`org-agenda-skip-additional-timestamps-same-entry'.
* org-clock.el (org-clock-goto-may-find-recent-task): New option.
(org-clock-goto): Find recent task only if
`org-clock-goto-may-find-recent-task' allows it.
* org-exp.el (org-export-remove-or-extract-drawers): Handle empty
drawers, and drawers that are missing the :END: line.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-clock.el (org-clock-goto): Go to recently clocked task if no
clock is running.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-update-parent-todo-statistics): Check for
STATISTICS_FROM property.
* org-list.el (org-update-checkbox-count): Check for
STATISTICS_FROM property.
* org.el (org-tab-first-hook)
(org-tab-after-check-for-table-hook)
(org-tab-after-check-for-cycling-hook): New hooks.
(org-cycle-internal-global, org-cycle-internal-local): New
functions, split out from `org-cycle'.
(org-cycle): Call the new hooks.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-preprocess-string): Reset the list of
preferred targets for each run of the preprocessor.
* org.el (org-refile-target-verify-function): Improve
documentation.
(org-get-refile-targets): Respect point being moved by the
verification function.
* org-latex.el (org-export-latex-timestamp-keyword-markup): New
option.
(org-export-latex-keywords): Use new option.
* org.el (org-rear-nonsticky-at): New defsubst.
(org-activate-plain-links, org-activate-angle-links)
(org-activate-footnote-links, org-activate-bracket-links)
(org-activate-dates, org-activate-target-links)
(org-activate-tags): Place the rear-nonsticky properties at the
correct location.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-protocol.el (server-edit): Declare `server-edit'.
(org-protocol-unhex-string, org-protocol-unhex-compound): New
functions.
(org-protocol-check-filename-for-protocol): Call `server-edit'.
* org.el (org-default-properties): New default properteis for
completion.
* org-exp.el (org-export-add-subtree-options): Add new properties
for subtree export.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-id.el (org-id-get-with-outline-path-completion): Turn off
org-refile-target-verify-function for the duration of the command.
* org.el (org-link-to-org-use-id): New possible value
`create-if-interactive-and-no-custom-id'.
(org-store-link): Use custom IDs.
(org-link-search): Find custom ID properties from #link.
(org-default-properties): Add CUSTOM_ID for property completion.
(org-refile-target-verify-function): New option.
(org-goto): Turn off org-refile-target-verify-function
for the duration of the command.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-preferred-target-alist): New variable.
(org-export-define-heading-targets): Find the new CUSTOM_ID
property.
(org-export-target-internal-links): Target the custom ids when
possible.
* org-latex.el (org-export-latex-preprocess): Better regexp for
matching latex macros with arguments.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-remember.el (org-remember-handler): Allow filing to non-org
files.
2009-08-06 Magnus Henoch <magnus.henoch@gmail.com>
* org-table.el (org-table-fix-formulas): Do not change references
to remote tables.
(org-table-get-remote-range): Convert standard coordinates to RC
format.
* org-latex.el (org-export-latex-keywords): Fix regexp bug.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-compat.el (org-sha1-string): Function removed.
* org.el (org-refile-allow-creating-parent-nodes): New option.
(org-refile-get-location): New argument NEW-NODES.
(org-refile): Call `org-refile-get-location' with the new
argument.
(org-refile-get-location): Arrange for adding a new child.
(org-refile-new-child): New function.
* org-clock.el: Fix a number of docstrings.
(org-clock-find-position): New argument
FIND-UNCLOSED to make the function find an unclosed clock in the
entry.
(org-clock-in): Call `org-clock-find-position' with the new
argument if we might be resuming a clock.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-latex.el (org-export-latex-display-custom-times): New variable.
(org-export-latex-timestamp-markup): New option.
(org-export-latex-set-initial-vars): Remember the local value of
`org-display-custom-times'.
(org-export-latex-content): Process time stamps.
(org-export-latex-time-stamps): New function.
* org-macs.el (org-maybe-intangible): Add intangible property
again to invisible text.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-default-export-plist): Handle undefined
variables.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-sort-entries-or-items): Match TODO keywrds
case-sensitively, when sorting.
(org-priority): Do not match TODO keywords with wrong case.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-todo): Honor the NOBLOCKING property.
* org-agenda.el (org-agenda-dim-blocked-tasks): Honor the
NOBLOCKING property.
* org.el (org-scan-tags): Fix bug in tag scanner
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-modules): Mark obsolete packages.
* org-html.el: New file, split out from org-exp.el.
* org-icalendar.el: New file, split out from org-exp.el.
* org-xoxo.el: New file, split out from org-exp.el.
* org-ascii.el: New file, split out from org-exp.el.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-compat.el (org-find-library-name): New function.
* org.el (org-pre-cycle-hook): New hook.
(org-cycle): Call the new hook in appropriate places.
(org-reload): Only reload files that have been loaded before.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-set-font-lock-defaults): Enforxe space or line end
after todo keyword.
(org-todo): When changing TODO state, do matching
case-sensitively.
(org-map-continue-from): New variable.
(org-scan-tags): Respect values in `org-map-continue-from'.
(org-reload): Make XEmacs compatible.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-protocol.el (org-protocol-flatten-greedy): New function.
(org-protocol-flatten): New function.
* org.el (org-open-link-from-string): Pass reference buffer to
`org-open-at-point'.
(org-open-at-point): New optional argument `reference-buffer'.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-scan-tags): Make tag scan find headline in first
line, 2nd attempt.
(org-get-refile-targets): Add the naked file name.
(org-refile): Store as top-level entry when only file name was
given.
* org-agenda.el (org-agenda-get-progress): Fix regexp bug.
* org.el (org-block-todo-from-children-or-siblings-or-parent):
Renamed from org-block-todo-from-children-or-siblings, and
enhanced to look for the parent's status as well.
* org-agenda.el (org-agenda-log-mode-add-notes): New option.
(org-agenda-get-progress): Add first notes line to log entry if so
desired.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-agenda.el (org-agenda-cleanup-fancy-diary-hook): New hook.
(org-agenda-cleanup-fancy-diary): Call the new hook.
* org-remember.el (org-remember-apply-template): Take the default
for the annotation from the :annotation property.
* org-mac-message.el (org-mac-message-get-link): Remove the
quotes.
(org-mac-message-get-link): Return the result.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-refile-get-location): Add file name only if not
already included in outline path.
* org-faces.el (org-n-level-faces): Fix customization type from
number to integer.
* org-exp.el (org-export-headline-levels): Fix customization type
from number to integer.
* org-agenda.el (org-agenda-confirm-kill)
(org-agenda-custom-commands-local-options)
(org-timeline-show-empty-dates, org-agenda-ndays)
(org-agenda-start-on-weekday, org-scheduled-past-days): Fix
customization type from number to integer.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-protocol.el: Declare some functions.
* org-agenda.el (org-agenda-compare-effort): Honor
`org-sort-agenda-noeffort-is-high'.
(org-agenda-filter-by-tag, org-agenda-filter-make-matcher)
(org-agenda-compare-effort): Implement the "?" operator for
finding entries without effort setting.
* org.el (org-extract-attributes-from-string): New function.
* org-exp.el (org-export-splice-attributes): New function.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-mouse.el: XEmacs compatibility fixes
* org.el (org-modules): Add org-inlinetasks.el
(org-cycle): Implement limiting level on cycling.
(org-move-subtree-down): Fix bug with swapping subtrees at end of
buffer.
* org-inlinetask.el: New file.
* org-protocol.el: New file.
* org.el (org-emphasis-regexp-components): Allow braces in
emphasis pre and post match.
* org-footnote.el (org-footnote-normalize): When only dorting, do
not insert inline notes at the end.
* org.el (org-require-autoloaded-modules): Add org-docbook.el.
* org-docbook.el: New file.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-reftex-citation): New command.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-agenda.el (org-agenda-cmp-user-defined): New option.
(org-sorting-choice, org-agenda-sorting-strategy): Add the new
sorting options.
(org-entries-lessp): Apply the new sorting option.
* org.el (org-block-todo-from-children-or-siblings): Fix bug in
blocker code, when an older sibling has children.
* org-mac-message.el (org-mac-message-get-link): Improve getting
links from multiple selected messages.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-remember.el (org-remember-finalize): Do not set buffer file
name to nil.
(org-remember-handler): Mark buffer as unmodified.
(org-remember-handler): Delete backup file and show message about
remaining backup files.
(org-remember-auto-remove-backup-files): New option.
* org.el (org-store-link): Use buffer name as link description in
w3-mode buffers.
(org-ido-switchb): Fix argument bug for completion.
* org-remember.el (org-remember-apply-template): Set local
variable `auto-save-visited-file-name' instead of global one.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-agenda.el (org-agenda-get-todos): Fix bug with match-data.
(org-agenda-get-todos): Mark file tags as inherited.
(org-agenda-list): Always search diary lines for a time.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-feed.el: New file.
* org-exp.el (org-export-as-html): Close local lists depending on
indentation, also when starting a table.
* org-remember.el (org-remember-backup-directory)
(org-remember-backup-name): New internal variable.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-clock.el (org-clock-out-if-current): Make buffer detection
work in indirect buffers as well.
* org.el (org-emphasis-regexp-components): Add the exxclamation
mark to the post-emphasis characters.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-read-date-minibiffer-septup-hook): New hook.
(org-read-date): Run the new hook.
* org-mac-message.el (org-mac-flagged-mail): New group.
(org-mac-mail-account): New variable.
(org-mac-create-flagged-mail, org-mac-insert-flagged-mail): New
commands.
* org-remember.el (org-remember-backup-directory): New variable.
(org-remember-apply-template): Write file to backup directory.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-mouse.el (org-mouse-todo-menu): New function.
(org-mouse-todo-keywords): Function removed.
(org-mouse-context-menu): Use `org-mouse-todo-menu'.
* org-table.el (org-table-beginning-of-field)
(org-table-end-of-field): New commands
(org-table-previous-field, org-table-beginning-of-field): Better
error messages.
(orgtbl-setup): Include `M-a' and `M-e'.
* org.el (org-backward-sentence, org-forward-sentence): New
commands.
* org-colview.el (org-colview-initial-truncate-line-value): New
variable.
(org-columns-remove-overlays): Restore the value of `truncate-lines'.
(org-columns): Remember the value of `truncate-lines'.
* org-colview-xemacs.el (org-colview-initial-truncate-line-value):
New variable.
(org-columns-remove-overlays): Restore the value of
`truncate-lines'.
(org-columns): Remember the value of `truncate-lines'.
* org.el (org-columns-skip-arrchived-trees): New option.
* org-agenda.el (org-agenda-export-html-style): Define color for
org-agenda-done face.
(org-search-view, org-agenda-get-todos, org-agenda-get-progress)
(org-agenda-get-deadlines, org-agenda-get-scheduled): Use new face.
* org.el (org-scan-tags): Use the new face.
* org-faces.el (org-agenda-done): New face.
* org.el (org-scan-tags): Test the value org
`org-tags-match-list-sublevels'.
(org-tags-match-list-sublevels): New allowed value: indented.
* org-latex.el (org-export-latex-make-header): Apply macros
in header.
* org-exp.el (org-export-apply-macros-in-string): New function.
* org-latex.el (org-export-latex-list-parameters): Fix bug
with the definition of a checked box.
* org-clock.el (org-clock-find-position): Fix drawer indentations.
* org-latex.el (org-export-latex-low-levels): More options
for how to process lower levels in LaTeX.
(org-export-latex-subcontent): Better treatment for lists as a
means of publishing lower levels.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-set-font-lock-defaults): Use new checkbox face.
* org-faces.el (org-checkbox): New face.
* org-exp.el (org-export-html-preprocess): Only create LaTeX
fragement images if there is an export file.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-agenda.el (org-stuck-projects): Document that the subtree of
projects that are not stuck will now be searched for stuck
sub-projects.
(org-agenda-skip-entry-when-regexp-matches)
(org-agenda-skip-entry-when-regexp-matches-in-subtree): New functions.
(org-agenda-list-stuck-projects): Use
`org-agenda-skip-entry-when-regexp-matches-in-subtree'.
* org-latex.el (org-export-latex-preprocess): Improve
export of verses.
* org-exp.el (org-export-as-html): Implement centering as a div
rather than a paragraph. Do a better job with line-end in verse
environments.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-open-at-point): Fix tags searches by mouse click.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-latex.el (org-export-latex-preprocess): Implement the
centering markup.
* org-exp.el (org-export-mark-blockquote-verse-center): Renamed
from `org-export-mark-blockquote-and-verse'.
(org-export-as-html): Implement the centering markup.
* org-latex.el (org-export-latex-tables): Fix vertical
lines in tables.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-read-date-history): New variable.
(org-read-date): Use new history variable.
(org-toggle-heading): Fix bug when used before first headline.
(org-store-log-note): Remove drawer if empty while note is
aborted.
(org-remove-empty-drawer-at): New function.
(org-check-after-date): New command.
(org-sparse-tree): New sparse tree command "a".
* org-exp.el (org-export-as-ascii): Improve export of plain lists.
2009-08-06 Bastien Guerry <bzg@altern.org>
* org.el (org-toggle-fixed-width-section): Bug fix: insert a
column and a space, not only a column.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-latex.el (org-export-latex-emphasis-alist): Better
defaults for verbose emphasis.
(org-export-latex-emph-format): New function.
(org-export-latex-fontify): Call `org-export-latex-emph-format'.
* org-agenda.el (org-agenda-menu): Add new commands to menu.
(org-agenda-do-date-later, org-agenda-do-date-earlier)
(org-agenda-date-later-minutes, org-agenda-date-earlier-minutes)
(org-agenda-date-later-hours, org-agenda-date-earlier-hours): New
commands.
* org.el (org-timestamp-change): Move end-time along with start
time.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-target-internal-links)
(org-export-as-html): Protect links specified as #name.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-clone-subtree-with-time-shift): New command.
* org-latex.el (org-export-latex-special-chars)
(org-export-latex-treat-sub-super-char): Fix subscript export.
* org-exp.el (org-create-multibrace-regexp): Do not add
backslashes to the class.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-colview.el (org-columns-map): Better functions for moving up
and down a row, even if `truncate-line' is nil.
* org.el (org-insert-todo-heading): Make sure the keyword is
inserted at the correct position.
* org-publish.el (org-publish-project-alist)
(org-publish-projects, org-publish-org-index): Change default anme
for the index of file names to "sitemap.org".
* org-latex.el (org-export-latex-tables): Use
`org-split-string', for Emacs 21 compatibility.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-agenda.el (org-agenda-log-mode-items): Improve docstring.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-page-description)
(org-export-page-keywords): New variables.
(org-export-plist-vars): Add entries for :keywords and
:description.
(org-infile-export-plist): Parse for new keywords.
(org-get-current-options): Add new keywords
(org-export-as-html): Publish description and keywords.
* org-agenda.el (org-agenda-add-entry-text-descriptive-links): New
option.
(org-agenda-add-entry-text): Honor
`org-agenda-add-entry-text-descriptive-links'.
* org-latex.el (org-export-latex-preprocess): Make all
external preprocess functions use a PARAMETER arg.
* org-exp.el (org-export-preprocess-string)
(org-export-select-backend-specific-text)
(org-export-format-source-code-or-example)
(org-format-org-table-html): Support docbook export.
(org-export-preprocess-string): Make all external preprocess
functions use a PARAMETER arg.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-html-style-include-scripts): New option.
(org-export-plist-vars): Add new option
`org-export-html-style-include-scripts'.
(org-export-as-html): Honor new option
`org-export-html-style-include-scripts'.
(org-export-html-scripts, org-export-html-style-default): Fix
xml issues with the Safari browser.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-publish.el (org-publish-attachment): Only copy file when the
directories differ.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-clock.el (org-clocktable-steps): Use inactive time stamps
for clocktable steps.
* org.el (org-additional-option-like-keywords): Add two more
keywords.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-format-source-code-or-example): Mark
temporary buffer unmodified, so that it will be killed even if
mode like message mode has decided to assign a file name.
* org.el (org-scan-tags): Improve tag inheritance.
(org-scan-tags, org-make-tags-matcher): Make tag comparison
case-sensitive.
(org-scan-tags): Use the internal tags list instead of creating it
from scratch.
(org-trust-scanner-tags, org-scanner-tags): New variables.
(org-scan-tags): Set `org-scanner-tags'.
(org-get-tags-at): Take advantage of `org-trust-scanner-tags'.
(org-map-entries): Document the possible speedup using scanner
tags.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-add-planning-info): Fix bug with looking for keyword
only at column 0.
* org-agenda.el (org-agenda-custom-commands-local-options): Add
option for tags filter preset.
(org-prepare-agenda): Store filter preset as a property on the
filter variable.
(org-finalize-agenda): Call the filter, if there is a preset.
(org-agenda-filter-by-tag): Filter again after clearing the
filter, when there still is a preset.
(org-agenda-filter-make-matcher, org-agenda-set-mode-name):
Include the preset filter.
(org-agenda-redo): Apply the filter again, also the preset filter.
* org-exp.el (org-export-as-html): Use IDs in the correct way.
* org.el (org-uuidgen-p): New funtion.
* org-agenda.el (org-agenda-fontify-priorities): New default value
`cookies'.
(org-agenda-fontify-priorities): Renamed from
org-fontify-priorities.
* org.el (org-set-font-lock-defaults): Call
`org-font-lock-add-priority-faces'.
(org-font-lock-add-priority-faces): New function.
* org-faces.el: (org-set-tag-faces): New option.
(org-priority-faces): New variable.
* org-exp.el (org-export-as-html): Add a "content" div around the
entire content of the body tag.
(org-export-html-get-bibliography): New function.
(org-export-html-validation-link): New variable.
(org-export-as-html): Add validation link to exported page.
* org.el (org-match-sparse-tree): Renamed from
`org-tags-sparse-tree'.
(org-tags-sparse-tree): New alias.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-get-valid-level): Catch the case where the level
change is nil.
* org-clock.el (org-clock-find-position): Better indentation of
new clock drawers.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-agenda.el (org-agenda-quit): Delete window only when the
frame-setup was not `current-window'.
* org.el (org-tag-persistent-alist): New option.
(org-startup-options): Add keyword `noptag'.
(org-fast-todo-selection): Handle :newline correctly.
(org-set-tags): Handle :newline correctly.
(org-fast-tag-selection): Handle :newline correctly.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-as-ascii): Reverse link buffer before
outputting it.
(org-export-ascii-push-links): Fix bug with pussing links into the
export buffer.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-archive.el (org-archive-subtree): Do not add 1 to level if
pasting at top level.
* org-bbdb.el: Improve documentation.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-list.el (org-insert-item): Only consider insert empty lines
is `org-empty-line-terminates-plain-lists' is not nil.
* org.el (org-blank-before-new-entry): Mention the dependence on
`org-empty-line-terminates-plain-lists' in the docstring.
* org-publish.el (org-publish-get-project-from-filename): New
optional argument UP. Only find the top project if UP is set.
(org-publish-current-project): Find the top encloding project.
* org-agenda.el (org-agenda-before-write-hook)
(org-agenda-add-entry-text-maxlines): New options.
(org-write-agenda): Run the new hook in the temporary buffer.
(org-agenda-add-entry-text): New function.
(org-write-agenda): Implement PDF export, using ps2pdf.
* org.el (org-global-properties-fixed, org-global-properties):
Improve documentation string.
* org-exp.el (org-export-ascii-links-to-notes): New option.
(org-export-as-ascii): Handle links better.
(org-export-ascii-wrap, org-export-ascii-push-links): New
functions.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-agenda.el (org-agenda): Make prefix arg optional.
(org-agenda-search-headline-for-time): New option.
(org-format-agenda-item): Honor
`org-agenda-search-headline-for-time'.
* org-table.el (orgtbl-self-insert-command): Cluster undo for 20
characters.
* org.el (org-self-insert-cluster-for-undo): New option.
(org-self-insert-command): Cluster undo for 20 characters.
(org-self-insert-command-undo-counter): New variable.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-exp.el (org-export-as-html): Fix problem with closing colone
example.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org-latex.el (org-export-as-latex)
(org-export-latex-first-lines): Avoid modification flag when
adding or removing text properties.
(org-export-latex-fontify): Catch error when org-emph-alist has
entries that are not defined for LaTeX export.
* org-export-latex.el: renamed to org-latex.el
* org-latex.el: renamed from org-export-latex.el
* org.el (orgstruct++-mode): New function.
(turn-on-orgstruct++): Call `orgstruct++-mode'.
(org-context-p): Allow detecting item context after the first line
of an item.
(orgstruct-make-binding): Detect if item-body context should be
seen.
(orgstruct-is-++): New variable.
(org-add-planning-info): Catch the case when there is no planning
info yet and the call does not want to add anything, only maybe
tries to remove something.
(org-special-ctrl-a/e): All value to be a cons cell with separate
settings for `C-a. and `C-e'.
(org-beginning-of-line, org-end-of-line): Honor separate values
for `C-a' and `C-e'.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-reload): New command.
2009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
* org.texi (Publishing action): Improve documentation of file
names when publishing to the source directory.
(Clean view): Document `org-indent-mode'.
(Clocking work time): Add documentation for the
new :timetamp option when creating a clock report.
(Paragraphs): Fix many typos.
(Plain lists): Remove duplicate explanation about the
`C-c *' command.
(Literal examples): Update to reflect the new behavior
of the -n -r -k switches when exporting source code examples.
(Structure editing): Add information about `C-c *',
converting a plain list into a list of Org items.
(Remember): Small rephrasing of the paragraph
describing remember.el. Also mentioned that remember.el is part
of Emacs 23, not Emacs 22.
(Clocking work time): Add documentation about
displaying the current clocking time against the effort estimate.
Also add a footnote about using `org-clock-in-prepare-hook' to add
an effort estimate on the fly, just before clocking it.
(Footnotes): Document automatic renumbering and
sorting.
(Agenda commands): Document new bulk commands.
(Plain lists): Document new behavior of
`org-cycle-include-plain-lists'.
Hyphenation only in TeX.
(Clocking work time): Document the key to update effort
estimates.
(Clocking work time): Document the clock time display.
(Structure editing, TODO basics): Document new
variables.
(Column attributes): Document new colciew operators.
(Publishing options): Document :xml-declaration.
(Tracking TODO state changes): Document the
LOG_INTO_DRAWER property.
(Literal examples): Document the new implementation for
editing source code.
(Publishing action): Mention the new publishing
function, to publish an Org source file.
(Publishing links): Mention how to link to an Org source file.
(Macro replacement): Document new macros.
(Handling links): Document type-specific completion
when inserting links.
(Structure editing, Plain lists): Improve documentation
on sorting.
(Internal links): Document custom ids for links.
(Handling links): Document custom ids for links.
(CSS support): Document new class.
(Refiling notes): Document the possibility to create new nodes
during refiling.
(Agenda commands): Document the "?" operator to find
tasks without effort setting.
(Exporting agenda information): Section moved.
(RSS Feeds): New section.
(Built-in table editor): Document M-e and M-a navigate
inside table field.
(Stuck projects): Docment that projects identified as
un-stuck will still be searchd for stuck sub-projects.
(Paragraphs): Document centering.
(Creating timestamps, Agenda commands): Document new
behavior when changing time stamps.
(Structure editing): Document the new command
`org-clone-subtree-with-time-shift'.
(Publishing): Refresh this chapter.
(Export options, Export options, In-buffer settings):
Document the new keywords.
(Matching tags and properties): Collect all
documentation about tags/property matches here.
(Setting tags): Document `org-tag-persistent-alist'.
(Weekly/daily agenda): New section.
(Orgstruct mode): Describe `orgstruct++-mode'.
(Drawers): Mention the LOGBOOK drawer.
(Export options, Sectioning structure): Document the
#+LEATEX_HEADER in-buffer setting.
(Bugs): Section removed.
(Hooks): New section.
(Add-on packages): Moved here from old location.
(Context-sensitive commands): New section.
(Setting tags): Document newline option.
(Global TODO list, Matching tags and properties):
Mention more variables.
(Checkboxes): Update to changed command behavior.
author | Carsten Dominik <dominik@science.uva.nl> |
---|---|
date | Thu, 06 Aug 2009 09:14:10 +0000 |
parents | 0d056af7a0af |
children | bd2966850aac |
rev | line source |
---|---|
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1 ;;; newcomment.el --- (un)comment regions of buffers |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
2 |
74442 | 3 ;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, |
100908 | 4 ;; 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
5 |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
6 ;; Author: code extracted from Emacs-20's simple.el |
64861 | 7 ;; Maintainer: Stefan Monnier <monnier@iro.umontreal.ca> |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
8 ;; Keywords: comment uncomment |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
9 |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
10 ;; This file is part of GNU Emacs. |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
11 |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93622
diff
changeset
|
12 ;; GNU Emacs is free software: you can redistribute it and/or modify |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
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:
93622
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:
93622
diff
changeset
|
15 ;; (at your option) any later version. |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
16 |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
17 ;; GNU Emacs is distributed in the hope that it will be useful, |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
20 ;; GNU General Public License for more details. |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
21 |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
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:
93622
diff
changeset
|
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
24 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
25 ;;; Commentary: |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
26 |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
27 ;; A replacement for simple.el's comment-related functions. |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
28 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
29 ;;; Bugs: |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
30 |
47212
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
31 ;; - boxed comments in Perl are not properly uncommented because they are |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
32 ;; uncommented one-line at a time. |
41689 | 33 ;; - nested comments in sgml-mode are not properly quoted. |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
34 ;; - single-char nestable comment-start can only do the "\\s<+" stuff |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
35 ;; if the corresponding closing marker happens to be right. |
26763
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
36 ;; - uncomment-region with a numeric argument can render multichar |
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
37 ;; comment markers invalid. |
29119
c411f27154ee
(comment-make-extra-lines): Don't use `assert'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29066
diff
changeset
|
38 ;; - comment-indent or comment-region when called inside a comment |
c411f27154ee
(comment-make-extra-lines): Don't use `assert'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29066
diff
changeset
|
39 ;; will happily break the surrounding comment. |
c411f27154ee
(comment-make-extra-lines): Don't use `assert'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29066
diff
changeset
|
40 ;; - comment-quote-nested will not (un)quote properly all nested comment |
c411f27154ee
(comment-make-extra-lines): Don't use `assert'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29066
diff
changeset
|
41 ;; markers if there are more than just comment-start and comment-end. |
c411f27154ee
(comment-make-extra-lines): Don't use `assert'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29066
diff
changeset
|
42 ;; For example, in Pascal where {...*) and (*...} are possible. |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
43 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
44 ;;; Todo: |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
45 |
47212
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
46 ;; - rebox.el-style refill. |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
47 ;; - quantized steps in comment-alignment. |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
48 ;; - try to align tail comments. |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
49 ;; - check what c-comment-line-break-function has to say. |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
50 ;; - spill auto-fill of comments onto the end of the next line. |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
51 ;; - uncomment-region with a consp (for blocks) or somehow make the |
47212
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
52 ;; deletion of continuation markers less dangerous. |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
53 ;; - drop block-comment-<foo> unless it's really used. |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
54 ;; - uncomment-region on a subpart of a comment. |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
55 ;; - support gnu-style "multi-line with space in continue". |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
56 ;; - somehow allow comment-dwim to use the region even if transient-mark-mode |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
57 ;; is not turned on. |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
58 |
32014
13bd1ce1c353
(comment-indent-function): Use 0 for ;;; and %%%.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30091
diff
changeset
|
59 ;; - when auto-filling a comment, try to move the comment to the left |
13bd1ce1c353
(comment-indent-function): Use 0 for ;;; and %%%.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30091
diff
changeset
|
60 ;; rather than break it (if possible). |
13bd1ce1c353
(comment-indent-function): Use 0 for ;;; and %%%.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30091
diff
changeset
|
61 ;; - sometimes default the comment-column to the same |
13bd1ce1c353
(comment-indent-function): Use 0 for ;;; and %%%.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30091
diff
changeset
|
62 ;; one used on the preceding line(s). |
13bd1ce1c353
(comment-indent-function): Use 0 for ;;; and %%%.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30091
diff
changeset
|
63 |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
64 ;;; Code: |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
65 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
66 ;;;###autoload |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
67 (defalias 'indent-for-comment 'comment-indent) |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
68 ;;;###autoload |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
69 (defalias 'set-comment-column 'comment-set-column) |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
70 ;;;###autoload |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
71 (defalias 'kill-comment 'comment-kill) |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
72 ;;;###autoload |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
73 (defalias 'indent-new-comment-line 'comment-indent-new-line) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
74 |
26763
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
75 (defgroup comment nil |
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
76 "Indenting and filling of comments." |
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
77 :prefix "comment-" |
29760
c2940b6e267e
(comment) <defgroup>: Add :version.
Dave Love <fx@gnu.org>
parents:
29409
diff
changeset
|
78 :version "21.1" |
26763
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
79 :group 'fill) |
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
80 |
50640
8ec8f6706902
(comment-use-syntax): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
49768
diff
changeset
|
81 ;; Autoload this to avoid warnings, since some major modes define it. |
8ec8f6706902
(comment-use-syntax): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
49768
diff
changeset
|
82 ;;;###autoload |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
83 (defvar comment-use-syntax 'undecided |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
84 "Non-nil if syntax-tables can be used instead of regexps. |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
85 Can also be `undecided' which means that a somewhat expensive test will |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
86 be used to try to determine whether syntax-tables should be trusted |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
87 to understand comments or not in the given buffer. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
88 Major modes should set this variable.") |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
89 |
44999
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
90 (defcustom comment-fill-column nil |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
91 "Column to use for `comment-indent'. If nil, use `fill-column' instead." |
62531
c905fcf5e3d9
Specify missing group (and type, if simple) in defcustom.
Juanma Barranquero <lekktu@gmail.com>
parents:
57526
diff
changeset
|
92 :type '(choice (const nil) integer) |
c905fcf5e3d9
Specify missing group (and type, if simple) in defcustom.
Juanma Barranquero <lekktu@gmail.com>
parents:
57526
diff
changeset
|
93 :group 'comment) |
44999
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
94 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
95 ;;;###autoload |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
96 (defcustom comment-column 32 |
68594
ca4201c7597d
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67057
diff
changeset
|
97 "Column to indent right-margin comments to. |
78909
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
98 Each mode may establish a different default value for this variable; you |
44455
8a30d8f66e1a
(comment-column): Docstring improvement.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43689
diff
changeset
|
99 can set the value for a particular mode using that mode's hook. |
78909
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
100 Comments might be indented to a different value in order not to go beyond |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
101 `comment-fill-column' or in order to align them with surrounding comments." |
62531
c905fcf5e3d9
Specify missing group (and type, if simple) in defcustom.
Juanma Barranquero <lekktu@gmail.com>
parents:
57526
diff
changeset
|
102 :type 'integer |
c905fcf5e3d9
Specify missing group (and type, if simple) in defcustom.
Juanma Barranquero <lekktu@gmail.com>
parents:
57526
diff
changeset
|
103 :group 'comment) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
104 (make-variable-buffer-local 'comment-column) |
70590
63b772bfba93
Move `safe-local-variable' declarations to the respective files.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
70139
diff
changeset
|
105 ;;;###autoload(put 'comment-column 'safe-local-variable 'integerp) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
106 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
107 ;;;###autoload |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
108 (defvar comment-start nil |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
109 "*String to insert to start a new comment, or nil if no comment syntax.") |
70139
fa073d9c1a2b
(comment-start, comment-start-skip)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
70043
diff
changeset
|
110 ;;;###autoload(put 'comment-start 'safe-local-variable 'string-or-null-p) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
111 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
112 ;;;###autoload |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
113 (defvar comment-start-skip nil |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
114 "*Regexp to match the start of a comment plus everything up to its body. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
115 If there are any \\(...\\) pairs, the comment delimiter text is held to begin |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
116 at the place matched by the close of the first pair.") |
70139
fa073d9c1a2b
(comment-start, comment-start-skip)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
70043
diff
changeset
|
117 ;;;###autoload(put 'comment-start-skip 'safe-local-variable 'string-or-null-p) |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
118 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
119 ;;;###autoload |
26763
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
120 (defvar comment-end-skip nil |
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
121 "Regexp to match the end of a comment plus everything up to its body.") |
70139
fa073d9c1a2b
(comment-start, comment-start-skip)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
70043
diff
changeset
|
122 ;;;###autoload(put 'comment-end-skip 'safe-local-variable 'string-or-null-p) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
123 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
124 ;;;###autoload |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
125 (defvar comment-end "" |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
126 "*String to insert to end a new comment. |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
127 Should be an empty string if comments are terminated by end-of-line.") |
70139
fa073d9c1a2b
(comment-start, comment-start-skip)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
70043
diff
changeset
|
128 ;;;###autoload(put 'comment-end 'safe-local-variable 'string-or-null-p) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
129 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
130 ;;;###autoload |
32186
964f10494360
(comment-indent):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32014
diff
changeset
|
131 (defvar comment-indent-function 'comment-indent-default |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
132 "Function to compute desired indentation for a comment. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
133 This function is called with no args with point at the beginning of |
32186
964f10494360
(comment-indent):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32014
diff
changeset
|
134 the comment's starting delimiter and should return either the desired |
964f10494360
(comment-indent):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32014
diff
changeset
|
135 column indentation or nil. |
964f10494360
(comment-indent):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32014
diff
changeset
|
136 If nil is returned, indentation is delegated to `indent-according-to-mode'.") |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
137 |
53976
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
138 ;;;###autoload |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
139 (defvar comment-insert-comment-function nil |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
140 "Function to insert a comment when a line doesn't contain one. |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
141 The function has no args. |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
142 |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
143 Applicable at least in modes for languages like fixed-format Fortran where |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
144 comments always start in column zero.") |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
145 |
56957
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
146 (defvar comment-region-function 'comment-region-default |
53976
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
147 "Function to comment a region. |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
148 Its args are the same as those of `comment-region', but BEG and END are |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
149 guaranteed to be correctly ordered. It is called within `save-excursion'. |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
150 |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
151 Applicable at least in modes for languages like fixed-format Fortran where |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
152 comments always start in column zero.") |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
153 |
56957
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
154 (defvar uncomment-region-function 'uncomment-region-default |
53976
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
155 "Function to uncomment a region. |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
156 Its args are the same as those of `uncomment-region', but BEG and END are |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
157 guaranteed to be correctly ordered. It is called within `save-excursion'. |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
158 |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
159 Applicable at least in modes for languages like fixed-format Fortran where |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
160 comments always start in column zero.") |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
161 |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
162 ;; ?? never set |
26763
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
163 (defvar block-comment-start nil) |
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
164 (defvar block-comment-end nil) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
165 |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
166 (defvar comment-quote-nested t |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
167 "Non-nil if nested comments should be quoted. |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
168 This should be locally set by each major mode if needed.") |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
169 |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
170 (defvar comment-continue nil |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
171 "Continuation string to insert for multiline comments. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
172 This string will be added at the beginning of each line except the very |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
173 first one when commenting a region with a commenting style that allows |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
174 comments to span several lines. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
175 It should generally have the same length as `comment-start' in order to |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
176 preserve indentation. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
177 If it is nil a value will be automatically derived from `comment-start' |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
178 by replacing its first character with a space.") |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
179 |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
180 (defvar comment-add 0 |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
181 "How many more comment chars should be inserted by `comment-region'. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
182 This determines the default value of the numeric argument of `comment-region'. |
85665
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
183 The `plain' comment style doubles this value. |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
184 |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
185 This should generally stay 0, except for a few modes like Lisp where |
85665
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
186 it is 1 so that regions are commented with two or three semi-colons.") |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
187 |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
188 (defconst comment-styles |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
189 '((plain . (nil nil nil nil)) |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
190 (indent . (nil nil nil t)) |
85665
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
191 (indent-or-triple |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
192 . (nil nil nil multi-char)) |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
193 (aligned . (nil t nil t)) |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
194 (multi-line . (t nil nil t)) |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
195 (extra-line . (t nil t t)) |
29037
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
196 (box . (nil t t t)) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
197 (box-multi . (t t t t))) |
78909
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
198 "Comment region styles of the form (STYLE . (MULTI ALIGN EXTRA INDENT)). |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
199 STYLE should be a mnemonic symbol. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
200 MULTI specifies that comments are allowed to span multiple lines. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
201 ALIGN specifies that the `comment-end' markers should be aligned. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
202 EXTRA specifies that an extra line should be used before and after the |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
203 region to comment (to put the `comment-end' and `comment-start'). |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
204 INDENT specifies that the `comment-start' markers should not be put at the |
85665
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
205 left margin but at the current indentation of the region to comment. |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
206 If INDENT is `multi-char', that means indent multi-character |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
207 comment starters, but not one-character comment starters.") |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
208 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
209 ;;;###autoload |
100486
1043d1f4aa3e
(comment-style): Default to `indent'. (Bug#1589)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
94678
diff
changeset
|
210 (defcustom comment-style 'indent |
68594
ca4201c7597d
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67057
diff
changeset
|
211 "Style to be used for `comment-region'. |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
212 See `comment-styles' for a list of available styles." |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
213 :type (if (boundp 'comment-styles) |
78909
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
214 `(choice ,@(mapcar (lambda (s) `(const ,(car s))) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
215 comment-styles)) |
62531
c905fcf5e3d9
Specify missing group (and type, if simple) in defcustom.
Juanma Barranquero <lekktu@gmail.com>
parents:
57526
diff
changeset
|
216 'symbol) |
100486
1043d1f4aa3e
(comment-style): Default to `indent'. (Bug#1589)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
94678
diff
changeset
|
217 :version "23.1" |
62531
c905fcf5e3d9
Specify missing group (and type, if simple) in defcustom.
Juanma Barranquero <lekktu@gmail.com>
parents:
57526
diff
changeset
|
218 :group 'comment) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
219 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
220 ;;;###autoload |
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
221 (defcustom comment-padding " " |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
222 "Padding string that `comment-region' puts between comment chars and text. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
223 Can also be an integer which will be automatically turned into a string |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
224 of the corresponding number of spaces. |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
225 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
226 Extra spacing between the comment characters and the comment text |
41286
6b56e476153d
(comment-column, comment-style, comment-multi-line)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41253
diff
changeset
|
227 makes the comment easier to read. Default is 1. nil means 0." |
62531
c905fcf5e3d9
Specify missing group (and type, if simple) in defcustom.
Juanma Barranquero <lekktu@gmail.com>
parents:
57526
diff
changeset
|
228 :type '(choice string integer (const nil)) |
c905fcf5e3d9
Specify missing group (and type, if simple) in defcustom.
Juanma Barranquero <lekktu@gmail.com>
parents:
57526
diff
changeset
|
229 :group 'comment) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
230 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
231 ;;;###autoload |
26763
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
232 (defcustom comment-multi-line nil |
68594
ca4201c7597d
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67057
diff
changeset
|
233 "Non-nil means `comment-indent-new-line' continues comments. |
57281
902c984fa20a
(comment-multi-line): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56957
diff
changeset
|
234 That is, it inserts no new terminator or starter. |
902c984fa20a
(comment-multi-line): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56957
diff
changeset
|
235 This affects `auto-fill-mode', which is the main reason to |
902c984fa20a
(comment-multi-line): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56957
diff
changeset
|
236 customize this variable. |
902c984fa20a
(comment-multi-line): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56957
diff
changeset
|
237 |
902c984fa20a
(comment-multi-line): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56957
diff
changeset
|
238 It also affects \\[indent-new-comment-line]. However, if you want this |
902c984fa20a
(comment-multi-line): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents:
56957
diff
changeset
|
239 behavior for explicit filling, you might as well use \\[newline-and-indent]." |
62531
c905fcf5e3d9
Specify missing group (and type, if simple) in defcustom.
Juanma Barranquero <lekktu@gmail.com>
parents:
57526
diff
changeset
|
240 :type 'boolean |
c905fcf5e3d9
Specify missing group (and type, if simple) in defcustom.
Juanma Barranquero <lekktu@gmail.com>
parents:
57526
diff
changeset
|
241 :group 'comment) |
26763
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
242 |
51337
0237e2420453
(comment-empty-lines): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50947
diff
changeset
|
243 (defcustom comment-empty-lines nil |
0237e2420453
(comment-empty-lines): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50947
diff
changeset
|
244 "If nil, `comment-region' does not comment out empty lines. |
0237e2420453
(comment-empty-lines): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50947
diff
changeset
|
245 If t, it always comments out empty lines. |
73317
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
246 If `eol' it only comments out empty lines if comments are |
51337
0237e2420453
(comment-empty-lines): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50947
diff
changeset
|
247 terminated by the end of line (i.e. `comment-end' is empty)." |
0237e2420453
(comment-empty-lines): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50947
diff
changeset
|
248 :type '(choice (const :tag "Never" nil) |
0237e2420453
(comment-empty-lines): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50947
diff
changeset
|
249 (const :tag "Always" t) |
62531
c905fcf5e3d9
Specify missing group (and type, if simple) in defcustom.
Juanma Barranquero <lekktu@gmail.com>
parents:
57526
diff
changeset
|
250 (const :tag "EOl-terminated" 'eol)) |
c905fcf5e3d9
Specify missing group (and type, if simple) in defcustom.
Juanma Barranquero <lekktu@gmail.com>
parents:
57526
diff
changeset
|
251 :group 'comment) |
51337
0237e2420453
(comment-empty-lines): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50947
diff
changeset
|
252 |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
253 ;;;; |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
254 ;;;; Helpers |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
255 ;;;; |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
256 |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
257 (defun comment-string-strip (str beforep afterp) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
258 "Strip STR of any leading (if BEFOREP) and/or trailing (if AFTERP) space." |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
259 (string-match (concat "\\`" (if beforep "\\s-*") |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
260 "\\(.*?\\)" (if afterp "\\s-*\n?") |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
261 "\\'") str) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
262 (match-string 1 str)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
263 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
264 (defun comment-string-reverse (s) |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
265 "Return the mirror image of string S, without any trailing space." |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
266 (comment-string-strip (concat (nreverse (string-to-list s))) nil t)) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
267 |
39761
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
268 ;;;###autoload |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
269 (defun comment-normalize-vars (&optional noerror) |
50845
ac2120f868b9
(comment-normalize-vars): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50843
diff
changeset
|
270 "Check and setup the variables needed by other commenting functions. |
ac2120f868b9
(comment-normalize-vars): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50843
diff
changeset
|
271 Functions autoloaded from newcomment.el, being entry points, should call |
ac2120f868b9
(comment-normalize-vars): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50843
diff
changeset
|
272 this function before any other, so the rest of the code can assume that |
ac2120f868b9
(comment-normalize-vars): Add docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50843
diff
changeset
|
273 the variables are properly set." |
53164
2ea1aaf0d7db
(comment-normalize-vars): Initialize properly if comment-start was nil.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52931
diff
changeset
|
274 (unless (and (not comment-start) noerror) |
2ea1aaf0d7db
(comment-normalize-vars): Initialize properly if comment-start was nil.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52931
diff
changeset
|
275 (unless comment-start |
54279
41d93a97701d
(comment-normalize-vars): Check the user-specified comment start marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54276
diff
changeset
|
276 (let ((cs (read-string "No comment syntax is defined. Use: "))) |
41d93a97701d
(comment-normalize-vars): Check the user-specified comment start marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54276
diff
changeset
|
277 (if (zerop (length cs)) |
41d93a97701d
(comment-normalize-vars): Check the user-specified comment start marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54276
diff
changeset
|
278 (error "No comment syntax defined") |
41d93a97701d
(comment-normalize-vars): Check the user-specified comment start marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54276
diff
changeset
|
279 (set (make-local-variable 'comment-start) cs)))) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
280 ;; comment-use-syntax |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
281 (when (eq comment-use-syntax 'undecided) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
282 (set (make-local-variable 'comment-use-syntax) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
283 (let ((st (syntax-table)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
284 (cs comment-start) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
285 (ce (if (string= "" comment-end) "\n" comment-end))) |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
286 ;; Try to skip over a comment using forward-comment |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
287 ;; to see if the syntax tables properly recognize it. |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
288 (with-temp-buffer |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
289 (set-syntax-table st) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
290 (insert cs " hello " ce) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
291 (goto-char (point-min)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
292 (and (forward-comment 1) (eobp)))))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
293 ;; comment-padding |
41021
c07719cfdfcd
(comment-normalize-vars): Handle a nil comment-padding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39864
diff
changeset
|
294 (unless comment-padding (setq comment-padding 0)) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
295 (when (integerp comment-padding) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
296 (setq comment-padding (make-string comment-padding ? ))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
297 ;; comment markers |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
298 ;;(setq comment-start (comment-string-strip comment-start t nil)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
299 ;;(setq comment-end (comment-string-strip comment-end nil t)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
300 ;; comment-continue |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
301 (unless (or comment-continue (string= comment-end "")) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
302 (set (make-local-variable 'comment-continue) |
29037
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
303 (concat (if (string-match "\\S-\\S-" comment-start) " " "|") |
39761
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
304 (substring comment-start 1))) |
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
305 ;; Hasn't been necessary yet. |
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
306 ;; (unless (string-match comment-start-skip comment-continue) |
72453
204e1538695a
(comment-box): Call `comment-normalize-vars'. Add autoload cookie.
Juanma Barranquero <lekktu@gmail.com>
parents:
72410
diff
changeset
|
307 ;; (kill-local-variable 'comment-continue)) |
39761
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
308 ) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
309 ;; comment-skip regexps |
45902
24d34388fd69
(comment-normalize-vars): Refresh the comment-foo-skip
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45023
diff
changeset
|
310 (unless (and comment-start-skip |
24d34388fd69
(comment-normalize-vars): Refresh the comment-foo-skip
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45023
diff
changeset
|
311 ;; In case comment-start has changed since last time. |
24d34388fd69
(comment-normalize-vars): Refresh the comment-foo-skip
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45023
diff
changeset
|
312 (string-match comment-start-skip comment-start)) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
313 (set (make-local-variable 'comment-start-skip) |
50673
4b5928c8d588
(comment-normalize-vars): Fix regexp.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50640
diff
changeset
|
314 (concat "\\(\\(^\\|[^\\\n]\\)\\(\\\\\\\\\\)*\\)\\(\\s<+\\|" |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
315 (regexp-quote (comment-string-strip comment-start t t)) |
36490
e40c1ae4f04b
(comment-normalize-vars): Use [ \t] for the trailing
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36271
diff
changeset
|
316 ;; Let's not allow any \s- but only [ \t] since \n |
e40c1ae4f04b
(comment-normalize-vars): Use [ \t] for the trailing
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36271
diff
changeset
|
317 ;; might be both a comment-end marker and \s-. |
e40c1ae4f04b
(comment-normalize-vars): Use [ \t] for the trailing
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36271
diff
changeset
|
318 "+\\)[ \t]*"))) |
45902
24d34388fd69
(comment-normalize-vars): Refresh the comment-foo-skip
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45023
diff
changeset
|
319 (unless (and comment-end-skip |
24d34388fd69
(comment-normalize-vars): Refresh the comment-foo-skip
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45023
diff
changeset
|
320 ;; In case comment-end has changed since last time. |
24d34388fd69
(comment-normalize-vars): Refresh the comment-foo-skip
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45023
diff
changeset
|
321 (string-match comment-end-skip comment-end)) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
322 (let ((ce (if (string= "" comment-end) "\n" |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
323 (comment-string-strip comment-end t t)))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
324 (set (make-local-variable 'comment-end-skip) |
39486
54fe59ee8057
(comment-normalize-vars): Use " \t" rather than
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39079
diff
changeset
|
325 ;; We use [ \t] rather than \s- because we don't want to |
54fe59ee8057
(comment-normalize-vars): Use " \t" rather than
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39079
diff
changeset
|
326 ;; remove ^L in C mode when uncommenting. |
54fe59ee8057
(comment-normalize-vars): Use " \t" rather than
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39079
diff
changeset
|
327 (concat "[ \t]*\\(\\s>" (if comment-quote-nested "" "+") |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
328 "\\|" (regexp-quote (substring ce 0 1)) |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
329 (if (and comment-quote-nested (<= (length ce) 1)) "" "+") |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
330 (regexp-quote (substring ce 1)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
331 "\\)")))))) |
49597
e88404e8f2cf
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
48257
diff
changeset
|
332 |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
333 (defun comment-quote-re (str unp) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
334 (concat (regexp-quote (substring str 0 1)) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
335 "\\\\" (if unp "+" "*") |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
336 (regexp-quote (substring str 1)))) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
337 |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
338 (defun comment-quote-nested (cs ce unp) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
339 "Quote or unquote nested comments. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
340 If UNP is non-nil, unquote nested comment markers." |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
341 (setq cs (comment-string-strip cs t t)) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
342 (setq ce (comment-string-strip ce t t)) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
343 (when (and comment-quote-nested (> (length ce) 0)) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
344 (let ((re (concat (comment-quote-re ce unp) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
345 "\\|" (comment-quote-re cs unp)))) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
346 (goto-char (point-min)) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
347 (while (re-search-forward re nil t) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
348 (goto-char (match-beginning 0)) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
349 (forward-char 1) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
350 (if unp (delete-char 1) (insert "\\")) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
351 (when (= (length ce) 1) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
352 ;; If the comment-end is a single char, adding a \ after that |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
353 ;; "first" char won't deactivate it, so we turn such a CE |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
354 ;; into !CS. I.e. for pascal, we turn } into !{ |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
355 (if (not unp) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
356 (when (string= (match-string 0) ce) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
357 (replace-match (concat "!" cs) t t)) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
358 (when (and (< (point-min) (match-beginning 0)) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
359 (string= (buffer-substring (1- (match-beginning 0)) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
360 (1- (match-end 0))) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
361 (concat "!" cs))) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
362 (backward-char 2) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
363 (delete-char (- (match-end 0) (match-beginning 0))) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
364 (insert ce)))))))) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
365 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
366 ;;;; |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
367 ;;;; Navigation |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
368 ;;;; |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
369 |
54314
597fb06dcdda
(comment-use-global-state): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54279
diff
changeset
|
370 (defvar comment-use-global-state nil |
597fb06dcdda
(comment-use-global-state): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54279
diff
changeset
|
371 "Non-nil means that the global syntactic context is used. |
597fb06dcdda
(comment-use-global-state): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54279
diff
changeset
|
372 More specifically, it means that `syntax-ppss' is used to find out whether |
597fb06dcdda
(comment-use-global-state): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54279
diff
changeset
|
373 point is within a string or not. Major modes whose syntax is faithfully |
597fb06dcdda
(comment-use-global-state): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54279
diff
changeset
|
374 described by the syntax-tables can set this to non-nil so comment markers |
597fb06dcdda
(comment-use-global-state): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54279
diff
changeset
|
375 in strings will not confuse Emacs.") |
597fb06dcdda
(comment-use-global-state): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54279
diff
changeset
|
376 |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
377 (defun comment-search-forward (limit &optional noerror) |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
378 "Find a comment start between point and LIMIT. |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
379 Moves point to inside the comment and returns the position of the |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
380 comment-starter. If no comment is found, moves point to LIMIT |
56019
0517f0b254be
(comment-search-forward, comment-search-backward): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents:
54314
diff
changeset
|
381 and raises an error or returns nil if NOERROR is non-nil." |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
382 (if (not comment-use-syntax) |
29037
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
383 (if (re-search-forward comment-start-skip limit noerror) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
384 (or (match-end 1) (match-beginning 0)) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
385 (goto-char limit) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
386 (unless noerror (error "No comment"))) |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
387 (let* ((pt (point)) |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
388 ;; Assume (at first) that pt is outside of any string. |
54314
597fb06dcdda
(comment-use-global-state): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54279
diff
changeset
|
389 (s (parse-partial-sexp pt (or limit (point-max)) nil nil |
597fb06dcdda
(comment-use-global-state): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54279
diff
changeset
|
390 (if comment-use-global-state (syntax-ppss pt)) |
597fb06dcdda
(comment-use-global-state): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54279
diff
changeset
|
391 t))) |
597fb06dcdda
(comment-use-global-state): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54279
diff
changeset
|
392 (when (and (nth 8 s) (nth 3 s) (not comment-use-global-state)) |
56957
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
393 ;; The search ended at eol inside a string. Try to see if it |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
394 ;; works better when we assume that pt is inside a string. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
395 (setq s (parse-partial-sexp |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
396 pt (or limit (point-max)) nil nil |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
397 (list nil nil nil (nth 3 s) nil nil nil nil) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
398 t))) |
76879
d703606e395a
(comment-search-forward): Discard comment starters before point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75347
diff
changeset
|
399 (if (or (not (and (nth 8 s) (not (nth 3 s)))) |
d703606e395a
(comment-search-forward): Discard comment starters before point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75347
diff
changeset
|
400 ;; Make sure the comment starts after PT. |
d703606e395a
(comment-search-forward): Discard comment starters before point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75347
diff
changeset
|
401 (< (nth 8 s) pt)) |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
402 (unless noerror (error "No comment")) |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
403 ;; We found the comment. |
29037
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
404 (let ((pos (point)) |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
405 (start (nth 8 s)) |
29037
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
406 (bol (line-beginning-position)) |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
407 (end nil)) |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
408 (while (and (null end) (>= (point) bol)) |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
409 (if (looking-at comment-start-skip) |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
410 (setq end (min (or limit (point-max)) (match-end 0))) |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
411 (backward-char))) |
29037
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
412 (goto-char (or end pos)) |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
413 start))))) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
414 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
415 (defun comment-search-backward (&optional limit noerror) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
416 "Find a comment start between LIMIT and point. |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
417 Moves point to inside the comment and returns the position of the |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
418 comment-starter. If no comment is found, moves point to LIMIT |
56019
0517f0b254be
(comment-search-forward, comment-search-backward): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents:
54314
diff
changeset
|
419 and raises an error or returns nil if NOERROR is non-nil." |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
420 ;; FIXME: If a comment-start appears inside a comment, we may erroneously |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
421 ;; stop there. This can be rather bad in general, but since |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
422 ;; comment-search-backward is only used to find the comment-column (in |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
423 ;; comment-set-column) and to find the comment-start string (via |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
424 ;; comment-beginning) in indent-new-comment-line, it should be harmless. |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
425 (if (not (re-search-backward comment-start-skip limit t)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
426 (unless noerror (error "No comment")) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
427 (beginning-of-line) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
428 (let* ((end (match-end 0)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
429 (cs (comment-search-forward end t)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
430 (pt (point))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
431 (if (not cs) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
432 (progn (beginning-of-line) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
433 (comment-search-backward limit noerror)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
434 (while (progn (goto-char cs) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
435 (comment-forward) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
436 (and (< (point) end) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
437 (setq cs (comment-search-forward end t)))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
438 (setq pt (point))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
439 (goto-char pt) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
440 cs)))) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
441 |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
442 (defun comment-beginning () |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
443 "Find the beginning of the enclosing comment. |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
444 Returns nil if not inside a comment, else moves point and returns |
57301
800ede9cd8e3
comment-beginning: doc-fix and don't choke on unset comment-end-skip when at beginning of comment
Daniel Pfeiffer <occitan@esperanto.org>
parents:
57281
diff
changeset
|
445 the same as `comment-search-backward'." |
36490
e40c1ae4f04b
(comment-normalize-vars): Use [ \t] for the trailing
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36271
diff
changeset
|
446 ;; HACK ATTACK! |
e40c1ae4f04b
(comment-normalize-vars): Use [ \t] for the trailing
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36271
diff
changeset
|
447 ;; We should really test `in-string-p' but that can be expensive. |
e40c1ae4f04b
(comment-normalize-vars): Use [ \t] for the trailing
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36271
diff
changeset
|
448 (unless (eq (get-text-property (point) 'face) 'font-lock-string-face) |
e40c1ae4f04b
(comment-normalize-vars): Use [ \t] for the trailing
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36271
diff
changeset
|
449 (let ((pt (point)) |
e40c1ae4f04b
(comment-normalize-vars): Use [ \t] for the trailing
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36271
diff
changeset
|
450 (cs (comment-search-backward nil t))) |
e40c1ae4f04b
(comment-normalize-vars): Use [ \t] for the trailing
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36271
diff
changeset
|
451 (when cs |
e40c1ae4f04b
(comment-normalize-vars): Use [ \t] for the trailing
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36271
diff
changeset
|
452 (if (save-excursion |
e40c1ae4f04b
(comment-normalize-vars): Use [ \t] for the trailing
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36271
diff
changeset
|
453 (goto-char cs) |
38898
29a1feb5e1fe
(comment-beginning): Make sure the comment-start
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36490
diff
changeset
|
454 (and |
29a1feb5e1fe
(comment-beginning): Make sure the comment-start
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36490
diff
changeset
|
455 ;; For modes where comment-start and comment-end are the same, |
29a1feb5e1fe
(comment-beginning): Make sure the comment-start
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36490
diff
changeset
|
456 ;; the search above may have found a `ce' rather than a `cs'. |
57301
800ede9cd8e3
comment-beginning: doc-fix and don't choke on unset comment-end-skip when at beginning of comment
Daniel Pfeiffer <occitan@esperanto.org>
parents:
57281
diff
changeset
|
457 (or (if comment-end-skip (not (looking-at comment-end-skip))) |
38898
29a1feb5e1fe
(comment-beginning): Make sure the comment-start
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36490
diff
changeset
|
458 ;; Maybe font-lock knows that it's a `cs'? |
29a1feb5e1fe
(comment-beginning): Make sure the comment-start
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36490
diff
changeset
|
459 (eq (get-text-property (match-end 0) 'face) |
29a1feb5e1fe
(comment-beginning): Make sure the comment-start
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36490
diff
changeset
|
460 'font-lock-comment-face) |
29a1feb5e1fe
(comment-beginning): Make sure the comment-start
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36490
diff
changeset
|
461 (unless (eq (get-text-property (point) 'face) |
29a1feb5e1fe
(comment-beginning): Make sure the comment-start
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36490
diff
changeset
|
462 'font-lock-comment-face) |
29a1feb5e1fe
(comment-beginning): Make sure the comment-start
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36490
diff
changeset
|
463 ;; Let's assume it's a `cs' if we're on the same line. |
29a1feb5e1fe
(comment-beginning): Make sure the comment-start
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36490
diff
changeset
|
464 (>= (line-end-position) pt))) |
29a1feb5e1fe
(comment-beginning): Make sure the comment-start
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36490
diff
changeset
|
465 ;; Make sure that PT is not past the end of the comment. |
29a1feb5e1fe
(comment-beginning): Make sure the comment-start
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36490
diff
changeset
|
466 (if (comment-forward 1) (> (point) pt) (eobp)))) |
36490
e40c1ae4f04b
(comment-normalize-vars): Use [ \t] for the trailing
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36271
diff
changeset
|
467 cs |
e40c1ae4f04b
(comment-normalize-vars): Use [ \t] for the trailing
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36271
diff
changeset
|
468 (goto-char pt) |
e40c1ae4f04b
(comment-normalize-vars): Use [ \t] for the trailing
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36271
diff
changeset
|
469 nil))))) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
470 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
471 (defun comment-forward (&optional n) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
472 "Skip forward over N comments. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
473 Just like `forward-comment' but only for positive N |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
474 and can use regexps instead of syntax." |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
475 (setq n (or n 1)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
476 (if (< n 0) (error "No comment-backward") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
477 (if comment-use-syntax (forward-comment n) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
478 (while (> n 0) |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
479 (setq n |
43689
5e6a5df9973a
(comment-forward): Use forward-comment to skip
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
42706
diff
changeset
|
480 (if (or (forward-comment 1) |
5e6a5df9973a
(comment-forward): Use forward-comment to skip
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
42706
diff
changeset
|
481 (and (looking-at comment-start-skip) |
5e6a5df9973a
(comment-forward): Use forward-comment to skip
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
42706
diff
changeset
|
482 (goto-char (match-end 0)) |
5e6a5df9973a
(comment-forward): Use forward-comment to skip
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
42706
diff
changeset
|
483 (re-search-forward comment-end-skip nil 'move))) |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
484 (1- n) -1))) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
485 (= n 0)))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
486 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
487 (defun comment-enter-backward () |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
488 "Move from the end of a comment to the end of its content. |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
489 Point is assumed to be just at the end of a comment." |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
490 (if (bolp) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
491 ;; comment-end = "" |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
492 (progn (backward-char) (skip-syntax-backward " ")) |
67054
b8c0eb74d77e
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66712
diff
changeset
|
493 (cond |
93622
5d2b21aad9af
(comment-enter-backward): Be careful to restore point changed during narrowing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92692
diff
changeset
|
494 ((save-excursion |
5d2b21aad9af
(comment-enter-backward): Be careful to restore point changed during narrowing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92692
diff
changeset
|
495 (save-restriction |
5d2b21aad9af
(comment-enter-backward): Be careful to restore point changed during narrowing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92692
diff
changeset
|
496 (narrow-to-region (line-beginning-position) (point)) |
5d2b21aad9af
(comment-enter-backward): Be careful to restore point changed during narrowing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92692
diff
changeset
|
497 (goto-char (point-min)) |
5d2b21aad9af
(comment-enter-backward): Be careful to restore point changed during narrowing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92692
diff
changeset
|
498 (re-search-forward (concat comment-end-skip "\\'") nil t))) |
67054
b8c0eb74d77e
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66712
diff
changeset
|
499 (goto-char (match-beginning 0))) |
80877
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
500 ;; comment-end-skip not found probably because it was not set |
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
501 ;; right. Since \\s> should catch the single-char case, let's |
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
502 ;; check that we're looking at a two-char comment ender. |
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
503 ((not (or (<= (- (point-max) (line-beginning-position)) 1) |
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
504 (zerop (logand (car (syntax-after (- (point) 1))) |
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
505 ;; Here we take advantage of the fact that |
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
506 ;; the syntax class " " is encoded to 0, |
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
507 ;; so " 4" gives us just the 4 bit. |
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
508 (car (string-to-syntax " 4")))) |
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
509 (zerop (logand (car (syntax-after (- (point) 2))) |
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
510 (car (string-to-syntax " 3")))))) |
67054
b8c0eb74d77e
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66712
diff
changeset
|
511 (backward-char 2) |
b8c0eb74d77e
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66712
diff
changeset
|
512 (skip-chars-backward (string (char-after))) |
80877
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
513 (skip-syntax-backward " ")) |
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
514 ;; No clue what's going on: maybe we're really not right after the |
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
515 ;; end of a comment. Maybe we're at the "end" because of EOB rather |
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
516 ;; than because of a marker. |
52034b3003ea
(comment-search-forward): Make sure we search forward.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76879
diff
changeset
|
517 (t (skip-syntax-backward " "))))) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
518 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
519 ;;;; |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
520 ;;;; Commands |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
521 ;;;; |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
522 |
32307
c3058f7483c4
(comment-indent-default): Autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32186
diff
changeset
|
523 ;;;###autoload |
32186
964f10494360
(comment-indent):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32014
diff
changeset
|
524 (defun comment-indent-default () |
964f10494360
(comment-indent):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32014
diff
changeset
|
525 "Default for `comment-indent-function'." |
33468
4d15850856e4
(comment-indent-default): Stick \s<\s< to the left
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32307
diff
changeset
|
526 (if (and (looking-at "\\s<\\s<\\(\\s<\\)?") |
4d15850856e4
(comment-indent-default): Stick \s<\s< to the left
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32307
diff
changeset
|
527 (or (match-end 1) (/= (current-column) (current-indentation)))) |
4d15850856e4
(comment-indent-default): Stick \s<\s< to the left
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32307
diff
changeset
|
528 0 |
32186
964f10494360
(comment-indent):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32014
diff
changeset
|
529 (when (or (/= (current-column) (current-indentation)) |
63829
5448f90c05f7
(comment-indent-default): Don't get fooled by an early end of buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62531
diff
changeset
|
530 (and (> comment-add 0) (looking-at "\\s<\\(\\S<\\|\\'\\)"))) |
32186
964f10494360
(comment-indent):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32014
diff
changeset
|
531 comment-column))) |
964f10494360
(comment-indent):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32014
diff
changeset
|
532 |
78909
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
533 (defun comment-choose-indent (&optional indent) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
534 "Choose the indentation to use for a right-hand-side comment. |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
535 The criteria are (in this order): |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
536 - try to keep the comment's text within `comment-fill-column'. |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
537 - try to align with surrounding comments. |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
538 - prefer INDENT (or `comment-column' if nil). |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
539 Point is expected to be at the start of the comment." |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
540 (unless indent (setq indent comment-column)) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
541 ;; Avoid moving comments past the fill-column. |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
542 (let ((max (+ (current-column) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
543 (- (or comment-fill-column fill-column) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
544 (save-excursion (end-of-line) (current-column))))) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
545 (other nil) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
546 (min (save-excursion (skip-chars-backward " \t") |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
547 (1+ (current-column))))) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
548 ;; Fix up the range. |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
549 (if (< max min) (setq max min)) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
550 ;; Don't move past the fill column. |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
551 (if (<= max indent) (setq indent max)) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
552 ;; We can choose anywhere between min..max. |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
553 ;; Let's try to align to a comment on the previous line. |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
554 (save-excursion |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
555 (when (and (zerop (forward-line -1)) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
556 (setq other (comment-search-forward |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
557 (line-end-position) t))) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
558 (goto-char other) (setq other (current-column)))) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
559 (if (and other (<= other max) (>= other min)) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
560 ;; There is a comment and it's in the range: bingo! |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
561 other |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
562 ;; Can't align to a previous comment: let's try to align to comments |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
563 ;; on the following lines, then. These have not been re-indented yet, |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
564 ;; so we can't directly align ourselves with them. All we do is to try |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
565 ;; and choose an indentation point with which they will be able to |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
566 ;; align themselves. |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
567 (save-excursion |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
568 (while (and (zerop (forward-line 1)) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
569 (setq other (comment-search-forward |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
570 (line-end-position) t))) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
571 (goto-char other) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
572 (let ((omax (+ (current-column) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
573 (- (or comment-fill-column fill-column) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
574 (save-excursion (end-of-line) (current-column))))) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
575 (omin (save-excursion (skip-chars-backward " \t") |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
576 (1+ (current-column))))) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
577 (if (and (>= omax min) (<= omin max)) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
578 (progn (setq min (max omin min)) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
579 (setq max (min omax max))) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
580 ;; Can't align with this anyway, so exit the loop. |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
581 (goto-char (point-max)))))) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
582 ;; Return the closest point to indent within min..max. |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
583 (max min (min max indent))))) |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
584 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
585 ;;;###autoload |
26763
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
586 (defun comment-indent (&optional continue) |
53976
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
587 "Indent this line's comment to `comment-column', or insert an empty comment. |
38898
29a1feb5e1fe
(comment-beginning): Make sure the comment-start
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36490
diff
changeset
|
588 If CONTINUE is non-nil, use the `comment-continue' markers if any." |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
589 (interactive "*") |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
590 (comment-normalize-vars) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
591 (let* ((empty (save-excursion (beginning-of-line) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
592 (looking-at "[ \t]*$"))) |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
593 (starter (or (and continue comment-continue) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
594 (and empty block-comment-start) comment-start)) |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
595 (ender (or (and continue comment-continue "") |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
596 (and empty block-comment-end) comment-end))) |
33705
273d5b4aba82
(comment-indent): Insert comment before calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33485
diff
changeset
|
597 (unless starter (error "No comment syntax defined")) |
273d5b4aba82
(comment-indent): Insert comment before calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33485
diff
changeset
|
598 (beginning-of-line) |
273d5b4aba82
(comment-indent): Insert comment before calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33485
diff
changeset
|
599 (let* ((eolpos (line-end-position)) |
273d5b4aba82
(comment-indent): Insert comment before calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33485
diff
changeset
|
600 (begpos (comment-search-forward eolpos t)) |
273d5b4aba82
(comment-indent): Insert comment before calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33485
diff
changeset
|
601 cpos indent) |
85895
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
602 (if (and comment-insert-comment-function (not begpos)) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
603 ;; If no comment and c-i-c-f is set, let it do everything. |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
604 (funcall comment-insert-comment-function) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
605 ;; An existing comment? |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
606 (if begpos |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
607 (progn |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
608 (if (and (not (looking-at "[\t\n ]")) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
609 (looking-at comment-end-skip)) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
610 ;; The comment is empty and we have skipped all its space |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
611 ;; and landed right before the comment-ender: |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
612 ;; Go back to the middle of the space. |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
613 (forward-char (/ (skip-chars-backward " \t") -2))) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
614 (setq cpos (point-marker))) |
33705
273d5b4aba82
(comment-indent): Insert comment before calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33485
diff
changeset
|
615 ;; If none, insert one. |
273d5b4aba82
(comment-indent): Insert comment before calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33485
diff
changeset
|
616 (save-excursion |
53976
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
617 ;; Some `comment-indent-function's insist on not moving |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
618 ;; comments that are in column 0, so we first go to the |
b2fbe05650de
(comment-insert-comment-function, comment-region-function,
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53164
diff
changeset
|
619 ;; likely target column. |
39079
fc69197cb76d
(comment-indent): Don't insert a fixed number of spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39078
diff
changeset
|
620 (indent-to comment-column) |
49768
ffe55e61c3fc
(comment-indent): Ensure space before added comment.
Dave Love <fx@gnu.org>
parents:
49597
diff
changeset
|
621 ;; Ensure there's a space before the comment for things |
ffe55e61c3fc
(comment-indent): Ensure space before added comment.
Dave Love <fx@gnu.org>
parents:
49597
diff
changeset
|
622 ;; like sh where it matters (as well as being neater). |
74239
9343217833e9
(comment-indent): "?\ " -> "?\s".
Juanma Barranquero <lekktu@gmail.com>
parents:
73317
diff
changeset
|
623 (unless (memq (char-before) '(nil ?\n ?\t ?\s)) |
9343217833e9
(comment-indent): "?\ " -> "?\s".
Juanma Barranquero <lekktu@gmail.com>
parents:
73317
diff
changeset
|
624 (insert ?\s)) |
50929
068965f379b3
(comment-indent): Be more careful when inserting
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50845
diff
changeset
|
625 (setq begpos (point)) |
33705
273d5b4aba82
(comment-indent): Insert comment before calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33485
diff
changeset
|
626 (insert starter) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
627 (setq cpos (point-marker)) |
85895
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
628 (insert ender))) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
629 (goto-char begpos) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
630 ;; Compute desired indent. |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
631 (setq indent (save-excursion (funcall comment-indent-function))) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
632 ;; If `indent' is nil and there's code before the comment, we can't |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
633 ;; use `indent-according-to-mode', so we default to comment-column. |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
634 (unless (or indent (save-excursion (skip-chars-backward " \t") (bolp))) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
635 (setq indent comment-column)) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
636 (if (not indent) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
637 ;; comment-indent-function refuses: delegate to line-indent. |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
638 (indent-according-to-mode) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
639 ;; If the comment is at the right of code, adjust the indentation. |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
640 (unless (save-excursion (skip-chars-backward " \t") (bolp)) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
641 (setq indent (comment-choose-indent indent))) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
642 ;; Update INDENT to leave at least one space |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
643 ;; after other nonwhite text on the line. |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
644 (save-excursion |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
645 (skip-chars-backward " \t") |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
646 (unless (bolp) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
647 (setq indent (max indent (1+ (current-column)))))) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
648 ;; If that's different from comment's current position, change it. |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
649 (unless (= (current-column) indent) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
650 (delete-region (point) (progn (skip-chars-backward " \t") (point))) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
651 (indent-to indent))) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
652 (goto-char cpos) |
597274bf7123
(comment-indent): Let comment-insert-comment-function,
Glenn Morris <rgm@gnu.org>
parents:
85665
diff
changeset
|
653 (set-marker cpos nil))))) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
654 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
655 ;;;###autoload |
26763
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
656 (defun comment-set-column (arg) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
657 "Set the comment column based on point. |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
658 With no ARG, set the comment column to the current column. |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
659 With just minus as arg, kill any comment on this line. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
660 With any other arg, set comment column to indentation of the previous comment |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
661 and then align or create a comment on this line at that column." |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
662 (interactive "P") |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
663 (cond |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
664 ((eq arg '-) (comment-kill nil)) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
665 (arg |
50843
bc3a5a6b96ab
(comment-set-column, comment-kill, comment-or-uncomment-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50839
diff
changeset
|
666 (comment-normalize-vars) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
667 (save-excursion |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
668 (beginning-of-line) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
669 (comment-search-backward) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
670 (beginning-of-line) |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
671 (goto-char (comment-search-forward (line-end-position))) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
672 (setq comment-column (current-column)) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
673 (message "Comment column set to %d" comment-column)) |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
674 (comment-indent)) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
675 (t (setq comment-column (current-column)) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
676 (message "Comment column set to %d" comment-column)))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
677 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
678 ;;;###autoload |
26763
5a4671b4895c
various fixes and gratuitous movements.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26663
diff
changeset
|
679 (defun comment-kill (arg) |
80271
f74b83c18a6a
(comment-kill): Docstring improvement.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
79721
diff
changeset
|
680 "Kill the first comment on this line, if any. |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
681 With prefix ARG, kill comments on that many lines starting with this one." |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
682 (interactive "P") |
50843
bc3a5a6b96ab
(comment-set-column, comment-kill, comment-or-uncomment-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50839
diff
changeset
|
683 (comment-normalize-vars) |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
684 (dotimes (_ (prefix-numeric-value arg)) |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
685 (save-excursion |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
686 (beginning-of-line) |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
687 (let ((cs (comment-search-forward (line-end-position) t))) |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
688 (when cs |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
689 (goto-char cs) |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
690 (skip-syntax-backward " ") |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
691 (setq cs (point)) |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
692 (comment-forward) |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
693 (kill-region cs (if (bolp) (1- (point)) (point))) |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
694 (indent-according-to-mode)))) |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
695 (if arg (forward-line 1)))) |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
696 |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
697 (defun comment-padright (str &optional n) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
698 "Construct a string composed of STR plus `comment-padding'. |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
699 It also adds N copies of the last non-whitespace chars of STR. |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
700 If STR already contains padding, the corresponding amount is |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
701 ignored from `comment-padding'. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
702 N defaults to 0. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
703 If N is `re', a regexp is returned instead, that would match |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
704 the string for any N." |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
705 (setq n (or n 0)) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
706 (when (and (stringp str) (not (string= "" str))) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
707 ;; Separate the actual string from any leading/trailing padding |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
708 (string-match "\\`\\s-*\\(.*?\\)\\s-*\\'" str) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
709 (let ((s (match-string 1 str)) ;actual string |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
710 (lpad (substring str 0 (match-beginning 1))) ;left padding |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
711 (rpad (concat (substring str (match-end 1)) ;original right padding |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
712 (substring comment-padding ;additional right padding |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
713 (min (- (match-end 0) (match-end 1)) |
29037
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
714 (length comment-padding))))) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
715 ;; We can only duplicate C if the comment-end has multiple chars |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
716 ;; or if comments can be nested, else the comment-end `}' would |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
717 ;; be turned into `}}}' where only the first ends the comment |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
718 ;; and the rest becomes bogus junk. |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
719 (multi (not (and comment-quote-nested |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
720 ;; comment-end is a single char |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
721 (string-match "\\`\\s-*\\S-\\s-*\\'" comment-end))))) |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
722 (if (not (symbolp n)) |
29037
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
723 (concat lpad s (when multi (make-string n (aref str (1- (match-end 1))))) rpad) |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
724 ;; construct a regexp that would match anything from just S |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
725 ;; to any possible output of this function for any N. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
726 (concat (mapconcat (lambda (c) (concat (regexp-quote (string c)) "?")) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
727 lpad "") ;padding is not required |
29037
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
728 (regexp-quote s) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
729 (when multi "+") ;the last char of S might be repeated |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
730 (mapconcat (lambda (c) (concat (regexp-quote (string c)) "?")) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
731 rpad "")))))) ;padding is not required |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
732 |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
733 (defun comment-padleft (str &optional n) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
734 "Construct a string composed of `comment-padding' plus STR. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
735 It also adds N copies of the first non-whitespace chars of STR. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
736 If STR already contains padding, the corresponding amount is |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
737 ignored from `comment-padding'. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
738 N defaults to 0. |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
739 If N is `re', a regexp is returned instead, that would match |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
740 the string for any N." |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
741 (setq n (or n 0)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
742 (when (and (stringp str) (not (string= "" str))) |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
743 ;; Only separate the left pad because we assume there is no right pad. |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
744 (string-match "\\`\\s-*" str) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
745 (let ((s (substring str (match-end 0))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
746 (pad (concat (substring comment-padding |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
747 (min (- (match-end 0) (match-beginning 0)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
748 (length comment-padding))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
749 (match-string 0 str))) |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
750 (c (aref str (match-end 0))) ;the first non-space char of STR |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
751 ;; We can only duplicate C if the comment-end has multiple chars |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
752 ;; or if comments can be nested, else the comment-end `}' would |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
753 ;; be turned into `}}}' where only the first ends the comment |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
754 ;; and the rest becomes bogus junk. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
755 (multi (not (and comment-quote-nested |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
756 ;; comment-end is a single char |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
757 (string-match "\\`\\s-*\\S-\\s-*\\'" comment-end))))) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
758 (if (not (symbolp n)) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
759 (concat pad (when multi (make-string n c)) s) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
760 ;; Construct a regexp that would match anything from just S |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
761 ;; to any possible output of this function for any N. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
762 ;; We match any number of leading spaces because this regexp will |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
763 ;; be used for uncommenting where we might want to remove |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
764 ;; uncomment markers with arbitrary leading space (because |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
765 ;; they were aligned). |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
766 (concat "\\s-*" |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
767 (if multi (concat (regexp-quote (string c)) "*")) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
768 (regexp-quote s)))))) |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
769 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
770 ;;;###autoload |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
771 (defun uncomment-region (beg end &optional arg) |
47370
408ecff0939b
(uncomment-region): Be more careful with `='.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47212
diff
changeset
|
772 "Uncomment each line in the BEG .. END region. |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
773 The numeric prefix ARG can specify a number of chars to remove from the |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
774 comment markers." |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
775 (interactive "*r\nP") |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
776 (comment-normalize-vars) |
53988
043054d4d662
(uncomment-region): Allow eob as comment end.
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53976
diff
changeset
|
777 (when (> beg end) (setq beg (prog1 end (setq end beg)))) |
56957
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
778 ;; Bind `comment-use-global-state' to nil. While uncommenting a region |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
779 ;; (which works a line at a time), a comment can appear to be |
56915
12240bc21df6
(uncomment-region): Bind comment-use-global-state to nil.
Eli Zaretskii <eliz@gnu.org>
parents:
56143
diff
changeset
|
780 ;; included in a mult-line string, but it is actually not. |
12240bc21df6
(uncomment-region): Bind comment-use-global-state to nil.
Eli Zaretskii <eliz@gnu.org>
parents:
56143
diff
changeset
|
781 (let ((comment-use-global-state nil)) |
12240bc21df6
(uncomment-region): Bind comment-use-global-state to nil.
Eli Zaretskii <eliz@gnu.org>
parents:
56143
diff
changeset
|
782 (save-excursion |
56957
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
783 (funcall uncomment-region-function beg end arg)))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
784 |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
785 (defun uncomment-region-default (beg end &optional arg) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
786 "Uncomment each line in the BEG .. END region. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
787 The numeric prefix ARG can specify a number of chars to remove from the |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
788 comment markers." |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
789 (goto-char beg) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
790 (setq end (copy-marker end)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
791 (let* ((numarg (prefix-numeric-value arg)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
792 (ccs comment-continue) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
793 (srei (comment-padright ccs 're)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
794 (csre (comment-padright comment-start 're)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
795 (sre (and srei (concat "^\\s-*?\\(" srei "\\)"))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
796 spt) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
797 (while (and (< (point) end) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
798 (setq spt (comment-search-forward end t))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
799 (let ((ipt (point)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
800 ;; Find the end of the comment. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
801 (ept (progn |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
802 (goto-char spt) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
803 (unless (or (comment-forward) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
804 ;; Allow non-terminated comments. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
805 (eobp)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
806 (error "Can't find the comment end")) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
807 (point))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
808 (box nil) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
809 (box-equal nil)) ;Whether we might be using `=' for boxes. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
810 (save-restriction |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
811 (narrow-to-region spt ept) |
72453
204e1538695a
(comment-box): Call `comment-normalize-vars'. Add autoload cookie.
Juanma Barranquero <lekktu@gmail.com>
parents:
72410
diff
changeset
|
812 |
56957
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
813 ;; Remove the comment-start. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
814 (goto-char ipt) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
815 (skip-syntax-backward " ") |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
816 ;; A box-comment starts with a looong comment-start marker. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
817 (when (and (or (and (= (- (point) (point-min)) 1) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
818 (setq box-equal t) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
819 (looking-at "=\\{7\\}") |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
820 (not (eq (char-before (point-max)) ?\n)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
821 (skip-chars-forward "=")) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
822 (> (- (point) (point-min) (length comment-start)) 7)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
823 (> (count-lines (point-min) (point-max)) 2)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
824 (setq box t)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
825 ;; Skip the padding. Padding can come from comment-padding and/or |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
826 ;; from comment-start, so we first check comment-start. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
827 (if (or (save-excursion (goto-char (point-min)) (looking-at csre)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
828 (looking-at (regexp-quote comment-padding))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
829 (goto-char (match-end 0))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
830 (when (and sre (looking-at (concat "\\s-*\n\\s-*" srei))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
831 (goto-char (match-end 0))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
832 (if (null arg) (delete-region (point-min) (point)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
833 (skip-syntax-backward " ") |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
834 (delete-char (- numarg)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
835 (unless (or (bobp) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
836 (save-excursion (goto-char (point-min)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
837 (looking-at comment-start-skip))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
838 ;; If there's something left but it doesn't look like |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
839 ;; a comment-start any more, just remove it. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
840 (delete-region (point-min) (point)))) |
72453
204e1538695a
(comment-box): Call `comment-normalize-vars'. Add autoload cookie.
Juanma Barranquero <lekktu@gmail.com>
parents:
72410
diff
changeset
|
841 |
56957
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
842 ;; Remove the end-comment (and leading padding and such). |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
843 (goto-char (point-max)) (comment-enter-backward) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
844 ;; Check for special `=' used sometimes in comment-box. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
845 (when (and box-equal (not (eq (char-before (point-max)) ?\n))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
846 (let ((pos (point))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
847 ;; skip `=' but only if there are at least 7. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
848 (when (> (skip-chars-backward "=") -7) (goto-char pos)))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
849 (unless (looking-at "\\(\n\\|\\s-\\)*\\'") |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
850 (when (and (bolp) (not (bobp))) (backward-char)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
851 (if (null arg) (delete-region (point) (point-max)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
852 (skip-syntax-forward " ") |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
853 (delete-char numarg) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
854 (unless (or (eobp) (looking-at comment-end-skip)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
855 ;; If there's something left but it doesn't look like |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
856 ;; a comment-end any more, just remove it. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
857 (delete-region (point) (point-max))))) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
858 |
56957
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
859 ;; Unquote any nested end-comment. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
860 (comment-quote-nested comment-start comment-end t) |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
861 |
56957
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
862 ;; Eliminate continuation markers as well. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
863 (when sre |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
864 (let* ((cce (comment-string-reverse (or comment-continue |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
865 comment-start))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
866 (erei (and box (comment-padleft cce 're))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
867 (ere (and erei (concat "\\(" erei "\\)\\s-*$")))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
868 (goto-char (point-min)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
869 (while (progn |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
870 (if (and ere (re-search-forward |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
871 ere (line-end-position) t)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
872 (replace-match "" t t nil (if (match-end 2) 2 1)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
873 (setq ere nil)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
874 (forward-line 1) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
875 (re-search-forward sre (line-end-position) t)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
876 (replace-match "" t t nil (if (match-end 2) 2 1))))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
877 ;; Go to the end for the next comment. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
878 (goto-char (point-max)))))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
879 (set-marker end nil)) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
880 |
26645
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
881 (defun comment-make-extra-lines (cs ce ccs cce min-indent max-indent &optional block) |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
882 "Make the leading and trailing extra lines. |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
883 This is used for `extra-line' style (or `box' style if BLOCK is specified)." |
29037
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
884 (let ((eindent 0)) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
885 (if (not block) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
886 ;; Try to match CS and CE's content so they align aesthetically. |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
887 (progn |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
888 (setq ce (comment-string-strip ce t t)) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
889 (when (string-match "\\(.+\\).*\n\\(.*?\\)\\1" (concat ce "\n" cs)) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
890 (setq eindent |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
891 (max (- (match-end 2) (match-beginning 2) (match-beginning 0)) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
892 0)))) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
893 ;; box comment |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
894 (let* ((width (- max-indent min-indent)) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
895 (s (concat cs "a=m" cce)) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
896 (e (concat ccs "a=m" ce)) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
897 (c (if (string-match ".*\\S-\\S-" cs) |
47212
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
898 (aref cs (1- (match-end 0))) |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
899 (if (and (equal comment-end "") (string-match ".*\\S-" cs)) |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
900 (aref cs (1- (match-end 0))) ?=))) |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
901 (re "\\s-*a=m\\s-*") |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
902 (_ (string-match re s)) |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
903 (lcs (length cs)) |
29037
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
904 (fill |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
905 (make-string (+ width (- (match-end 0) |
47212
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
906 (match-beginning 0) lcs 3)) c))) |
26645
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
907 (setq cs (replace-match fill t t s)) |
47212
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
908 (when (and (not (string-match comment-start-skip cs)) |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
909 (string-match "a=m" s)) |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
910 ;; The whitespace around CS cannot be ignored: put it back. |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
911 (setq re "a=m") |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
912 (setq fill (make-string (- width lcs) c)) |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
913 (setq cs (replace-match fill t t s))) |
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
914 (string-match re e) |
29037
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
915 (setq ce (replace-match fill t t e)))) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
916 (cons (concat cs "\n" (make-string min-indent ? ) ccs) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
917 (concat cce "\n" (make-string (+ min-indent eindent) ? ) ce)))) |
26645
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
918 |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
919 (defmacro comment-with-narrowing (beg end &rest body) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
920 "Execute BODY with BEG..END narrowing. |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
921 Space is added (and then removed) at the beginning for the text's |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
922 indentation to be kept as it was before narrowing." |
47467
c5035e184eba
(comment-with-narrowing): Use the `declare' thingy.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
47400
diff
changeset
|
923 (declare (debug t) (indent 2)) |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
924 (let ((bindent (make-symbol "bindent"))) |
50947
15c3c47aca50
(comment-indent): Try to align to adjacent comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50929
diff
changeset
|
925 `(let ((,bindent (save-excursion (goto-char ,beg) (current-column)))) |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
926 (save-restriction |
50947
15c3c47aca50
(comment-indent): Try to align to adjacent comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50929
diff
changeset
|
927 (narrow-to-region ,beg ,end) |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
928 (goto-char (point-min)) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
929 (insert (make-string ,bindent ? )) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
930 (prog1 |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
931 (progn ,@body) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
932 ;; remove the bindent |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
933 (save-excursion |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
934 (goto-char (point-min)) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
935 (when (looking-at " *") |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
936 (let ((n (min (- (match-end 0) (match-beginning 0)) ,bindent))) |
26645
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
937 (delete-char n) |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
938 (setq ,bindent (- ,bindent n)))) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
939 (end-of-line) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
940 (let ((e (point))) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
941 (beginning-of-line) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
942 (while (and (> ,bindent 0) (re-search-forward " *" e t)) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
943 (let ((n (min ,bindent (- (match-end 0) (match-beginning 0) 1)))) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
944 (goto-char (match-beginning 0)) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
945 (delete-char n) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
946 (setq ,bindent (- ,bindent n))))))))))) |
26645
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
947 |
85665
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
948 ;; Compute the number of extra comment starter characters |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
949 ;; (extra semicolons in Lisp mode, extra stars in C mode, etc.) |
84625
f867348019bf
(comment-add): New arg EXTRA.
Richard M. Stallman <rms@gnu.org>
parents:
82140
diff
changeset
|
950 ;; If ARG is non-nil, just follow ARG. |
84679
a5c8194cf0e8
(comment-add): If EXTRA, double `comment-add' value.
Richard M. Stallman <rms@gnu.org>
parents:
84625
diff
changeset
|
951 ;; If the comment-starter is multi-char, just follow ARG. |
a5c8194cf0e8
(comment-add): If EXTRA, double `comment-add' value.
Richard M. Stallman <rms@gnu.org>
parents:
84625
diff
changeset
|
952 ;; Otherwise obey comment-add, and double it if EXTRA is non-nil. |
70043
cec61a0fff33
(comment-add): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
68594
diff
changeset
|
953 (defun comment-add (arg) |
cec61a0fff33
(comment-add): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
68594
diff
changeset
|
954 (if (and (null arg) (= (string-match "[ \t]*\\'" comment-start) 1)) |
85665
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
955 (* comment-add 1) |
70043
cec61a0fff33
(comment-add): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
68594
diff
changeset
|
956 (1- (prefix-numeric-value arg)))) |
cec61a0fff33
(comment-add): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
68594
diff
changeset
|
957 |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
958 (defun comment-region-internal (beg end cs ce |
56143
94e9e6f1f0b3
(comment-region-internal): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
56019
diff
changeset
|
959 &optional ccs cce block lines indent) |
47212
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
960 "Comment region BEG .. END. |
56143
94e9e6f1f0b3
(comment-region-internal): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
56019
diff
changeset
|
961 CS and CE are the comment start string and comment end string, |
94e9e6f1f0b3
(comment-region-internal): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
56019
diff
changeset
|
962 respectively. CCS and CCE are the comment continuation strings |
94e9e6f1f0b3
(comment-region-internal): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
56019
diff
changeset
|
963 for the start and end of lines, respectively (default to CS and CE). |
94e9e6f1f0b3
(comment-region-internal): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
56019
diff
changeset
|
964 BLOCK indicates that end of lines should be marked with either CCE, |
94e9e6f1f0b3
(comment-region-internal): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
56019
diff
changeset
|
965 CE or CS \(if CE is empty) and that those markers should be aligned. |
94e9e6f1f0b3
(comment-region-internal): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
56019
diff
changeset
|
966 LINES indicates that an extra lines will be used at the beginning |
94e9e6f1f0b3
(comment-region-internal): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
56019
diff
changeset
|
967 and end of the region for CE and CS. |
94e9e6f1f0b3
(comment-region-internal): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
56019
diff
changeset
|
968 INDENT indicates to put CS and CCS at the current indentation of |
94e9e6f1f0b3
(comment-region-internal): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
56019
diff
changeset
|
969 the region rather than at left margin." |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
970 ;;(assert (< beg end)) |
51337
0237e2420453
(comment-empty-lines): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50947
diff
changeset
|
971 (let ((no-empty (not (or (eq comment-empty-lines t) |
86771
e947df5d708b
Martin Rudalics <rudalics at gmx.at>
Glenn Morris <rgm@gnu.org>
parents:
85905
diff
changeset
|
972 (and comment-empty-lines (zerop (length ce)))))) |
e947df5d708b
Martin Rudalics <rudalics at gmx.at>
Glenn Morris <rgm@gnu.org>
parents:
85905
diff
changeset
|
973 ce-sanitized) |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
974 ;; Sanitize CE and CCE. |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
975 (if (and (stringp ce) (string= "" ce)) (setq ce nil)) |
86771
e947df5d708b
Martin Rudalics <rudalics at gmx.at>
Glenn Morris <rgm@gnu.org>
parents:
85905
diff
changeset
|
976 (setq ce-sanitized ce) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
977 (if (and (stringp cce) (string= "" cce)) (setq cce nil)) |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
978 ;; If CE is empty, multiline cannot be used. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
979 (unless ce (setq ccs nil cce nil)) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
980 ;; Should we mark empty lines as well ? |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
981 (if (or ccs block lines) (setq no-empty nil)) |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
982 ;; Make sure we have end-markers for BLOCK mode. |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
983 (when block (unless ce (setq ce (comment-string-reverse cs)))) |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
984 ;; If BLOCK is not requested, we don't need CCE. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
985 (unless block (setq cce nil)) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
986 ;; Continuation defaults to the same as CS and CE. |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
987 (unless ccs (setq ccs cs cce ce)) |
49597
e88404e8f2cf
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
48257
diff
changeset
|
988 |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
989 (save-excursion |
26645
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
990 (goto-char end) |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
991 ;; If the end is not at the end of a line and the comment-end |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
992 ;; is implicit (i.e. a newline), explicitly insert a newline. |
86771
e947df5d708b
Martin Rudalics <rudalics at gmx.at>
Glenn Morris <rgm@gnu.org>
parents:
85905
diff
changeset
|
993 (unless (or ce-sanitized (eolp)) (insert "\n") (indent-according-to-mode)) |
26645
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
994 (comment-with-narrowing beg end |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
995 (let ((min-indent (point-max)) |
39864
71f93e410115
(comment-region-internal): Don't rebind
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39761
diff
changeset
|
996 (max-indent 0)) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
997 (goto-char (point-min)) |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
998 ;; Quote any nested comment marker |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
999 (comment-quote-nested comment-start comment-end nil) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1000 |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1001 ;; Loop over all lines to find the needed indentations. |
29066
720287a2312f
(comment-region-internal): Go back to BEG after quoting
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29037
diff
changeset
|
1002 (goto-char (point-min)) |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1003 (while |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1004 (progn |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1005 (unless (looking-at "[ \t]*$") |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1006 (setq min-indent (min min-indent (current-indentation)))) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1007 (end-of-line) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1008 (setq max-indent (max max-indent (current-column))) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1009 (not (or (eobp) (progn (forward-line) nil))))) |
49597
e88404e8f2cf
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
48257
diff
changeset
|
1010 |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1011 (setq max-indent |
66712
13b5bb686732
(comment-region-internal): Box more tightly in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64861
diff
changeset
|
1012 (+ max-indent (max (length cs) (length ccs)) |
13b5bb686732
(comment-region-internal): Box more tightly in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64861
diff
changeset
|
1013 ;; Inserting ccs can change max-indent by (1- tab-width) |
13b5bb686732
(comment-region-internal): Box more tightly in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64861
diff
changeset
|
1014 ;; but only if there are TABs in the boxed text, of course. |
13b5bb686732
(comment-region-internal): Box more tightly in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64861
diff
changeset
|
1015 (if (save-excursion (goto-char beg) |
13b5bb686732
(comment-region-internal): Box more tightly in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64861
diff
changeset
|
1016 (search-forward "\t" end t)) |
13b5bb686732
(comment-region-internal): Box more tightly in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64861
diff
changeset
|
1017 (1- tab-width) 0))) |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
1018 (unless indent (setq min-indent 0)) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1019 |
26645
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
1020 ;; make the leading and trailing lines if requested |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1021 (when lines |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
1022 (let ((csce |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
1023 (comment-make-extra-lines |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
1024 cs ce ccs cce min-indent max-indent block))) |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
1025 (setq cs (car csce)) |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
1026 (setq ce (cdr csce)))) |
49597
e88404e8f2cf
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
48257
diff
changeset
|
1027 |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1028 (goto-char (point-min)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1029 ;; Loop over all lines from BEG to END. |
28904
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1030 (while |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1031 (progn |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1032 (unless (and no-empty (looking-at "[ \t]*$")) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1033 (move-to-column min-indent t) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1034 (insert cs) (setq cs ccs) ;switch to CCS after the first line |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1035 (end-of-line) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1036 (if (eobp) (setq cce ce)) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1037 (when cce |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1038 (when block (move-to-column max-indent t)) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1039 (insert cce))) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1040 (end-of-line) |
8d91ded5215c
(comment-start, comment-start-skip, comment-end): Made `defvar'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28901
diff
changeset
|
1041 (not (or (eobp) (progn (forward-line) nil)))))))))) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1042 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
1043 ;;;###autoload |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1044 (defun comment-region (beg end &optional arg) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1045 "Comment or uncomment each line in the region. |
47212
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
1046 With just \\[universal-argument] prefix arg, uncomment each line in region BEG .. END. |
56019
0517f0b254be
(comment-search-forward, comment-search-backward): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents:
54314
diff
changeset
|
1047 Numeric prefix ARG means use ARG comment characters. |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1048 If ARG is negative, delete that many comment characters instead. |
103292
0d056af7a0af
* newcomment.el (comment-region): Doc fix (Bug#3370).
Chong Yidong <cyd@stupidchicken.com>
parents:
100908
diff
changeset
|
1049 |
0d056af7a0af
* newcomment.el (comment-region): Doc fix (Bug#3370).
Chong Yidong <cyd@stupidchicken.com>
parents:
100908
diff
changeset
|
1050 The strings used as comment starts are built from `comment-start' |
0d056af7a0af
* newcomment.el (comment-region): Doc fix (Bug#3370).
Chong Yidong <cyd@stupidchicken.com>
parents:
100908
diff
changeset
|
1051 and `comment-padding'; the strings used as comment ends are built |
0d056af7a0af
* newcomment.el (comment-region): Doc fix (Bug#3370).
Chong Yidong <cyd@stupidchicken.com>
parents:
100908
diff
changeset
|
1052 from `comment-end' and `comment-padding'. |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1053 |
103292
0d056af7a0af
* newcomment.el (comment-region): Doc fix (Bug#3370).
Chong Yidong <cyd@stupidchicken.com>
parents:
100908
diff
changeset
|
1054 By default, the `comment-start' markers are inserted at the |
0d056af7a0af
* newcomment.el (comment-region): Doc fix (Bug#3370).
Chong Yidong <cyd@stupidchicken.com>
parents:
100908
diff
changeset
|
1055 current indentation of the region, and comments are terminated on |
0d056af7a0af
* newcomment.el (comment-region): Doc fix (Bug#3370).
Chong Yidong <cyd@stupidchicken.com>
parents:
100908
diff
changeset
|
1056 each line (even for syntaxes in which newline does not end the |
0d056af7a0af
* newcomment.el (comment-region): Doc fix (Bug#3370).
Chong Yidong <cyd@stupidchicken.com>
parents:
100908
diff
changeset
|
1057 comment and blank lines do not get comments). This can be |
0d056af7a0af
* newcomment.el (comment-region): Doc fix (Bug#3370).
Chong Yidong <cyd@stupidchicken.com>
parents:
100908
diff
changeset
|
1058 changed with `comment-style'." |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1059 (interactive "*r\nP") |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1060 (comment-normalize-vars) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1061 (if (> beg end) (let (mid) (setq mid beg beg end end mid))) |
56957
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1062 (save-excursion |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1063 ;; FIXME: maybe we should call uncomment depending on ARG. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1064 (funcall comment-region-function beg end arg))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1065 |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1066 (defun comment-region-default (beg end &optional arg) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1067 (let* ((numarg (prefix-numeric-value arg)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1068 (style (cdr (assoc comment-style comment-styles))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1069 (lines (nth 2 style)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1070 (block (nth 1 style)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1071 (multi (nth 0 style))) |
78909
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
1072 |
545574ac320d
(comment-choose-indent): New function extracted
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
1073 ;; We use `chars' instead of `syntax' because `\n' might be |
56957
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1074 ;; of end-comment syntax rather than of whitespace syntax. |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1075 ;; sanitize BEG and END |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1076 (goto-char beg) (skip-chars-forward " \t\n\r") (beginning-of-line) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1077 (setq beg (max beg (point))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1078 (goto-char end) (skip-chars-backward " \t\n\r") (end-of-line) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1079 (setq end (min end (point))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1080 (if (>= beg end) (error "Nothing to comment")) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1081 |
56957
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1082 ;; sanitize LINES |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1083 (setq lines |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1084 (and |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1085 lines ;; multi |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1086 (progn (goto-char beg) (beginning-of-line) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1087 (skip-syntax-forward " ") |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1088 (>= (point) beg)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1089 (progn (goto-char end) (end-of-line) (skip-syntax-backward " ") |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1090 (<= (point) end)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1091 (or block (not (string= "" comment-end))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1092 (or block (progn (goto-char beg) (search-forward "\n" end t))))) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1093 |
56957
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1094 ;; don't add end-markers just because the user asked for `block' |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1095 (unless (or lines (string= "" comment-end)) (setq block nil)) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1096 |
56957
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1097 (cond |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1098 ((consp arg) (uncomment-region beg end)) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1099 ((< numarg 0) (uncomment-region beg end (- numarg))) |
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1100 (t |
85665
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1101 (let ((multi-char (/= (string-match "[ \t]*\\'" comment-start) 1)) |
87366
682c0e86fe6b
(comment-region-default): Don't triple the
Richard M. Stallman <rms@gnu.org>
parents:
86771
diff
changeset
|
1102 indent triple) |
85665
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1103 (if (eq (nth 3 style) 'multi-char) |
87366
682c0e86fe6b
(comment-region-default): Don't triple the
Richard M. Stallman <rms@gnu.org>
parents:
86771
diff
changeset
|
1104 (save-excursion |
682c0e86fe6b
(comment-region-default): Don't triple the
Richard M. Stallman <rms@gnu.org>
parents:
86771
diff
changeset
|
1105 (goto-char beg) |
682c0e86fe6b
(comment-region-default): Don't triple the
Richard M. Stallman <rms@gnu.org>
parents:
86771
diff
changeset
|
1106 (setq indent multi-char |
682c0e86fe6b
(comment-region-default): Don't triple the
Richard M. Stallman <rms@gnu.org>
parents:
86771
diff
changeset
|
1107 ;; Triple if we will put the comment starter at the margin |
682c0e86fe6b
(comment-region-default): Don't triple the
Richard M. Stallman <rms@gnu.org>
parents:
86771
diff
changeset
|
1108 ;; and the first line of the region isn't indented |
682c0e86fe6b
(comment-region-default): Don't triple the
Richard M. Stallman <rms@gnu.org>
parents:
86771
diff
changeset
|
1109 ;; at least two spaces. |
682c0e86fe6b
(comment-region-default): Don't triple the
Richard M. Stallman <rms@gnu.org>
parents:
86771
diff
changeset
|
1110 triple (and (not multi-char) (looking-at "\t\\| ")))) |
85665
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1111 (setq indent (nth 3 style))) |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1112 |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1113 ;; In Lisp and similar modes with one-character comment starters, |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1114 ;; double it by default if `comment-add' says so. |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1115 ;; If it isn't indented, triple it. |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1116 (if (and (null arg) (not multi-char)) |
87366
682c0e86fe6b
(comment-region-default): Don't triple the
Richard M. Stallman <rms@gnu.org>
parents:
86771
diff
changeset
|
1117 (setq numarg (* comment-add (if triple 2 1))) |
85665
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1118 (setq numarg (1- (prefix-numeric-value arg)))) |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1119 |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1120 (comment-region-internal |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1121 beg end |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1122 (let ((s (comment-padright comment-start numarg))) |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1123 (if (string-match comment-start-skip s) s |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1124 (comment-padright comment-start))) |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1125 (let ((s (comment-padleft comment-end numarg))) |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1126 (and s (if (string-match comment-end-skip s) s |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1127 (comment-padright comment-end)))) |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1128 (if multi (comment-padright comment-continue numarg)) |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1129 (if multi |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1130 (comment-padleft (comment-string-reverse comment-continue) numarg)) |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1131 block |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1132 lines |
2a0d98e5c9f2
(comment-styles): New style indent-or-triple.
Richard M. Stallman <rms@gnu.org>
parents:
84679
diff
changeset
|
1133 indent)))))) |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
1134 |
72453
204e1538695a
(comment-box): Call `comment-normalize-vars'. Add autoload cookie.
Juanma Barranquero <lekktu@gmail.com>
parents:
72410
diff
changeset
|
1135 ;;;###autoload |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
1136 (defun comment-box (beg end &optional arg) |
47212
5ddbbad82052
(comment-make-extra-lines): Only use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46870
diff
changeset
|
1137 "Comment out the BEG .. END region, putting it inside a box. |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
1138 The numeric prefix ARG specifies how many characters to add to begin- and |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
1139 end- comment markers additionally to what `comment-add' already specifies." |
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
1140 (interactive "*r\np") |
72453
204e1538695a
(comment-box): Call `comment-normalize-vars'. Add autoload cookie.
Juanma Barranquero <lekktu@gmail.com>
parents:
72410
diff
changeset
|
1141 (comment-normalize-vars) |
29037
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
1142 (let ((comment-style (if (cadr (assoc comment-style comment-styles)) |
238233843fc1
(comment-styles): New `box-multi'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28990
diff
changeset
|
1143 'box-multi 'box))) |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
1144 (comment-region beg end (+ comment-add arg)))) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1145 |
44999
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1146 |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1147 ;;;###autoload |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1148 (defun comment-or-uncomment-region (beg end &optional arg) |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1149 "Call `comment-region', unless the region only consists of comments, |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1150 in which case call `uncomment-region'. If a prefix arg is given, it |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1151 is passed on to the respective function." |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1152 (interactive "*r\nP") |
50843
bc3a5a6b96ab
(comment-set-column, comment-kill, comment-or-uncomment-region):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50839
diff
changeset
|
1153 (comment-normalize-vars) |
44999
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1154 (funcall (if (save-excursion ;; check for already commented region |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1155 (goto-char beg) |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1156 (comment-forward (point-max)) |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1157 (<= end (point))) |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1158 'uncomment-region 'comment-region) |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1159 beg end arg)) |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1160 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
1161 ;;;###autoload |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1162 (defun comment-dwim (arg) |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
1163 "Call the comment command you want (Do What I Mean). |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
1164 If the region is active and `transient-mark-mode' is on, call |
34301 | 1165 `comment-region' (unless it only consists of comments, in which |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
1166 case it calls `uncomment-region'). |
85905
7100260421ed
(comment-dwim): Call comment-insert-comment-function, if defined, for
Glenn Morris <rgm@gnu.org>
parents:
85895
diff
changeset
|
1167 Else, if the current line is empty, call `comment-insert-comment-function' |
7100260421ed
(comment-dwim): Call comment-insert-comment-function, if defined, for
Glenn Morris <rgm@gnu.org>
parents:
85895
diff
changeset
|
1168 if it is defined, otherwise insert a comment and indent it. |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
1169 Else if a prefix ARG is specified, call `comment-kill'. |
68594
ca4201c7597d
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67057
diff
changeset
|
1170 Else, call `comment-indent'. |
ca4201c7597d
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67057
diff
changeset
|
1171 You can configure `comment-style' to change the way regions are commented." |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1172 (interactive "*P") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1173 (comment-normalize-vars) |
28901
0e7bbb764f47
(comment-use-syntax): Change `maybe' to `undecided'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26763
diff
changeset
|
1174 (if (and mark-active transient-mark-mode) |
44999
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1175 (comment-or-uncomment-region (region-beginning) (region-end) arg) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1176 (if (save-excursion (beginning-of-line) (not (looking-at "\\s-*$"))) |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
1177 ;; FIXME: If there's no comment to kill on this line and ARG is |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
1178 ;; specified, calling comment-kill is not very clever. |
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
1179 (if arg (comment-kill (and (integerp arg) arg)) (comment-indent)) |
85905
7100260421ed
(comment-dwim): Call comment-insert-comment-function, if defined, for
Glenn Morris <rgm@gnu.org>
parents:
85895
diff
changeset
|
1180 ;; Inserting a comment on a blank line. comment-indent calls |
7100260421ed
(comment-dwim): Call comment-insert-comment-function, if defined, for
Glenn Morris <rgm@gnu.org>
parents:
85895
diff
changeset
|
1181 ;; c-i-c-f if needed in the non-blank case. |
7100260421ed
(comment-dwim): Call comment-insert-comment-function, if defined, for
Glenn Morris <rgm@gnu.org>
parents:
85895
diff
changeset
|
1182 (if comment-insert-comment-function |
7100260421ed
(comment-dwim): Call comment-insert-comment-function, if defined, for
Glenn Morris <rgm@gnu.org>
parents:
85895
diff
changeset
|
1183 (funcall comment-insert-comment-function) |
7100260421ed
(comment-dwim): Call comment-insert-comment-function, if defined, for
Glenn Morris <rgm@gnu.org>
parents:
85895
diff
changeset
|
1184 (let ((add (comment-add arg))) |
7100260421ed
(comment-dwim): Call comment-insert-comment-function, if defined, for
Glenn Morris <rgm@gnu.org>
parents:
85895
diff
changeset
|
1185 ;; Some modes insist on keeping column 0 comment in column 0 |
7100260421ed
(comment-dwim): Call comment-insert-comment-function, if defined, for
Glenn Morris <rgm@gnu.org>
parents:
85895
diff
changeset
|
1186 ;; so we need to move away from it before inserting the comment. |
7100260421ed
(comment-dwim): Call comment-insert-comment-function, if defined, for
Glenn Morris <rgm@gnu.org>
parents:
85895
diff
changeset
|
1187 (indent-according-to-mode) |
7100260421ed
(comment-dwim): Call comment-insert-comment-function, if defined, for
Glenn Morris <rgm@gnu.org>
parents:
85895
diff
changeset
|
1188 (insert (comment-padright comment-start add)) |
7100260421ed
(comment-dwim): Call comment-insert-comment-function, if defined, for
Glenn Morris <rgm@gnu.org>
parents:
85895
diff
changeset
|
1189 (save-excursion |
7100260421ed
(comment-dwim): Call comment-insert-comment-function, if defined, for
Glenn Morris <rgm@gnu.org>
parents:
85895
diff
changeset
|
1190 (unless (string= "" comment-end) |
7100260421ed
(comment-dwim): Call comment-insert-comment-function, if defined, for
Glenn Morris <rgm@gnu.org>
parents:
85895
diff
changeset
|
1191 (insert (comment-padleft comment-end add))) |
7100260421ed
(comment-dwim): Call comment-insert-comment-function, if defined, for
Glenn Morris <rgm@gnu.org>
parents:
85895
diff
changeset
|
1192 (indent-according-to-mode))))))) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1193 |
57526
d0bca414ad07
(comment-auto-fill-only-comments): Add autoload.
Richard M. Stallman <rms@gnu.org>
parents:
57301
diff
changeset
|
1194 ;;;###autoload |
28961
8092e0d9d8b9
(comment-beginning): Handle unclosed comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28949
diff
changeset
|
1195 (defcustom comment-auto-fill-only-comments nil |
8092e0d9d8b9
(comment-beginning): Handle unclosed comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28949
diff
changeset
|
1196 "Non-nil means to only auto-fill inside comments. |
8092e0d9d8b9
(comment-beginning): Handle unclosed comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28949
diff
changeset
|
1197 This has no effect in modes that do not define a comment syntax." |
62531
c905fcf5e3d9
Specify missing group (and type, if simple) in defcustom.
Juanma Barranquero <lekktu@gmail.com>
parents:
57526
diff
changeset
|
1198 :type 'boolean |
c905fcf5e3d9
Specify missing group (and type, if simple) in defcustom.
Juanma Barranquero <lekktu@gmail.com>
parents:
57526
diff
changeset
|
1199 :group 'comment) |
28961
8092e0d9d8b9
(comment-beginning): Handle unclosed comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28949
diff
changeset
|
1200 |
50947
15c3c47aca50
(comment-indent): Try to align to adjacent comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50929
diff
changeset
|
1201 (defun comment-valid-prefix-p (prefix compos) |
73317
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1202 "Check that the adaptive-fill-prefix is consistent with the context. |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1203 PREFIX is the prefix (presumably guessed by `adaptive-fill-mode'). |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1204 COMPOS is the position of the beginning of the comment we're in, or nil |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1205 if we're not inside a comment." |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1206 ;; This consistency checking is mostly needed to workaround the limitation |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1207 ;; of auto-fill-mode whose paragraph-determination doesn't pay attention |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1208 ;; to comment boundaries. |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1209 (if (null compos) |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1210 ;; We're not inside a comment: the prefix shouldn't match |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1211 ;; a comment-starter. |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1212 (not (and comment-start comment-start-skip |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1213 (string-match comment-start-skip prefix))) |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1214 (or |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1215 ;; Accept any prefix if the current comment is not EOL-terminated. |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1216 (save-excursion (goto-char compos) (comment-forward) (not (bolp))) |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1217 ;; Accept any prefix that starts with the same comment-start marker |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1218 ;; as the current one. |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1219 (when (string-match (concat "\\`[ \t]*\\(?:" comment-start-skip "\\)") |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1220 prefix) |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1221 (let ((prefix-com (comment-string-strip (match-string 0 prefix) nil t))) |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1222 (string-match "\\`[ \t]*" prefix-com) |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1223 (let* ((prefix-space (match-string 0 prefix-com)) |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1224 (prefix-indent (string-width prefix-space)) |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1225 (prefix-comstart (substring prefix-com (match-end 0)))) |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1226 (save-excursion |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1227 (goto-char compos) |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1228 ;; The comstart marker is the same. |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1229 (and (looking-at (regexp-quote prefix-comstart)) |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1230 ;; The indentation as well. |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1231 (or (= prefix-indent |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1232 (- (current-column) (current-left-margin))) |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1233 ;; Check the indentation in two different ways, just |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1234 ;; to try and avoid most of the potential funny cases. |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1235 (equal prefix-space |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1236 (buffer-substring (point) |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1237 (progn (move-to-left-margin) |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1238 (point))))))))))))) |
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1239 |
39761
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
1240 |
29215
21c457830b9d
Add abundant autoload cookies.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29119
diff
changeset
|
1241 ;;;###autoload |
28949
856f1364a955
(comment-string-strip): Strip terminating newlines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28904
diff
changeset
|
1242 (defun comment-indent-new-line (&optional soft) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1243 "Break line at point and indent, continuing comment if within one. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1244 This indents the body of the continued comment |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1245 under the previous comment line. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1246 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1247 This command is intended for styles where you write a comment per line, |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1248 starting a new comment (and terminating it if necessary) on each line. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1249 If you want to continue one comment across several lines, use \\[newline-and-indent]. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1250 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1251 If a fill column is specified, it overrides the use of the comment column |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1252 or comment indentation. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1253 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1254 The inserted newline is marked hard if variable `use-hard-newlines' is true, |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1255 unless optional argument SOFT is non-nil." |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1256 (interactive) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1257 (comment-normalize-vars t) |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1258 (let (compos comin) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1259 ;; If we are not inside a comment and we only auto-fill comments, |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1260 ;; don't do anything (unless no comment syntax is defined). |
28961
8092e0d9d8b9
(comment-beginning): Handle unclosed comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28949
diff
changeset
|
1261 (unless (and comment-start |
8092e0d9d8b9
(comment-beginning): Handle unclosed comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28949
diff
changeset
|
1262 comment-auto-fill-only-comments |
41286
6b56e476153d
(comment-column, comment-style, comment-multi-line)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41253
diff
changeset
|
1263 (not (interactive-p)) |
28961
8092e0d9d8b9
(comment-beginning): Handle unclosed comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28949
diff
changeset
|
1264 (not (save-excursion |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1265 (prog1 (setq compos (comment-beginning)) |
28961
8092e0d9d8b9
(comment-beginning): Handle unclosed comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28949
diff
changeset
|
1266 (setq comin (point)))))) |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1267 |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1268 ;; Now we know we should auto-fill. |
44999
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1269 ;; Insert the newline before removing empty space so that markers |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1270 ;; get preserved better. |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1271 (if soft (insert-and-inherit ?\n) (newline 1)) |
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1272 (save-excursion (forward-char -1) (delete-horizontal-space)) |
34459
1007fb1b5df9
(comment-indent-new-line): Use delete-horizontal-space
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34301
diff
changeset
|
1273 (delete-horizontal-space) |
44999
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1274 |
39761
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
1275 (if (and fill-prefix (not adaptive-fill-mode)) |
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
1276 ;; Blindly trust a non-adaptive fill-prefix. |
28961
8092e0d9d8b9
(comment-beginning): Handle unclosed comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28949
diff
changeset
|
1277 (progn |
8092e0d9d8b9
(comment-beginning): Handle unclosed comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28949
diff
changeset
|
1278 (indent-to-left-margin) |
44999
a8d9e35048ff
(comment-fill-column): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44455
diff
changeset
|
1279 (insert-before-markers-and-inherit fill-prefix)) |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1280 |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1281 ;; If necessary check whether we're inside a comment. |
41253
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1282 (unless (or compos (null comment-start)) |
28961
8092e0d9d8b9
(comment-beginning): Handle unclosed comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28949
diff
changeset
|
1283 (save-excursion |
8092e0d9d8b9
(comment-beginning): Handle unclosed comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28949
diff
changeset
|
1284 (backward-char) |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1285 (setq compos (comment-beginning)) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1286 (setq comin (point)))) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1287 |
39761
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
1288 (cond |
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
1289 ;; If there's an adaptive prefix, use it unless we're inside |
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
1290 ;; a comment and the prefix is not a comment starter. |
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
1291 ((and fill-prefix |
73317
a8f3a59e04e0
(comment-valid-prefix-p): Make the check more thorough.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
72453
diff
changeset
|
1292 (comment-valid-prefix-p fill-prefix compos)) |
39761
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
1293 (indent-to-left-margin) |
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
1294 (insert-and-inherit fill-prefix)) |
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
1295 ;; If we're not inside a comment, just try to indent. |
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
1296 ((not compos) (indent-according-to-mode)) |
1cf8ddfb831f
(comment-indent): Be a little more robust in case
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39486
diff
changeset
|
1297 (t |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1298 (let* ((comment-column |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1299 ;; The continuation indentation should be somewhere between |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1300 ;; the current line's indentation (plus 2 for good measure) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1301 ;; and the current comment's indentation, with a preference |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1302 ;; for comment-column. |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1303 (save-excursion |
41253
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1304 ;; FIXME: use prev line's info rather than first line's. |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1305 (goto-char compos) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1306 (min (current-column) (max comment-column |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1307 (+ 2 (current-indentation)))))) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1308 (comstart (buffer-substring compos comin)) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1309 (normalp |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1310 (string-match (regexp-quote (comment-string-strip |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1311 comment-start t t)) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1312 comstart)) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1313 (comment-end |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1314 (if normalp comment-end |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1315 ;; The comment starter is not the normal comment-start |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1316 ;; so we can't just use comment-end. |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1317 (save-excursion |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1318 (goto-char compos) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1319 (if (not (comment-forward)) comment-end |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1320 (comment-string-strip |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1321 (buffer-substring |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1322 (save-excursion (comment-enter-backward) (point)) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1323 (point)) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1324 nil t))))) |
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1325 (comment-start comstart) |
41253
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1326 (continuep (or comment-multi-line |
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1327 (cadr (assoc comment-style comment-styles)))) |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1328 ;; Force comment-continue to be recreated from comment-start. |
38898
29a1feb5e1fe
(comment-beginning): Make sure the comment-start
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36490
diff
changeset
|
1329 ;; FIXME: wrong if comment-continue was set explicitly! |
41253
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1330 ;; FIXME: use prev line's continuation if available. |
28990
80e6f0d6eac1
Fix license text and author.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28961
diff
changeset
|
1331 (comment-continue nil)) |
41253
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1332 (if (and comment-multi-line (> (length comment-end) 0)) |
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1333 (indent-according-to-mode) |
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1334 (insert-and-inherit ?\n) |
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1335 (forward-char -1) |
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1336 (comment-indent continuep) |
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1337 (save-excursion |
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1338 (let ((pt (point))) |
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1339 (end-of-line) |
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1340 (let ((comend (buffer-substring pt (point)))) |
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1341 ;; The 1+ is to make sure we delete the \n inserted above. |
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1342 (delete-region pt (1+ (point))) |
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1343 (end-of-line 0) |
87ae7a37e076
(comment-indent): Fix misindentation for comment-only lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41021
diff
changeset
|
1344 (insert comend)))))))))))) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
1345 |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1346 (provide 'newcomment) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1347 |
56957
56009bee8238
(uncomment-region-default, comment-region-default):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56915
diff
changeset
|
1348 ;; arch-tag: 01e3320a-00c8-44ea-a696-8f8e7354c858 |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1349 ;;; newcomment.el ends here |