Mercurial > emacs
annotate lisp/newcomment.el @ 26721:13132a2907aa
*** empty log message ***
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Mon, 06 Dec 1999 13:20:39 +0000 |
parents | 9979145a424e |
children | 5a4671b4895c |
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 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
3 ;; Copyright (C) 1999 Stefan Monnier <monnier@cs.yale.edu> |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
4 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
5 ;; Author: Stefan Monnier <monnier@cs.yale.edu> |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
6 ;; Keywords: comment uncomment |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
7 ;; Version: $Name: $ |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
8 ;; Revision: $Id: newcomment.el,v 1.4 1999/11/29 01:31:47 monnier Exp $ |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
9 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
10 ;; This program is free software; you can redistribute it and/or modify |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
11 ;; it under the terms of the GNU General Public License as published by |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
12 ;; the Free Software Foundation; either version 2 of the License, or |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
13 ;; (at your option) any later version. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
14 ;; |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
15 ;; This program is distributed in the hope that it will be useful, |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
18 ;; GNU General Public License for more details. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
19 ;; |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
20 ;; You should have received a copy of the GNU General Public License |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
21 ;; along with this program; if not, write to the Free Software |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
22 ;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
23 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
24 ;;; Commentary: |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
25 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
26 ;;; History: |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
27 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
28 ;;; Bugs: |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
29 |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
30 ;; - 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
|
31 ;; if the corresponding closing marker happens to be right. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
32 ;; - C-u C-u comment-region in TeXinfo generates bogus comments @ccccc@ |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
33 ;; - removal of comment-continue does not necesarily work because the |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
34 ;; continuation marker could have a leading space that turned into a tab |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
35 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
36 ;;; Todo: |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
37 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
38 ;; - extract comment data from the syntax-table |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
39 ;; - maybe do the opposite as well (set the syntax-table from other data) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
40 ;; - customizable auto-fill of comments |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
41 ;; - uncomment-region with a numeric argument |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
42 ;; - uncomment-region with a consp (for blocks) or somehow make the |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
43 ;; deletion of continuation markers less dangerous |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
44 ;; - drop block-comment-<foo> unless it's really used |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
45 ;; - uncomment-region un a part of a comment |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
46 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
47 ;;; Problems: |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
48 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
49 ;; - comment padding: (= comment-start "[- ") can either mean that |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
50 ;; the syntax of a comment-start is "[-" plus " " of padding |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
51 ;; (as is the case for C) or that the space is strictly required |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
52 ;; as is the case for TeXinfo. |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
53 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
54 ;;; Code: |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
55 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
56 (eval-when-compile (require 'cl)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
57 |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
58 (defcustom comment-use-syntax 'maybe |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
59 "Non-nil if syntax-tables can be used instead of regexps.") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
60 |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
61 (defcustom comment-column 32 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
62 "*Column to indent right-margin comments to. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
63 Setting this variable automatically makes it local to the current buffer. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
64 Each mode establishes a different default value for this variable; you |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
65 can set the value for a particular mode using that mode's hook." |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
66 :type 'integer |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
67 :group 'fill-comments) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
68 (make-variable-buffer-local 'comment-column) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
69 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
70 (defcustom comment-start nil |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
71 "*String to insert to start a new comment, or nil if no comment syntax." |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
72 :type '(choice (const :tag "None" nil) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
73 string) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
74 :group 'fill-comments) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
75 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
76 (defcustom comment-start-skip nil |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
77 "*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
|
78 If there are any \\(...\\) pairs, the comment delimiter text is held to begin |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
79 at the place matched by the close of the first pair." |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
80 :type '(choice (const :tag "None" nil) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
81 regexp) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
82 :group 'fill-comments) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
83 (defcustom comment-end-skip nil |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
84 "*Regexp to match the end of a comment plus everything up to its body." |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
85 :type '(choice (const :tag "None" nil) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
86 regexp) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
87 :group 'fill-comments) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
88 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
89 (defcustom comment-end "" |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
90 "*String to insert to end a new comment. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
91 Should be an empty string if comments are terminated by end-of-line." |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
92 :type 'string |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
93 :group 'fill-comments) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
94 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
95 (defvar comment-indent-hook nil |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
96 "Obsolete variable for function to compute desired indentation for a comment. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
97 This function is called with no args with point at the beginning of |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
98 the comment's starting delimiter.") |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
99 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
100 (defvar comment-indent-function |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
101 '(lambda () comment-column) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
102 "Function to compute desired indentation for a comment. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
103 This function is called with no args with point at the beginning of |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
104 the comment's starting delimiter.") |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
105 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
106 (defcustom block-comment-start nil |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
107 "*String to insert to start a new comment on a line by itself. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
108 If nil, use `comment-start' instead. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
109 Note that the regular expression `comment-start-skip' should skip this string |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
110 as well as the `comment-start' string." |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
111 :type '(choice (const :tag "Use comment-start" nil) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
112 string) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
113 :group 'fill-comments) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
114 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
115 (defcustom block-comment-end nil |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
116 "*String to insert to end a new comment on a line by itself. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
117 Should be an empty string if comments are terminated by end-of-line. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
118 If nil, use `comment-end' instead." |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
119 :type '(choice (const :tag "Use comment-end" nil) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
120 string) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
121 :group 'fill-comments) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
122 |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
123 (defcustom comment-nested 'maybe |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
124 "Whether the comments can be nested.") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
125 (defcustom comment-continue nil |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
126 "Pair of strings to insert for multiline comments.") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
127 (defcustom comment-add '(0 . 2) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
128 "How many more chars should be inserted by default.") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
129 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
130 (defcustom comment-style 'multi-line |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
131 "*Style to be used for inserting comments." |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
132 :group 'comment |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
133 :type '(choice (const plain) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
134 (const aligned) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
135 (const multi-line) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
136 (const extra-line))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
137 (defconst comment-styles |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
138 '((plain . (nil nil nil)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
139 (aligned . (nil t nil)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
140 (multi-line . (t nil nil)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
141 (extra-line . (t nil t))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
142 "Possible styles.") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
143 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
144 (defvar comment-padding 1 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
145 "Number of spaces `comment-region' puts between comment chars and text. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
146 Can also be a string instead. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
147 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
148 Extra spacing between the comment characters and the comment text |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
149 makes the comment easier to read. Default is 1. Nil means 0.") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
150 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
151 ;;;; |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
152 ;;;; Helpers |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
153 ;;;; |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
154 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
155 (defun comment-string-strip (str before after) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
156 (string-match (concat "\\`" (if before "\\s-*") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
157 "\\(.*?\\)" (if after "\\s-*") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
158 "\\'") str) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
159 (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
|
160 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
161 (defun comment-string-reverse (s) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
162 (comment-string-strip (concat (reverse (string-to-list s))) nil t)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
163 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
164 (defun comment-normalize-vars (&optional noerror) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
165 (if (not comment-start) (or noerror (error "No comment syntax is defined")) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
166 ;; 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
|
167 (when (eq comment-use-syntax 'maybe) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
168 (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
|
169 (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
|
170 (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
|
171 (ce (if (string= "" comment-end) "\n" comment-end))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
172 (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
|
173 (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
|
174 (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
|
175 (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
|
176 (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
|
177 (when (eq comment-nested 'maybe) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
178 (set (make-local-variable 'comment-nested) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
179 (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
|
180 (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
|
181 (ce (if (string= "" comment-end) "\n" comment-end))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
182 (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
|
183 (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
|
184 (insert cs " he " cs " hello " ce " ho " ce) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
185 (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
|
186 (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
|
187 ;; comment-padding |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
188 (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
|
189 (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
|
190 ;; comment markers |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
191 ;;(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
|
192 ;;(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
|
193 ;; comment-continue |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
194 (unless (or (car comment-continue) (string= comment-end "")) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
195 (set (make-local-variable 'comment-continue) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
196 (cons (concat " " (substring comment-start 1)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
197 nil))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
198 (when (and (car comment-continue) (null (cdr comment-continue))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
199 (setcdr comment-continue (comment-string-reverse (car comment-continue)))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
200 ;; comment-skip regexps |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
201 (unless comment-start-skip |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
202 (set (make-local-variable 'comment-start-skip) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
203 (concat "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\)\\(\\s<+\\|" |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
204 (regexp-quote (comment-string-strip comment-start t t)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
205 "+\\)\\s-*"))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
206 (unless comment-end-skip |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
207 (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
|
208 (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
|
209 (set (make-local-variable 'comment-end-skip) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
210 (concat "\\s-*\\(\\s>" (if comment-nested "+" "") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
211 "\\|" (regexp-quote (substring ce 0 1)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
212 (if (or comment-nested (> (length ce) 1)) "+" "") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
213 (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
|
214 "\\)")))))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
215 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
216 (defmacro until (&rest body) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
217 (let ((retsym (make-symbol "ret"))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
218 `(let (,retsym) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
219 (while (not (setq ,retsym (progn ,@body)))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
220 ,retsym))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
221 (def-edebug-spec until t) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
222 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
223 (defun comment-end-quote-re (str &optional re) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
224 "Make a regexp that matches the (potentially quoted) STR comment-end. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
225 The regexp has one group in it which matches RE right after the |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
226 potential quoting." |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
227 (setq str (comment-string-strip str t t)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
228 (when (and (not comment-nested) (> (length str) 1)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
229 (concat (regexp-quote (substring str 0 1)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
230 "\\\\*\\(" re "\\)" |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
231 (regexp-quote (substring str 1))))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
232 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
233 ;;;; |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
234 ;;;; Navigation |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
235 ;;;; |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
236 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
237 (defun comment-search-forward (&optional limit noerror) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
238 "Find a comment start between the point and LIMIT. |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
239 Moves the point to inside the comment and returns the position of the |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
240 comment-starter. If no comment is found, moves the point to LIMIT |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
241 and raises an error or returns nil of 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
|
242 (if (not 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
|
243 (when (re-search-forward comment-start-skip limit noerror) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
244 (or (match-end 1) (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
|
245 (let ((s (parse-partial-sexp (point) (or limit (point-max)) nil nil nil t))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
246 (if (and (nth 8 s) (not (nth 3 s))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
247 (let ((pt (point)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
248 (start (nth 8 s)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
249 (bol (save-excursion (beginning-of-line) (point))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
250 (end nil)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
251 (while (and (null end) (>= (point) bol)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
252 (if (looking-at comment-start-skip) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
253 (setq 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
|
254 (backward-char))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
255 (goto-char end) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
256 start) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
257 (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
|
258 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
259 (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
|
260 "Find a comment start between LIMIT and point. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
261 Moves the point to inside the comment and returns the position of the |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
262 comment-starter. If no comment is found, moves the point to LIMIT |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
263 and raises an error or returns nil of NOERROR 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
|
264 (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
|
265 (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
|
266 (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
|
267 (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
|
268 (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
|
269 (pt (point))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
270 (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
|
271 (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
|
272 (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
|
273 (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
|
274 (comment-forward) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
275 (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
|
276 (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
|
277 (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
|
278 (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
|
279 cs)))) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
280 |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
281 (defun comment-beginning () |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
282 "Find the beginning of the inclosing comment. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
283 Returns nil if not inside a comment, else moves the point and returns |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
284 the same as `comment-search-forward'." |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
285 (let ((pt (point)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
286 (cs (comment-search-backward nil t))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
287 (save-excursion |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
288 (and cs |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
289 (progn (goto-char cs) (forward-comment 1) (> (point) pt)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
290 cs)))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
291 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
292 (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
|
293 "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
|
294 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
|
295 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
|
296 (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
|
297 (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
|
298 (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
|
299 (while (> n 0) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
300 (skip-syntax-forward " ") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
301 (if (and (looking-at comment-start-skip) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
302 (re-search-forward comment-end-skip nil 'move)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
303 (decf n) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
304 (setq n -1))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
305 (= n 0)))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
306 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
307 (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
|
308 "Move from the end of a comment to the end of its content. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
309 The point is assumed to be right at the end of a comment." |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
310 (if (bolp) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
311 ;; comment-end = "" |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
312 (progn (backward-char) (skip-syntax-backward " ")) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
313 (let ((end (point))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
314 (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
|
315 (save-restriction |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
316 (narrow-to-region (point) end) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
317 (re-search-forward (concat comment-end-skip "\\'")) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
318 (goto-char (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
|
319 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
320 ;;;; |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
321 ;;;; Commands |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
322 ;;;; |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
323 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
324 (defun indent-for-comment (&optional continue) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
325 "Indent this line's comment to comment column, or insert an empty comment. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
326 If CONTINUE is non-nil, use the `comment-continuation' markers if any." |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
327 (interactive "*") |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
328 (let* ((empty (save-excursion (beginning-of-line) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
329 (looking-at "[ \t]*$"))) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
330 (starter (or (and continue (car comment-continue)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
331 (and empty block-comment-start) comment-start)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
332 (ender (or (and continue (car comment-continue) "") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
333 (and empty block-comment-end) comment-end))) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
334 (cond |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
335 ((null starter) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
336 (error "No comment syntax defined")) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
337 (t (let* ((eolpos (save-excursion (end-of-line) (point))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
338 cpos indent begpos) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
339 (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
|
340 (when (setq begpos (comment-search-forward eolpos t)) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
341 (skip-chars-forward |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
342 (concat (buffer-substring (1- (point)) (point)) " \t")) |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
343 (setq cpos (point-marker)) |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
344 (goto-char begpos)) |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
345 (setq begpos (point)) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
346 ;; Compute desired indent. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
347 (if (= (current-column) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
348 (setq indent (if comment-indent-hook |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
349 (funcall comment-indent-hook) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
350 (funcall comment-indent-function)))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
351 (goto-char begpos) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
352 ;; If that's different from current, change it. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
353 (skip-chars-backward " \t") |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
354 (delete-region (point) begpos) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
355 (indent-to indent)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
356 ;; An existing comment? |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
357 (if cpos |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
358 (progn (goto-char cpos) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
359 (set-marker cpos nil)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
360 ;; No, insert one. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
361 (insert starter) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
362 (save-excursion |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
363 (insert ender)))))))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
364 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
365 (defun set-comment-column (arg) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
366 "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
|
367 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
|
368 With just minus as arg, kill any comment on this line. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
369 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
|
370 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
|
371 (interactive "P") |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
372 (cond |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
373 ((eq arg '-) (kill-comment nil)) |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
374 (arg |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
375 (save-excursion |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
376 (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
|
377 (comment-search-backward) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
378 (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
|
379 (goto-char (comment-search-forward)) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
380 (setq comment-column (current-column)) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
381 (message "Comment column set to %d" comment-column)) |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
382 (indent-for-comment)) |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
383 (t (setq comment-column (current-column)) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
384 (message "Comment column set to %d" comment-column)))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
385 |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
386 (defun kill-comment (arg) |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
387 "Kill the comment on this line, if any. |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
388 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
|
389 (interactive "P") |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
390 (let (endc) |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
391 (dotimes (_ (prefix-numeric-value arg)) |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
392 (save-excursion |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
393 (end-of-line) |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
394 (setq endc (point)) |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
395 (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
|
396 (let ((cs (comment-search-forward endc 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
|
397 (when cs |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
398 (goto-char cs) |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
399 (skip-syntax-backward " ") |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
400 (setq cs (point)) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
401 (comment-forward) |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
402 (kill-region cs (if (bolp) (1- (point)) (point))) |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
403 (indent-according-to-mode)))) |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
404 (if arg (forward-line 1))))) |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
405 |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
406 (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
|
407 "Construct a string composed of STR plus `comment-padding'. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
408 It contains N copies of the last non-whitespace chars of STR. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
409 If STR already contains padding, the corresponding amount is |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
410 ignored from `comment-padding'. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
411 N defaults to 1. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
412 It N is 're, a regexp is returned instead, that would match |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
413 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
|
414 (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
|
415 (when (and (stringp str) (not (string= "" str))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
416 (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
|
417 (let ((s (substring str 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
|
418 (pad (concat (match-string 0 str) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
419 (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
|
420 (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
|
421 (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
|
422 (if (symbolp n) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
423 (concat (regexp-quote s) "+" |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
424 (mapconcat (lambda (c) (concat (regexp-quote (string c)) "?")) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
425 pad "")) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
426 (concat s (make-string n (aref str (1- (match-beginning 0)))) pad))))) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
427 |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
428 (defun comment-padleft (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
|
429 "Construct a string composed of `comment-padding' plus STR. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
430 It contains N copies of the last non-whitespace chars of STR. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
431 If STR already contains padding, the corresponding amount is |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
432 ignored from `comment-padding'. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
433 N defaults to 1. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
434 It N is 're, a regexp is returned instead, that would match |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
435 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
|
436 (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
|
437 (when (and (stringp str) (not (string= "" str))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
438 (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
|
439 (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
|
440 (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
|
441 (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
|
442 (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
|
443 (match-string 0 str))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
444 (c (aref 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
|
445 (multi (or comment-nested (string= comment-end "") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
446 (> (length str) (1+ (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
|
447 (if (symbolp n) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
448 (concat "\\s-*" |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
449 (if multi (concat (regexp-quote (string c)) "*")) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
450 (regexp-quote s)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
451 (concat pad (when multi (make-string n c)) 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
|
452 |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
453 (defun uncomment-region (beg end &optional arg) |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
454 "Uncomment each line in the BEG..END region. |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
455 ARG is currently ignored." |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
456 (interactive "*r\nP") |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
457 (comment-normalize-vars) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
458 (if (> beg end) (let (mid) (setq mid beg beg end end mid))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
459 (save-excursion |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
460 (goto-char beg) |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
461 (unless (markerp end) (setq end (copy-marker end))) |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
462 (let ((numarg (prefix-numeric-value arg)) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
463 spt) |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
464 (while (and (< (point) end) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
465 (setq spt (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
|
466 (let* ((ipt (point)) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
467 ;; find the end of the comment |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
468 (ept (progn |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
469 (goto-char spt) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
470 (unless (comment-forward) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
471 (error "Can't find the comment end")) |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
472 (point-marker))) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
473 (block nil) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
474 (end-quote-re (comment-end-quote-re comment-end "\\\\")) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
475 (ccs (car comment-continue)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
476 (srei (comment-padright ccs 're)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
477 (sre (and srei (concat "^\\s-*\\(" srei "\\)")))) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
478 (save-restriction |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
479 (narrow-to-region spt ept) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
480 ;; remove the comment-start |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
481 (goto-char ipt) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
482 (skip-syntax-backward " ") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
483 (when (> (- (point) (point-min) (length comment-start)) 7) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
484 (setq block t)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
485 (when (looking-at (regexp-quote comment-padding)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
486 (goto-char (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
|
487 (when (and sre (looking-at (concat "\\s-*\n\\s-*" srei))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
488 (goto-char (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
|
489 (delete-region (point-min) (point)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
490 |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
491 ;; remove the end-comment (and leading padding and such) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
492 (goto-char (point-max)) (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
|
493 (unless (string-match "\\`\\(\n\\|\\s-\\)*\\'" |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
494 (buffer-substring (point) ept)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
495 (when (and (bolp) (not (bobp))) (backward-char)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
496 (delete-region (point) ept)) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
497 |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
498 ;; unquote any nested end-comment |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
499 (when end-quote-re |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
500 (goto-char (point-min)) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
501 (while (re-search-forward end-quote-re nil t) |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
502 (delete-region (match-beginning 1) (match-end 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
|
503 |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
504 ;; eliminate continuation markers as well |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
505 (let* ((cce (or (cdr comment-continue) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
506 (comment-string-reverse comment-start))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
507 (erei (and block (comment-padleft cce 're))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
508 (ere (and erei (concat "\\(" erei "\\)\\s-*$"))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
509 (re (if (and sre ere) (concat sre "\\|" ere) (or sre ere)))) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
510 (when re |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
511 (goto-char (point-min)) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
512 ;; there can't be a real SRE on the first line. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
513 (when (and sre (looking-at sre)) (goto-char (match-end 0))) |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
514 (while (re-search-forward re 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
|
515 (replace-match "" t t nil (if (match-end 2) 2 1))))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
516 ;; go the the end for the next comment |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
517 (goto-char (point-max)))))))) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
518 |
26645
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
519 (defun comment-make-extra-lines (cs ce ccs cce min-indent max-indent &optional block) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
520 (if block |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
521 (let* ((s (concat cs "a=m" cce "\n" |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
522 (make-string min-indent ? ) ccs)) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
523 (e (concat cce "\n" (make-string min-indent ? ) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
524 ccs "a=m" ce)) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
525 (_ (assert (string-match "\\s-*\\(a=m\\)\\s-*" s))) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
526 (fill (make-string (+ (- max-indent |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
527 min-indent |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
528 (match-beginning 0)) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
529 (- (match-end 0) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
530 (match-end 1))) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
531 (aref s (match-end 0))))) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
532 (setq cs (replace-match fill t t s)) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
533 (assert (string-match "\\s-*\\(a=m\\)\\s-*" e)) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
534 (setq ce (replace-match fill t t e))) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
535 (when (and ce (string-match "\\`\\s-*\\(.*\\S-\\)\\s-*\\'" ce)) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
536 (setq ce (match-string 1 ce))) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
537 (let* ((c (concat ce "a=m" cs)) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
538 (indent (if (string-match "\\(.+\\).*a=m\\(.*\\)\\1" c) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
539 (max (+ min-indent |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
540 (- (match-end 2) (match-beginning 2)) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
541 (- (match-beginning 0))) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
542 0) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
543 min-indent))) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
544 (setq ce (concat cce "\n" (make-string indent ? ) (or ce cs))) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
545 (setq cs (concat cs "\n" (make-string min-indent ? ) ccs)))) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
546 (values cs ce)) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
547 |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
548 (def-edebug-spec comment-with-narrowing t) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
549 (put 'comment-with-narrowing 'lisp-indent-function 2) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
550 (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
|
551 "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
|
552 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
|
553 indentation to be kept as it was before narrowing." |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
554 `(let ((-bindent (save-excursion (goto-char beg) (current-column)))) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
555 (save-restriction |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
556 (narrow-to-region beg end) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
557 (goto-char (point-min)) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
558 (insert (make-string -bindent ? )) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
559 (prog1 |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
560 (progn ,@body) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
561 ;; remove the -bindent |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
562 (save-excursion |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
563 (goto-char (point-min)) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
564 (when (looking-at " *") |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
565 (let ((n (min (- (match-end 0) (match-beginning 0)) -bindent))) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
566 (delete-char n) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
567 (decf -bindent n))) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
568 (end-of-line) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
569 (let ((e (point))) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
570 (beginning-of-line) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
571 (while (and (> -bindent 0) (re-search-forward " +" e t)) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
572 (let ((n (min -bindent (- (match-end 0) (match-beginning 0) 1)))) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
573 (goto-char (match-beginning 0)) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
574 (delete-char n) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
575 (decf -bindent n))))))))) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
576 |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
577 (defun comment-region-internal (beg end cs ce &optional ccs cce block lines) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
578 (assert (< beg end)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
579 (let ((no-empty t)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
580 ;; sanitize ce and cce |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
581 (if (and (stringp ce) (string= "" ce)) (setq ce nil)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
582 (if (and (stringp cce) (string= "" cce)) (setq cce nil)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
583 ;; should we mark empty lines as well ? |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
584 (if (or ccs block lines) (setq no-empty nil)) |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
585 ;; 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
|
586 (when block (unless ce (setq ce (comment-string-reverse cs)))) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
587 ;; continuation defaults to the same |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
588 (if ccs (unless block (setq cce nil)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
589 (setq ccs cs cce ce)) |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
590 |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
591 (save-excursion |
26645
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
592 (goto-char end) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
593 (unless (or ce (eolp)) (insert "\n") (indent-according-to-mode)) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
594 (comment-with-narrowing beg end |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
595 (let ((ce-quote-re (comment-end-quote-re comment-end)) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
596 (min-indent (point-max)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
597 (max-indent 0)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
598 (goto-char (point-min)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
599 ;; loop over all lines to find the needed indentations |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
600 (until |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
601 (unless (looking-at "[ \t]*$") |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
602 (setq min-indent (min min-indent (current-indentation)))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
603 (when ce-quote-re |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
604 (let ((eol (save-excursion (end-of-line) (point)))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
605 (while (re-search-forward ce-quote-re eol 'move) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
606 (incf eol) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
607 (replace-match "\\" t t nil 1)))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
608 (end-of-line) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
609 (setq max-indent (max max-indent (current-column))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
610 (or (eobp) (progn (forward-line) nil))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
611 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
612 ;; inserting ccs can change max-indent by (1- tab-width) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
613 (incf max-indent (+ (max (length cs) (length ccs)) -1 tab-width)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
614 |
26645
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
615 ;; make the leading and trailing lines if requested |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
616 (when lines |
26645
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
617 (multiple-value-setq (cs ce) |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
618 (comment-make-extra-lines |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
619 cs ce ccs cce min-indent max-indent block))) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
620 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
621 (goto-char (point-min)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
622 ;; Loop over all lines from BEG to END. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
623 (until |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
624 (unless (and no-empty (looking-at "[ \t]*$")) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
625 (move-to-column min-indent t) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
626 (insert cs) (setq cs ccs) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
627 (end-of-line) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
628 (if (eobp) (setq cce ce)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
629 (when cce |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
630 (when block (move-to-column max-indent t)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
631 (insert cce))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
632 (end-of-line) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
633 (or (eobp) (progn (forward-line) nil)))))))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
634 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
635 (defun comment-region (beg end &optional arg) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
636 "Comment or uncomment each line in the region. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
637 With just \\[universal-prefix] prefix arg, uncomment each line in region BEG..END. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
638 Numeric prefix arg ARG means use ARG comment characters. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
639 If ARG is negative, delete that many comment characters instead. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
640 Comments are terminated on each line, even for syntax in which newline does |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
641 not end the comment. Blank lines do not get comments. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
642 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
643 The strings used as comment starts are built from |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
644 `comment-start' without trailing spaces and `comment-padding'." |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
645 (interactive "*r\nP") |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
646 (comment-normalize-vars) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
647 (if (> beg end) (let (mid) (setq mid beg beg end end mid))) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
648 (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
|
649 (add (car comment-add)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
650 (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
|
651 (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
|
652 (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
|
653 (multi (nth 0 style))) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
654 (save-excursion |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
655 ;; we use `chars' instead of `syntax' because `\n' might be |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
656 ;; of end-comment syntax rather than of whitespace syntax. |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
657 ;; sanitize BEG and END |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
658 (goto-char beg) (skip-chars-forward " \t\n\r") (beginning-of-line) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
659 (setq beg (max beg (point))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
660 (goto-char end) (skip-chars-backward " \t\n\r") (end-of-line) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
661 (setq end (min end (point))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
662 (if (>= beg end) (error "Nothing to comment")) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
663 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
664 ;; sanitize LINES |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
665 (setq lines |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
666 (and |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
667 lines multi |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
668 (progn (goto-char beg) (beginning-of-line) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
669 (skip-syntax-forward " ") |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
670 (>= (point) beg)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
671 (progn (goto-char end) (end-of-line) (skip-syntax-backward " ") |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
672 (<= (point) end)) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
673 (not (string= "" comment-end)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
674 (progn (goto-char beg) (search-forward "\n" end t))))) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
675 |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
676 ;; C-u C-u makes a full block |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
677 (when (and (consp arg) (>= numarg 16)) |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
678 (setq lines t block t add (or (cdr comment-add) 2)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
679 (setq arg nil numarg 1)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
680 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
681 ;; don't add end-markers just because the user asked for `block' |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
682 (unless (or lines (string= "" comment-end)) (setq block nil)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
683 |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
684 (cond |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
685 ((consp arg) (uncomment-region beg end)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
686 ((< numarg 0) (uncomment-region beg end (- numarg))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
687 (t |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
688 (if (and (null arg) (= (length comment-start) 1)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
689 (setq numarg add) (decf numarg)) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
690 (comment-region-internal |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
691 beg end |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
692 (comment-padright comment-start numarg) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
693 (comment-padleft comment-end numarg) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
694 (if multi (comment-padright (car comment-continue) numarg)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
695 (if multi (comment-padleft (cdr comment-continue) numarg)) |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
696 block |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
697 lines))))) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
698 |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
699 (defun comment-dwim (arg) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
700 "Call the comment command you want. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
701 If the region is active, calls `comment-region' (unless it only consists |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
702 in comments, in which case it calls `uncomment-region'). |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
703 Else, if the current line is empty, insert a comment and indent it. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
704 Else call `indent-for-comment' or `kill-comment' if a prefix ARG is specified." |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
705 (interactive "*P") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
706 (comment-normalize-vars) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
707 (if mark-active |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
708 (let ((beg (min (point) (mark))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
709 (end (max (point) (mark)))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
710 (if (save-excursion ;; check for already commented region |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
711 (goto-char beg) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
712 (comment-forward (point-max)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
713 (<= end (point))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
714 (uncomment-region beg end arg) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
715 (comment-region beg end arg))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
716 (if (save-excursion (beginning-of-line) (not (looking-at "\\s-*$"))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
717 (if arg (kill-comment (and (integerp arg) arg)) (indent-for-comment)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
718 (let ((add (if arg (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
|
719 (if (= (length comment-start) 1) (car comment-add) 0)))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
720 (insert (comment-padright comment-start add)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
721 (save-excursion |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
722 (unless (string= "" comment-end) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
723 (insert (comment-padleft comment-end add))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
724 (indent-according-to-mode)))))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
725 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
726 (defcustom comment-multi-line nil |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
727 "*Non-nil means \\[indent-new-comment-line] should continue same comment |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
728 on new line, with no new terminator or starter. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
729 This is obsolete because you might as well 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
|
730 :type 'boolean |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
731 :group 'fill-comments) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
732 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
733 (defun indent-new-comment-line (&optional soft) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
734 "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
|
735 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
|
736 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
|
737 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
738 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
|
739 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
|
740 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
|
741 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
742 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
|
743 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
|
744 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
745 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
|
746 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
|
747 (interactive) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
748 (comment-normalize-vars t) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
749 (let (comcol comstart) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
750 (skip-chars-backward " \t") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
751 (delete-region (point) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
752 (progn (skip-chars-forward " \t") |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
753 (point))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
754 (if soft (insert-and-inherit ?\n) (newline 1)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
755 (if fill-prefix |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
756 (progn |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
757 (indent-to-left-margin) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
758 (insert-and-inherit fill-prefix)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
759 (unless comment-multi-line |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
760 (save-excursion |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
761 (backward-char) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
762 (if (and comment-start |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
763 (setq comcol (comment-beginning))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
764 ;; The old line has a comment and point was inside the comment. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
765 ;; Set WIN to the pos of the comment-start. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
766 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
767 ;; If comment-start-skip contains a \(...\) pair, |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
768 ;; the real comment delimiter starts at the end of that pair. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
769 (let ((win comcol)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
770 ;; But if the comment is empty, look at preceding lines |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
771 ;; to find one that has a nonempty comment. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
772 ;; (while (and (eolp) (not (bobp)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
773 ;; (let (opoint) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
774 ;; (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
|
775 ;; (setq opoint (point)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
776 ;; (forward-line -1) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
777 ;; (setq win (comment-search-forward opoint t))))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
778 ;; Why do we do that ? -sm |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
779 |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
780 ;; Indent this line like what we found. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
781 (setq comstart (buffer-substring win (point))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
782 (goto-char win) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
783 (setq comcol (current-column)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
784 )))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
785 (if comcol |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
786 (let ((comment-column comcol) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
787 (comment-start comstart)) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
788 ;;(if (not (eolp)) (setq comment-end "")) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
789 (insert-and-inherit ?\n) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
790 (forward-char -1) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
791 (indent-for-comment (cadr (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
|
792 (save-excursion |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
793 (let ((pt (point))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
794 (end-of-line) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
795 (let ((comend (buffer-substring pt (point)))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
796 ;; The 1+ is to make sure we delete the \n inserted above. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
797 (delete-region pt (1+ (point))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
798 (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
|
799 (backward-char) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
800 (insert comend) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
801 (forward-char))))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
802 (indent-according-to-mode))))) |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
803 |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
804 (provide 'newcomment) |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
805 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
806 ;;; Change Log: |
26645
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
807 ;; $Log: newcomment.el,v $ |
26663
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
808 ;; Revision 1.4 1999/11/29 01:31:47 monnier |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
809 ;; (comment-find): New function. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
810 ;; (indent-for-comment, set-comment-column, kill-comment): use it. |
9979145a424e
(comment-style(s)): Replaces comment-extra-lines (and comment-multi-line).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26647
diff
changeset
|
811 ;; |
26647
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
812 ;; Revision 1.3 1999/11/29 00:49:18 monnier |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
813 ;; (kill-comment): Fixed by rewriting it with syntax-tables rather than regexps |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
814 ;; (comment-normalize-vars): Set default (cdr comment-continue) |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
815 ;; (comment-end-quote-re): new function taken out of `comment-region-internal' |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
816 ;; (uncomment-region): Rewritten using syntax-tables. Also unquotes |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
817 ;; nested comment-ends and eliminates continuation markers. |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
818 ;; (comment-region-internal): Don't create a default for cce. |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
819 ;; Use `comment-end-quote-re'. |
b00a81cd0f6e
(comment-find): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26646
diff
changeset
|
820 ;; |
26646
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
821 ;; Revision 1.2 1999/11/28 21:33:55 monnier |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
822 ;; (comment-make-extra-lines): Moved out of comment-region-internal. |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
823 ;; (comment-with-narrowing): New macro. Provides a way to preserve |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
824 ;; indentation inside narrowing. |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
825 ;; (comment-region-internal): Add "\n" to close the comment if necessary. |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
826 ;; Correctly handle commenting-out when BEG is not bolp. |
0d447856a2f7
(kill-comment): Fixed by rewriting it with syntax-tables rather than regexps
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26645
diff
changeset
|
827 ;; |
26645
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
828 ;; Revision 1.1 1999/11/28 18:51:06 monnier |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
829 ;; First "working" version: |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
830 ;; - uncomment-region doesn't work for some unknown reason |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
831 ;; - comment-multi-line allows the use of multi line comments |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
832 ;; - comment-extra-lines allows yet another style choice |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
833 ;; - comment-add allows to default to `;;' |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
834 ;; - comment-region on a comment calls uncomment-region |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
835 ;; - C-u C-u comment-region aligns comment end markers |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
836 ;; - C-u C-u C-u comment-region puts the comment inside a rectangle |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
837 ;; - comment-region will try to quote coment-end markers inside the region |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
838 ;; - comment-start markers are placed at the indentation level |
39f87d842e57
(comment-make-extra-lines): Moved out of comment-region-internal.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26640
diff
changeset
|
839 ;; |
26640
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
840 |
f95236e53857
First "working" version:
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
841 ;;; newcomment.el ends here |