diff options
| author | Joakim Verona | 2011-10-15 23:07:46 +0200 |
|---|---|---|
| committer | Joakim Verona | 2011-10-15 23:07:46 +0200 |
| commit | 38ea27d5ef38b273942e90a095509883320d5c0b (patch) | |
| tree | 287f8e5419dd385ee5d2cdd24d694f1b2bb2179f | |
| parent | e1745b4659af41901c02b6320708c5497d9103f9 (diff) | |
| parent | 21fedf28e5c59fd17e846f4b8abcbb223ae5ed90 (diff) | |
| download | emacs-38ea27d5ef38b273942e90a095509883320d5c0b.tar.gz emacs-38ea27d5ef38b273942e90a095509883320d5c0b.zip | |
upstream
| -rw-r--r-- | admin/FOR-RELEASE | 12 | ||||
| -rw-r--r-- | doc/emacs/ChangeLog | 10 | ||||
| -rw-r--r-- | doc/emacs/display.texi | 139 | ||||
| -rw-r--r-- | doc/emacs/killing.texi | 6 | ||||
| -rw-r--r-- | doc/emacs/regs.texi | 35 | ||||
| -rw-r--r-- | etc/NEWS | 2 | ||||
| -rw-r--r-- | lisp/ChangeLog | 29 | ||||
| -rw-r--r-- | lisp/emacs-lisp/ert.el | 41 | ||||
| -rw-r--r-- | lisp/mail/sendmail.el | 39 | ||||
| -rw-r--r-- | lisp/mouse.el | 6 | ||||
| -rw-r--r-- | lisp/mpc.el | 6 | ||||
| -rw-r--r-- | lisp/net/network-stream.el | 19 | ||||
| -rw-r--r-- | lisp/pcmpl-unix.el | 2 | ||||
| -rw-r--r-- | src/ChangeLog | 41 | ||||
| -rw-r--r-- | src/window.c | 81 | ||||
| -rw-r--r-- | src/xterm.c | 9 | ||||
| -rw-r--r-- | test/ChangeLog | 4 | ||||
| -rw-r--r-- | test/automated/f90.el | 158 |
18 files changed, 433 insertions, 206 deletions
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE index 4481d8cd93b..26e3de63808 100644 --- a/admin/FOR-RELEASE +++ b/admin/FOR-RELEASE | |||
| @@ -152,7 +152,7 @@ abbrevs.texi | |||
| 152 | ack.texi | 152 | ack.texi |
| 153 | anti.texi | 153 | anti.texi |
| 154 | arevert-xtra.texi | 154 | arevert-xtra.texi |
| 155 | basic.texi | 155 | basic.texi cyd |
| 156 | buffers.texi | 156 | buffers.texi |
| 157 | building.texi | 157 | building.texi |
| 158 | calendar.texi | 158 | calendar.texi |
| @@ -172,23 +172,23 @@ fixit.texi | |||
| 172 | fortran-xtra.texi | 172 | fortran-xtra.texi |
| 173 | frames.texi | 173 | frames.texi |
| 174 | glossary.texi | 174 | glossary.texi |
| 175 | help.texi | 175 | help.texi cyd |
| 176 | indent.texi | 176 | indent.texi |
| 177 | killing.texi | 177 | killing.texi cyd |
| 178 | kmacro.texi | 178 | kmacro.texi |
| 179 | macos.texi | 179 | macos.texi |
| 180 | maintaining.texi | 180 | maintaining.texi |
| 181 | major.texi | 181 | major.texi |
| 182 | mark.texi | 182 | mark.texi cyd |
| 183 | mini.texi | 183 | mini.texi |
| 184 | misc.texi | 184 | misc.texi |
| 185 | msdog.texi | 185 | msdog.texi |
| 186 | msdog-xtra.texi | 186 | msdog-xtra.texi |
| 187 | mule.texi | 187 | mule.texi |
| 188 | m-x.texi | 188 | m-x.texi cyd |
| 189 | picture-xtra.texi | 189 | picture-xtra.texi |
| 190 | programs.texi | 190 | programs.texi |
| 191 | regs.texi | 191 | regs.texi cyd |
| 192 | rmail.texi | 192 | rmail.texi |
| 193 | screen.texi cyd | 193 | screen.texi cyd |
| 194 | search.texi | 194 | search.texi |
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 3fa8eece141..a39b703b4dd 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog | |||
| @@ -1,3 +1,13 @@ | |||
| 1 | 2011-10-15 Chong Yidong <cyd@stupidchicken.com> | ||
| 2 | |||
| 3 | * display.texi (Scrolling): Tweak explanation of scroll direction. | ||
| 4 | (View Mode): Add index entries. | ||
| 5 | |||
| 6 | * killing.texi (Deletion): Document negative prefix arg to M-SPC. | ||
| 7 | |||
| 8 | * regs.texi (Text Registers): C-x r i does not activate the mark. | ||
| 9 | (Bookmarks): Document new default bookmark location. | ||
| 10 | |||
| 1 | 2011-10-13 Chong Yidong <cyd@stupidchicken.com> | 11 | 2011-10-13 Chong Yidong <cyd@stupidchicken.com> |
| 2 | 12 | ||
| 3 | * killing.texi (Deletion): Add xref to Using Region. Document | 13 | * killing.texi (Deletion): Add xref to Using Region. Document |
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index 2df31c88c1e..d2f49c62e4a 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi | |||
| @@ -6,10 +6,10 @@ | |||
| 6 | @node Display, Search, Registers, Top | 6 | @node Display, Search, Registers, Top |
| 7 | @chapter Controlling the Display | 7 | @chapter Controlling the Display |
| 8 | 8 | ||
| 9 | Since only part of a large buffer fits in the window, Emacs tries to | 9 | Since only part of a large buffer fits in the window, Emacs has to |
| 10 | show a part that is likely to be interesting. Display-control | 10 | show only a part of it. This chapter describes commands and variables |
| 11 | commands and variables allow you to specify which part of the text you | 11 | that let you specify which part of the text you want to see, and how |
| 12 | want to see, and how to display it. | 12 | the text is displayed. |
| 13 | 13 | ||
| 14 | @menu | 14 | @menu |
| 15 | * Scrolling:: Commands to move text up and down in a window. | 15 | * Scrolling:: Commands to move text up and down in a window. |
| @@ -49,7 +49,14 @@ portion of the buffer is displayed. | |||
| 49 | displayed in the window; equivalently, it moves the buffer text | 49 | displayed in the window; equivalently, it moves the buffer text |
| 50 | upwards relative to the window. Scrolling ``backward'' or ``down'' | 50 | upwards relative to the window. Scrolling ``backward'' or ``down'' |
| 51 | moves the displayed portion backwards, and moves the text downwards | 51 | moves the displayed portion backwards, and moves the text downwards |
| 52 | relative to the window. | 52 | relative to the window. In Emacs, scrolling ``up'' or ``down'' refers |
| 53 | to the direction that the text moves in the window, @emph{not} the | ||
| 54 | direction that the window moves relative to the text; this terminology | ||
| 55 | was taken up by Emacs before the modern meaning of ``scrolling up'' | ||
| 56 | and ``scrolling down'' became widely adopted. Hence the strange | ||
| 57 | result that @key{PageDown} scrolls ``up'' in the Emacs sense. In this | ||
| 58 | manual, we refer to scrolling ``foward'' and ``backward'' where | ||
| 59 | possible, in order to minimize confusion. | ||
| 53 | 60 | ||
| 54 | The portion of a buffer displayed in a window always contains point. | 61 | The portion of a buffer displayed in a window always contains point. |
| 55 | If you move point past the bottom or top of the window, scrolling | 62 | If you move point past the bottom or top of the window, scrolling |
| @@ -60,7 +67,7 @@ Scrolling}). You can also scroll explicitly with these commands: | |||
| 60 | @item C-l | 67 | @item C-l |
| 61 | Scroll the selected window so that the current line is the center-most | 68 | Scroll the selected window so that the current line is the center-most |
| 62 | text line; on subsequent consecutive invocations, make the current | 69 | text line; on subsequent consecutive invocations, make the current |
| 63 | line the top-most line, the bottom-most line, and so forth in cyclic | 70 | line the top-most line, the bottom-most line, and so on in cyclic |
| 64 | order; also, maybe redisplay the screen (@code{recenter-top-bottom}). | 71 | order; also, maybe redisplay the screen (@code{recenter-top-bottom}). |
| 65 | @item C-v | 72 | @item C-v |
| 66 | @itemx @key{next} | 73 | @itemx @key{next} |
| @@ -85,29 +92,29 @@ possible. | |||
| 85 | Typing @kbd{C-l} twice in a row (@kbd{C-l C-l}) scrolls the window | 92 | Typing @kbd{C-l} twice in a row (@kbd{C-l C-l}) scrolls the window |
| 86 | so that point is on the topmost screen line. Typing a third @kbd{C-l} | 93 | so that point is on the topmost screen line. Typing a third @kbd{C-l} |
| 87 | scrolls the window so that point is on the bottom-most screen line. | 94 | scrolls the window so that point is on the bottom-most screen line. |
| 88 | Each successive @kbd{C-l} cycles through these three screen positions. | 95 | Each successive @kbd{C-l} cycles through these three positions. |
| 89 | 96 | ||
| 90 | @vindex recenter-positions | 97 | @vindex recenter-positions |
| 91 | You can change the cycling order by customizing the list variable | 98 | You can change the cycling order by customizing the list variable |
| 92 | @code{recenter-positions}. Each list element should be the symbol | 99 | @code{recenter-positions}. Each list element should be the symbol |
| 93 | @code{top}, @code{middle}, or @code{bottom}, or a number; an integer | 100 | @code{top}, @code{middle}, or @code{bottom}, or a number; an integer |
| 94 | number means to move the line to the specified screen line, while a | 101 | means to move the line to the specified screen line, while a |
| 95 | floating-point number between 0.0 and 1.0 specifies a percentage of | 102 | floating-point number between 0.0 and 1.0 specifies a percentage of |
| 96 | the screen space from the top. The default, @code{(middle top | 103 | the screen space from the top of the window. The default, |
| 97 | bottom)}, is the cycling order described above. Furthermore, if you | 104 | @code{(middle top bottom)}, is the cycling order described above. |
| 98 | change the variable @code{scroll-margin} to a non-zero value @var{n}, | 105 | Furthermore, if you change the variable @code{scroll-margin} to a |
| 99 | @kbd{C-l} leaves @var{n} screen lines between point and the top or | 106 | non-zero value @var{n}, @kbd{C-l} always leaves at least @var{n} |
| 100 | bottom of the window (@pxref{Auto Scrolling}). | 107 | screen lines between point and the top or bottom of the window |
| 108 | (@pxref{Auto Scrolling}). | ||
| 101 | 109 | ||
| 102 | You can also supply @kbd{C-l} with a prefix argument. With a plain | 110 | You can also supply @kbd{C-l} with a prefix argument. With a plain |
| 103 | prefix argument, @kbd{C-u C-l}, Emacs simply recenters point. With a | 111 | prefix argument, @kbd{C-u C-l}, Emacs simply recenters point. With a |
| 104 | positive argument @var{n}, it scrolls to place point @var{n} lines | 112 | positive argument @var{n}, it scrolls to place point @var{n} lines |
| 105 | down from the top of the window. An argument of zero puts point on | 113 | down from the top of the window. An argument of zero puts point on |
| 106 | the topmost line. A negative argument @var{-n} puts point @var{n} | 114 | the topmost line. A negative argument @var{-n} puts point @var{n} |
| 107 | lines from the bottom of the window. For example, @kbd{C-u - 1 C-l} | 115 | lines from the bottom of the window. When given an argument, |
| 108 | puts point on the bottom line, and @kbd{C-u - 5 C-l} puts it five | 116 | @kbd{C-l} does not clear the screen or cycle through different screen |
| 109 | lines from the bottom. When given an argument, @kbd{C-l} does not | 117 | positions. |
| 110 | clear the screen or cycle through different screen positions. | ||
| 111 | 118 | ||
| 112 | @vindex recenter-redisplay | 119 | @vindex recenter-redisplay |
| 113 | If the variable @code{recenter-redisplay} has a non-@code{nil} | 120 | If the variable @code{recenter-redisplay} has a non-@code{nil} |
| @@ -117,7 +124,7 @@ text-terminal frames only. Redisplaying is useful in case the screen | |||
| 117 | becomes garbled for any reason (@pxref{Screen Garbled}). | 124 | becomes garbled for any reason (@pxref{Screen Garbled}). |
| 118 | 125 | ||
| 119 | @findex recenter | 126 | @findex recenter |
| 120 | The more primitive command @code{recenter} behaves like | 127 | The more primitive command @kbd{M-x recenter} behaves like |
| 121 | @code{recenter-top-bottom}, but does not cycle among screen positions. | 128 | @code{recenter-top-bottom}, but does not cycle among screen positions. |
| 122 | 129 | ||
| 123 | @kindex C-v | 130 | @kindex C-v |
| @@ -128,53 +135,46 @@ becomes garbled for any reason (@pxref{Screen Garbled}). | |||
| 128 | @kindex PageUp | 135 | @kindex PageUp |
| 129 | @findex scroll-up-command | 136 | @findex scroll-up-command |
| 130 | @findex scroll-down-command | 137 | @findex scroll-down-command |
| 131 | The @kbd{C-v} (@code{scroll-up-command}) command scrolls forward by | 138 | @kbd{C-v} (@code{scroll-up-command}) scrolls forward by nearly the |
| 132 | nearly the whole window height. The effect is to take the two lines | 139 | whole window height. The effect is to take the two lines at the |
| 133 | at the bottom of the window and put them at the top, followed by lines | 140 | bottom of the window and put them at the top, followed by lines that |
| 134 | that were not previously visible. If point was in the text that | 141 | were not previously visible. If point was in the text that scrolled |
| 135 | scrolled off the top, it ends up at the new top of the window. | 142 | off the top, it ends up on the window's new topmost line. |
| 136 | 143 | ||
| 137 | Similarly, @kbd{M-v} (@code{scroll-down-command}) scrolls backward. | 144 | Similarly, @kbd{M-v} (@code{scroll-down-command}) scrolls backward. |
| 138 | 145 | ||
| 146 | We refer to @kbd{C-v} and @kbd{M-v} as @dfn{full-screen scroll | ||
| 147 | commands}. The function key @key{next}, or @key{PageDown}, is | ||
| 148 | equivalent to @kbd{C-v}; the function key @key{prior}, or | ||
| 149 | @key{PageUp}, is equivalent to @kbd{M-v}. | ||
| 150 | |||
| 139 | @vindex next-screen-context-lines | 151 | @vindex next-screen-context-lines |
| 140 | The variable @code{next-screen-context-lines} controls the number of | 152 | The variable @code{next-screen-context-lines} controls the number of |
| 141 | lines of overlap left by @kbd{C-v} or @kbd{M-v}; by default, it is 2. | 153 | lines of overlap left by the full-screen scroll commands; by default, |
| 142 | The function keys @key{next} and @key{prior}, or @key{PageDown} and | 154 | it is 2. You can supply these commands with a numeric prefix argument |
| 143 | @key{PageUp}, are equivalent to @kbd{C-v} and @kbd{M-v} respectively. | ||
| 144 | |||
| 145 | You can supply @kbd{C-v} or @kbd{M-v} with a numeric prefix argument | ||
| 146 | @var{n}. This scrolls the window by @var{n} lines, while attempting | 155 | @var{n}. This scrolls the window by @var{n} lines, while attempting |
| 147 | to leave point unchanged (so that the text and point move up or down | 156 | to leave point unchanged (so that the text and point move up or down |
| 148 | together). @kbd{C-v} with a negative argument is like @kbd{M-v} and | 157 | together). @kbd{C-v} with a negative argument is like @kbd{M-v} and |
| 149 | vice versa. | 158 | vice versa. |
| 150 | 159 | ||
| 151 | The names of scroll commands are based on the direction that the | 160 | @vindex scroll-error-top-bottom |
| 152 | text moves in the window. For instance, @code{scroll-up-command} | 161 | By default, the full-screen scroll commands signal an error (by |
| 153 | moves the text upward on the screen. The keys @key{PageUp} and | 162 | beeping or flashing the screen) if no more scrolling is possible, |
| 154 | @key{PageDown} derive their names and customary meanings from a | 163 | because the window has reached the beginning or end of the buffer. If |
| 155 | different convention that developed elsewhere; hence the strange | 164 | you change the variable @code{scroll-error-top-bottom} to @code{t}, |
| 156 | result that @key{PageDown} runs @code{scroll-up-command}. | 165 | Emacs instead moves point to the farthest possible position. If point |
| 166 | is already there, the command signals an error. | ||
| 157 | 167 | ||
| 158 | @vindex scroll-preserve-screen-position | 168 | @vindex scroll-preserve-screen-position |
| 159 | Some users like the full-screen scroll commands to keep point at the | 169 | Some users like scroll commands to keep point at the same screen |
| 160 | same screen position. This behavior is convenient because scrolling | 170 | position. Then, scrolling back to the same screen also conveniently |
| 161 | back to the same screen also returns point to its original position. | 171 | returns point to its original position. You can enable this via the |
| 162 | You can enable this via the variable | 172 | variable @code{scroll-preserve-screen-position}. If the value is |
| 163 | @code{scroll-preserve-screen-position}. If the value is @code{t}, | 173 | @code{t}, Emacs adjusts point to keep it at the same vertical position |
| 164 | Emacs adjusts point to keep it at the same vertical position within | 174 | within the window, rather than the window edge, whenever a scroll |
| 165 | the window, rather than the window edge, whenever a scroll command | 175 | command moves it off the window. With any other non-@code{nil} value, |
| 166 | moves it off the window. With any other non-@code{nil} value, Emacs | 176 | Emacs adjusts point this way even if the scroll command leaves point |
| 167 | adjusts point this way even if the scroll command leaves point in the | 177 | in the window. |
| 168 | window. | ||
| 169 | |||
| 170 | @vindex scroll-error-top-bottom | ||
| 171 | By default, @code{scroll-up-command} and @code{scroll-down-command} | ||
| 172 | signal an error (by beeping or flashing the screen) if no more | ||
| 173 | scrolling is possible, because the window has reached the beginning or | ||
| 174 | end of the buffer. If you change the variable | ||
| 175 | @code{scroll-error-top-bottom} to @code{t}, Emacs instead moves point | ||
| 176 | to the farthest possible position. If point is already there, the | ||
| 177 | command signals an error. | ||
| 178 | 178 | ||
| 179 | @vindex scroll-up | 179 | @vindex scroll-up |
| 180 | @vindex scroll-down | 180 | @vindex scroll-down |
| @@ -185,9 +185,9 @@ Emacs 24, these were the default commands for scrolling up and down. | |||
| 185 | 185 | ||
| 186 | @kindex C-M-l | 186 | @kindex C-M-l |
| 187 | @findex reposition-window | 187 | @findex reposition-window |
| 188 | The @kbd{C-M-l} command (@code{reposition-window}) scrolls the current | 188 | @kbd{C-M-l} (@code{reposition-window}) scrolls the current window |
| 189 | window heuristically in a way designed to get useful information onto | 189 | heuristically in a way designed to get useful information onto the |
| 190 | the screen. For example, in a Lisp file, this command tries to get the | 190 | screen. For example, in a Lisp file, this command tries to get the |
| 191 | entire current defun onto the screen if possible. | 191 | entire current defun onto the screen if possible. |
| 192 | 192 | ||
| 193 | @node Auto Scrolling | 193 | @node Auto Scrolling |
| @@ -225,16 +225,15 @@ how aggressively it scrolls by setting the variables | |||
| 225 | The value of @code{scroll-up-aggressively} should be either | 225 | The value of @code{scroll-up-aggressively} should be either |
| 226 | @code{nil}, or a fraction @var{f} between 0 and 1. A fraction | 226 | @code{nil}, or a fraction @var{f} between 0 and 1. A fraction |
| 227 | specifies where on the screen to put point when scrolling upward, | 227 | specifies where on the screen to put point when scrolling upward, |
| 228 | i.e.@: when point moves forward in the buffer, and therefore text | 228 | i.e. forward. When point goes off the window end, the new start |
| 229 | scrolls up in the window. When point goes off the window end, the new | 229 | position is chosen to put point @var{f} parts of the window height |
| 230 | start position is chosen to put point @var{f} parts of the window | 230 | from the bottom. Thus, larger @var{f} means more aggressive |
| 231 | height from the bottom. Thus, larger @var{f} means more aggressive | ||
| 232 | scrolling: more new text is brought into view. The default value, | 231 | scrolling: more new text is brought into view. The default value, |
| 233 | @code{nil}, is equivalent to 0.5. | 232 | @code{nil}, is equivalent to 0.5. |
| 234 | 233 | ||
| 235 | Likewise, @code{scroll-down-aggressively} is used for scrolling | 234 | Likewise, @code{scroll-down-aggressively} is used for scrolling |
| 236 | down, i.e.@: moving point back in the buffer. The value specifies how | 235 | down, i.e. backward. The value specifies how far point should be |
| 237 | far point should be placed from the top of the window; thus, as with | 236 | placed from the top of the window; thus, as with |
| 238 | @code{scroll-up-aggressively}, a larger value is more aggressive. | 237 | @code{scroll-up-aggressively}, a larger value is more aggressive. |
| 239 | 238 | ||
| 240 | These two variables are ignored if either @code{scroll-step} or | 239 | These two variables are ignored if either @code{scroll-step} or |
| @@ -261,7 +260,7 @@ scrolling whenever point moves off the left or right edge of the | |||
| 261 | screen. To disable automatic horizontal scrolling, set the variable | 260 | screen. To disable automatic horizontal scrolling, set the variable |
| 262 | @code{auto-hscroll-mode} to @code{nil}. Note that when the automatic | 261 | @code{auto-hscroll-mode} to @code{nil}. Note that when the automatic |
| 263 | horizontal scrolling is turned off, if point moves off the edge of the | 262 | horizontal scrolling is turned off, if point moves off the edge of the |
| 264 | screen, the cursor disappears to indicate that. (On text-mode | 263 | screen, the cursor disappears to indicate that. (On text-only |
| 265 | terminals, the cursor is left at the edge instead.) | 264 | terminals, the cursor is left at the edge instead.) |
| 266 | 265 | ||
| 267 | @vindex hscroll-margin | 266 | @vindex hscroll-margin |
| @@ -389,6 +388,9 @@ it. @xref{Disabling}. | |||
| 389 | @cindex View mode | 388 | @cindex View mode |
| 390 | @cindex mode, View | 389 | @cindex mode, View |
| 391 | 390 | ||
| 391 | @kindex s @r{(View mode)} | ||
| 392 | @kindex SPC @r{(View mode)} | ||
| 393 | @kindex DEL @r{(View mode)} | ||
| 392 | View mode is a minor mode that lets you scan a buffer by sequential | 394 | View mode is a minor mode that lets you scan a buffer by sequential |
| 393 | screenfuls. It provides commands for scrolling through the buffer | 395 | screenfuls. It provides commands for scrolling through the buffer |
| 394 | conveniently but not for changing it. Apart from the usual Emacs | 396 | conveniently but not for changing it. Apart from the usual Emacs |
| @@ -396,9 +398,14 @@ cursor motion commands, you can type @key{SPC} to scroll forward one | |||
| 396 | windowful, @key{DEL} to scroll backward, and @kbd{s} to start an | 398 | windowful, @key{DEL} to scroll backward, and @kbd{s} to start an |
| 397 | incremental search. | 399 | incremental search. |
| 398 | 400 | ||
| 399 | Typing @kbd{q} disables View mode, and switches back to the buffer | 401 | @kindex q @r{(View mode)} |
| 400 | and position before View mode was enabled. Alternatively, typing | 402 | @kindex e @r{(View mode)} |
| 401 | @kbd{e} disables View mode, keeping the current buffer and position. | 403 | @findex View-quit |
| 404 | @findex View-exit | ||
| 405 | Typing @kbd{q} (@code{View-quit}) disables View mode, and switches | ||
| 406 | back to the buffer and position before View mode was enabled. Typing | ||
| 407 | @kbd{e} (@code{View-exit}) disables View mode, keeping the current | ||
| 408 | buffer and position. | ||
| 402 | 409 | ||
| 403 | @findex view-buffer | 410 | @findex view-buffer |
| 404 | @findex view-file | 411 | @findex view-file |
diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi index 493316daa52..8689e9c8324 100644 --- a/doc/emacs/killing.texi +++ b/doc/emacs/killing.texi | |||
| @@ -118,10 +118,12 @@ characters: spaces, tabs and newlines. @kbd{M-\} | |||
| 118 | (@code{delete-horizontal-space}) deletes all the spaces and tab | 118 | (@code{delete-horizontal-space}) deletes all the spaces and tab |
| 119 | characters before and after point. With a prefix argument, this only | 119 | characters before and after point. With a prefix argument, this only |
| 120 | deletes spaces and tab characters before point. @kbd{M-@key{SPC}} | 120 | deletes spaces and tab characters before point. @kbd{M-@key{SPC}} |
| 121 | (@code{just-one-space}) does likewise but leaves a single space after | 121 | (@code{just-one-space}) does likewise but leaves a single space before |
| 122 | point, regardless of the number of spaces that existed previously | 122 | point, regardless of the number of spaces that existed previously |
| 123 | (even if there were none before). With a numeric argument @var{n}, it | 123 | (even if there were none before). With a numeric argument @var{n}, it |
| 124 | leaves @var{n} spaces after point. | 124 | leaves @var{n} spaces before point if @var{n} is positive; if @var{n} |
| 125 | is negative, it deletes newlines in addition to spaces and tabs, | ||
| 126 | leaving a single space before point. | ||
| 125 | 127 | ||
| 126 | @kbd{C-x C-o} (@code{delete-blank-lines}) deletes all blank lines | 128 | @kbd{C-x C-o} (@code{delete-blank-lines}) deletes all blank lines |
| 127 | after the current line. If the current line is blank, it deletes all | 129 | after the current line. If the current line is blank, it deletes all |
diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi index b4b9fd252e1..41a807375a9 100644 --- a/doc/emacs/regs.texi +++ b/doc/emacs/regs.texi | |||
| @@ -30,9 +30,9 @@ Display a description of what register @var{r} contains. | |||
| 30 | @end table | 30 | @end table |
| 31 | 31 | ||
| 32 | @dfn{Bookmarks} record files and positions in them, so you can | 32 | @dfn{Bookmarks} record files and positions in them, so you can |
| 33 | return to those positions when you look at the file again. | 33 | return to those positions when you look at the file again. Bookmarks |
| 34 | Bookmarks are similar enough in spirit to registers that they | 34 | are similar in spirit to registers, so they are also documented in |
| 35 | seem to belong in this chapter. | 35 | this chapter. |
| 36 | 36 | ||
| 37 | @menu | 37 | @menu |
| 38 | * Position Registers:: Saving positions in registers. | 38 | * Position Registers:: Saving positions in registers. |
| @@ -119,9 +119,9 @@ the region text to the text in the register instead of | |||
| 119 | @kindex C-x r i | 119 | @kindex C-x r i |
| 120 | @findex insert-register | 120 | @findex insert-register |
| 121 | @kbd{C-x r i @var{r}} inserts in the buffer the text from register | 121 | @kbd{C-x r i @var{r}} inserts in the buffer the text from register |
| 122 | @var{r}. Normally it leaves point before the text and places the mark | 122 | @var{r}. Normally it leaves point before the text and sets the mark |
| 123 | after, but with a numeric argument (@kbd{C-u}) it puts point after the | 123 | after, without activating it. With a numeric argument, it instead |
| 124 | text and the mark before. | 124 | puts point after the text and the mark before. |
| 125 | 125 | ||
| 126 | @node Rectangle Registers | 126 | @node Rectangle Registers |
| 127 | @section Saving Rectangles in Registers | 127 | @section Saving Rectangles in Registers |
| @@ -143,12 +143,9 @@ Insert the rectangle stored in register @var{r} (if it contains a | |||
| 143 | rectangle) (@code{insert-register}). | 143 | rectangle) (@code{insert-register}). |
| 144 | @end table | 144 | @end table |
| 145 | 145 | ||
| 146 | The @kbd{C-x r i @var{r}} command inserts a text string if the | 146 | The @kbd{C-x r i @var{r}} (@code{insert-register}) command, |
| 147 | register contains one, and inserts a rectangle if the register contains | 147 | previously documented in @ref{Text Registers}, inserts a rectangle |
| 148 | one. | 148 | rather than a a text string, if the register contains a rectangle. |
| 149 | |||
| 150 | See also the command @code{sort-columns}, which you can think of | ||
| 151 | as sorting a rectangle. @xref{Sorting}. | ||
| 152 | 149 | ||
| 153 | @node Configuration Registers | 150 | @node Configuration Registers |
| 154 | @section Saving Window Configurations in Registers | 151 | @section Saving Window Configurations in Registers |
| @@ -281,12 +278,14 @@ you can use it to edit your bookmark definitions or annotate the | |||
| 281 | bookmarks. Type @kbd{C-h m} in the bookmark buffer for more | 278 | bookmarks. Type @kbd{C-h m} in the bookmark buffer for more |
| 282 | information about its special editing commands. | 279 | information about its special editing commands. |
| 283 | 280 | ||
| 284 | When you kill Emacs, Emacs offers to save your bookmark values in your | 281 | When you kill Emacs, Emacs offers to save your bookmark values, if |
| 285 | default bookmark file, @file{~/.emacs.bmk}, if you have changed any | 282 | you have changed any bookmark values. You can also save the bookmarks |
| 286 | bookmark values. You can also save the bookmarks at any time with the | 283 | at any time with the @kbd{M-x bookmark-save} command. Bookmarks are |
| 287 | @kbd{M-x bookmark-save} command. The bookmark commands load your | 284 | saved to the file @file{~/.emacs.d/bookmarks} (for compatibility with |
| 288 | default bookmark file automatically. This saving and loading is how | 285 | older versions of Emacs, if you have a file named @file{~/.emacs.bmk}, |
| 289 | bookmarks persist from one Emacs session to the next. | 286 | that is used instead). The bookmark commands load your default |
| 287 | bookmark file automatically. This saving and loading is how bookmarks | ||
| 288 | persist from one Emacs session to the next. | ||
| 290 | 289 | ||
| 291 | @vindex bookmark-save-flag | 290 | @vindex bookmark-save-flag |
| 292 | If you set the variable @code{bookmark-save-flag} to 1, each command | 291 | If you set the variable @code{bookmark-save-flag} to 1, each command |
| @@ -251,6 +251,7 @@ highlight strings that indicate failure, caution or successful operation. | |||
| 251 | with Xft. To change font, use the X resource font, for example: | 251 | with Xft. To change font, use the X resource font, for example: |
| 252 | Emacs.pane.menubar.font: Courier-12 | 252 | Emacs.pane.menubar.font: Courier-12 |
| 253 | 253 | ||
| 254 | +++ | ||
| 254 | ** On graphical displays, the mode-line no longer ends in dashes. | 255 | ** On graphical displays, the mode-line no longer ends in dashes. |
| 255 | Also, the first dash (which does not indicate anything) is just | 256 | Also, the first dash (which does not indicate anything) is just |
| 256 | displayed as a space. | 257 | displayed as a space. |
| @@ -455,6 +456,7 @@ bound to M-=, which shows the number of lines, words, and characters. | |||
| 455 | 456 | ||
| 456 | ** The default value of `backup-by-copying-when-mismatch' is now t. | 457 | ** The default value of `backup-by-copying-when-mismatch' is now t. |
| 457 | 458 | ||
| 459 | +++ | ||
| 458 | ** The command `just-one-space' (M-SPC), if given a negative argument, | 460 | ** The command `just-one-space' (M-SPC), if given a negative argument, |
| 459 | also deletes newlines around point. | 461 | also deletes newlines around point. |
| 460 | 462 | ||
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 68a85a43387..abae693d0c8 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,32 @@ | |||
| 1 | 2011-10-15 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * emacs-lisp/ert.el (ert--explain-equal-rec, ert-select-tests): | ||
| 4 | Doc fixes. | ||
| 5 | |||
| 6 | 2011-10-15 Chong Yidong <cyd@stupidchicken.com> | ||
| 7 | |||
| 8 | * net/network-stream.el (network-stream-open-starttls): Improve | ||
| 9 | detection of failure due to lack of TLS support. | ||
| 10 | |||
| 11 | * mail/sendmail.el (sendmail-query-once): Tweak prompt message, | ||
| 12 | putting the input text in front and in bold. | ||
| 13 | |||
| 14 | 2011-10-14 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 15 | |||
| 16 | * pcmpl-unix.el (pcomplete/ssh): SSH does allow ganging. | ||
| 17 | |||
| 18 | * mpc.el (mpc-songs-jump-to): Don't burp if the user clicks in an | ||
| 19 | empty buffer. | ||
| 20 | |||
| 21 | * mouse.el (mouse-drag-mode-line-1): Modify the end-event we pushed on | ||
| 22 | unread-command-events rather than pushing yet-another event. | ||
| 23 | |||
| 24 | 2011-10-14 Eli Zaretskii <eliz@gnu.org> | ||
| 25 | |||
| 26 | * mail/sendmail.el (sendmail-query-once): Improve the wording of | ||
| 27 | the explanation of the possible choices. Make the options passed | ||
| 28 | to completing-read shorter. | ||
| 29 | |||
| 1 | 2011-10-13 AgustÃn MartÃn Domingo <agustin.martin@hispalinux.es> | 30 | 2011-10-13 AgustÃn MartÃn Domingo <agustin.martin@hispalinux.es> |
| 2 | 31 | ||
| 3 | * textmodes/flyspell.el (flyspell-large-region): Make sure | 32 | * textmodes/flyspell.el (flyspell-large-region): Make sure |
diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el index b2e20843856..2afe42dc070 100644 --- a/lisp/emacs-lisp/ert.el +++ b/lisp/emacs-lisp/ert.el | |||
| @@ -577,8 +577,7 @@ failed." | |||
| 577 | (t x))) | 577 | (t x))) |
| 578 | 578 | ||
| 579 | (defun ert--explain-equal-rec (a b) | 579 | (defun ert--explain-equal-rec (a b) |
| 580 | "Returns a programmer-readable explanation of why A and B are not `equal'. | 580 | "Return a programmer-readable explanation of why A and B are not `equal'. |
| 581 | |||
| 582 | Returns nil if they are." | 581 | Returns nil if they are." |
| 583 | (if (not (equal (type-of a) (type-of b))) | 582 | (if (not (equal (type-of a) (type-of b))) |
| 584 | `(different-types ,a ,b) | 583 | `(different-types ,a ,b) |
| @@ -1020,36 +1019,36 @@ t -- Always matches. | |||
| 1020 | (ert-test-result-type-p result (ert-test-expected-result-type test))) | 1019 | (ert-test-result-type-p result (ert-test-expected-result-type test))) |
| 1021 | 1020 | ||
| 1022 | (defun ert-select-tests (selector universe) | 1021 | (defun ert-select-tests (selector universe) |
| 1023 | "Return the tests that match SELECTOR. | 1022 | "Return a list of tests that match SELECTOR. |
| 1024 | |||
| 1025 | UNIVERSE specifies the set of tests to select from; it should be | ||
| 1026 | a list of tests, or t, which refers to all tests named by symbols | ||
| 1027 | in `obarray'. | ||
| 1028 | 1023 | ||
| 1029 | Returns the set of tests as a list. | 1024 | UNIVERSE specifies the set of tests to select from; it should be a list |
| 1025 | of tests, or t, which refers to all tests named by symbols in `obarray'. | ||
| 1030 | 1026 | ||
| 1031 | Valid selectors: | 1027 | Valid SELECTORs: |
| 1032 | 1028 | ||
| 1033 | nil -- Selects the empty set. | 1029 | nil -- Selects the empty set. |
| 1034 | t -- Selects UNIVERSE. | 1030 | t -- Selects UNIVERSE. |
| 1035 | :new -- Selects all tests that have not been run yet. | 1031 | :new -- Selects all tests that have not been run yet. |
| 1036 | :failed, :passed -- Select tests according to their most recent result. | 1032 | :failed, :passed -- Select tests according to their most recent result. |
| 1037 | :expected, :unexpected -- Select tests according to their most recent result. | 1033 | :expected, :unexpected -- Select tests according to their most recent result. |
| 1038 | a string -- Selects all tests that have a name that matches the string, | 1034 | a string -- A regular expression selecting all tests with matching names. |
| 1039 | a regexp. | 1035 | a test -- (i.e., an object of the ert-test data-type) Selects that test. |
| 1040 | a test -- Selects that test. | ||
| 1041 | a symbol -- Selects the test that the symbol names, errors if none. | 1036 | a symbol -- Selects the test that the symbol names, errors if none. |
| 1042 | \(member TESTS...\) -- Selects TESTS, a list of tests or symbols naming tests. | 1037 | \(member TESTS...) -- Selects the elements of TESTS, a list of tests |
| 1038 | or symbols naming tests. | ||
| 1043 | \(eql TEST\) -- Selects TEST, a test or a symbol naming a test. | 1039 | \(eql TEST\) -- Selects TEST, a test or a symbol naming a test. |
| 1044 | \(and SELECTORS...\) -- Selects the tests that match all SELECTORS. | 1040 | \(and SELECTORS...) -- Selects the tests that match all SELECTORS. |
| 1045 | \(or SELECTORS...\) -- Selects the tests that match any SELECTOR. | 1041 | \(or SELECTORS...) -- Selects the tests that match any of the SELECTORS. |
| 1046 | \(not SELECTOR\) -- Selects all tests that do not match SELECTOR. | 1042 | \(not SELECTOR) -- Selects all tests that do not match SELECTOR. |
| 1047 | \(tag TAG) -- Selects all tests that have TAG on their tags list. | 1043 | \(tag TAG) -- Selects all tests that have TAG on their tags list. |
| 1048 | \(satisfies PREDICATE\) -- Selects all tests that satisfy PREDICATE. | 1044 | A tag is an arbitrary label you can apply when you define a test. |
| 1045 | \(satisfies PREDICATE) -- Selects all tests that satisfy PREDICATE. | ||
| 1046 | PREDICATE is a function that takes an ert-test object as argument, | ||
| 1047 | and returns non-nil if it is selected. | ||
| 1049 | 1048 | ||
| 1050 | Only selectors that require a superset of tests, such | 1049 | Only selectors that require a superset of tests, such |
| 1051 | as (satisfies ...), strings, :new, etc. make use of UNIVERSE. | 1050 | as (satisfies ...), strings, :new, etc. make use of UNIVERSE. |
| 1052 | Selectors that do not, such as \(member ...\), just return the | 1051 | Selectors that do not, such as (member ...), just return the |
| 1053 | set implied by them without checking whether it is really | 1052 | set implied by them without checking whether it is really |
| 1054 | contained in UNIVERSE." | 1053 | contained in UNIVERSE." |
| 1055 | ;; This code needs to match the etypecase in | 1054 | ;; This code needs to match the etypecase in |
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el index 4557bf0fb3f..6044392d4e0 100644 --- a/lisp/mail/sendmail.el +++ b/lisp/mail/sendmail.el | |||
| @@ -513,21 +513,40 @@ This also saves the value of `send-mail-function' via Customize." | |||
| 513 | ;; a second time, probably because someone's using an old value | 513 | ;; a second time, probably because someone's using an old value |
| 514 | ;; of send-mail-function. | 514 | ;; of send-mail-function. |
| 515 | (when (eq send-mail-function 'sendmail-query-once) | 515 | (when (eq send-mail-function 'sendmail-query-once) |
| 516 | (let* ((options `(("My favorite mail client" . mailclient-send-it) | 516 | (let* ((options `(("mail client" . mailclient-send-it) |
| 517 | ("Configuring Emacs's SMTP variables" . smtpmail-send-it) | ||
| 518 | ,@(when (and sendmail-program | 517 | ,@(when (and sendmail-program |
| 519 | (executable-find sendmail-program)) | 518 | (executable-find sendmail-program)) |
| 520 | '(("The system's mail transport agent" | 519 | '(("transport" . sendmail-send-it))) |
| 521 | . sendmail-send-it))))) | 520 | ("smtp" . smtpmail-send-it))) |
| 522 | (choice | 521 | (choice |
| 523 | ;; Query the user. | 522 | ;; Query the user. |
| 524 | (with-temp-buffer | 523 | (with-temp-buffer |
| 525 | (rename-buffer "*Mail Help*" t) | 524 | (rename-buffer "*Emacs Mail Setup Help*" t) |
| 526 | (insert "Emacs has not been set up for sending mail.\n | 525 | (insert "\ |
| 527 | It can be told to send mail either via your favorite mail client, | 526 | Emacs is about to send an email message, but it has not been |
| 528 | or via the system's mail transport agent (\"sendmail\"), if any, | 527 | configured for sending email. To tell Emacs how to send email: |
| 529 | or it can send email on its own by configuring the SMTP parameters.\n | 528 | |
| 530 | To change your decision later, customize `send-mail-function'.\n") | 529 | - Type `" |
| 530 | (propertize "mail client" 'face 'bold) | ||
| 531 | "' to start your default email client and | ||
| 532 | pass it the message text.\n\n") | ||
| 533 | (and sendmail-program | ||
| 534 | (executable-find sendmail-program) | ||
| 535 | (insert "\ | ||
| 536 | - Type `" | ||
| 537 | (propertize "transport" 'face 'bold) | ||
| 538 | "' to invoke the system's mail transport agent | ||
| 539 | (the `" | ||
| 540 | sendmail-program | ||
| 541 | "' program).\n\n")) | ||
| 542 | (insert "\ | ||
| 543 | - Type `" | ||
| 544 | (propertize "smtp" 'face 'bold) | ||
| 545 | "' to send mail directly to an \"outgoing mail\" server. | ||
| 546 | (Emacs may prompt you for SMTP settings). | ||
| 547 | |||
| 548 | Emacs will record your selection and will use it thereafter. | ||
| 549 | To change it later, customize the option `send-mail-function'.\n") | ||
| 531 | (goto-char (point-min)) | 550 | (goto-char (point-min)) |
| 532 | (display-buffer (current-buffer)) | 551 | (display-buffer (current-buffer)) |
| 533 | (let ((completion-ignore-case t)) | 552 | (let ((completion-ignore-case t)) |
diff --git a/lisp/mouse.el b/lisp/mouse.el index 8a74782250d..ff175288445 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el | |||
| @@ -540,11 +540,13 @@ MODE-LINE-P non-nil means dragging a mode line; nil means a header line." | |||
| 540 | ;; be `mouse-1', whereas if this did move the mouse, it should be | 540 | ;; be `mouse-1', whereas if this did move the mouse, it should be |
| 541 | ;; a `drag-mouse-1'. In any case `on-link' would have been nulled | 541 | ;; a `drag-mouse-1'. In any case `on-link' would have been nulled |
| 542 | ;; above if there had been any significant mouse movement. | 542 | ;; above if there had been any significant mouse movement. |
| 543 | (when (and on-link (eq 'mouse-1 (car-safe event))) | 543 | (when (and on-link |
| 544 | (eq 'mouse-1 (car-safe (car unread-command-events)))) | ||
| 544 | ;; If mouse-2 has never been done by the user, it doesn't | 545 | ;; If mouse-2 has never been done by the user, it doesn't |
| 545 | ;; have the necessary property to be interpreted correctly. | 546 | ;; have the necessary property to be interpreted correctly. |
| 546 | (put 'mouse-2 'event-kind 'mouse-click) | 547 | (put 'mouse-2 'event-kind 'mouse-click) |
| 547 | (push (cons 'mouse-2 (cdr event)) unread-command-events)))))) | 548 | (setcar unread-command-events |
| 549 | (cons 'mouse-2 (cdar unread-command-events)))))))) | ||
| 548 | 550 | ||
| 549 | (defun mouse-drag-mode-line (start-event) | 551 | (defun mouse-drag-mode-line (start-event) |
| 550 | "Change the height of a window by dragging on the mode line." | 552 | "Change the height of a window by dragging on the mode line." |
diff --git a/lisp/mpc.el b/lisp/mpc.el index 251e1864927..40ccb456400 100644 --- a/lisp/mpc.el +++ b/lisp/mpc.el | |||
| @@ -1996,12 +1996,14 @@ This is used so that they can be compared with `eq', which is needed for | |||
| 1996 | (list (get-text-property (point) 'mpc-file) | 1996 | (list (get-text-property (point) 'mpc-file) |
| 1997 | posn)))) | 1997 | posn)))) |
| 1998 | (let* ((plbuf (mpc-proc-cmd "playlist")) | 1998 | (let* ((plbuf (mpc-proc-cmd "playlist")) |
| 1999 | (re (concat "^\\([0-9]+\\):" (regexp-quote song-file) "$")) | 1999 | (re (if song-file |
| 2000 | (concat "^\\([0-9]+\\):" (regexp-quote song-file) "$"))) | ||
| 2000 | (sn (with-current-buffer plbuf | 2001 | (sn (with-current-buffer plbuf |
| 2001 | (goto-char (point-min)) | 2002 | (goto-char (point-min)) |
| 2002 | (when (re-search-forward re nil t) | 2003 | (when (and re (re-search-forward re nil t)) |
| 2003 | (match-string 1))))) | 2004 | (match-string 1))))) |
| 2004 | (cond | 2005 | (cond |
| 2006 | ((null re) (posn-set-point posn)) | ||
| 2005 | ((null sn) (error "This song is not in the playlist")) | 2007 | ((null sn) (error "This song is not in the playlist")) |
| 2006 | ((null (with-current-buffer plbuf (re-search-forward re nil t))) | 2008 | ((null (with-current-buffer plbuf (re-search-forward re nil t))) |
| 2007 | ;; song-file only appears once in the playlist: no ambiguity, | 2009 | ;; song-file only appears once in the playlist: no ambiguity, |
diff --git a/lisp/net/network-stream.el b/lisp/net/network-stream.el index 0c3d0285f91..e27b4541ab5 100644 --- a/lisp/net/network-stream.el +++ b/lisp/net/network-stream.el | |||
| @@ -218,7 +218,7 @@ functionality. | |||
| 218 | (resulting-type 'plain) | 218 | (resulting-type 'plain) |
| 219 | (builtin-starttls (and (fboundp 'gnutls-available-p) | 219 | (builtin-starttls (and (fboundp 'gnutls-available-p) |
| 220 | (gnutls-available-p))) | 220 | (gnutls-available-p))) |
| 221 | starttls-command error) | 221 | starttls-available starttls-command error) |
| 222 | 222 | ||
| 223 | ;; First check whether the server supports STARTTLS at all. | 223 | ;; First check whether the server supports STARTTLS at all. |
| 224 | (when (and capabilities success-string starttls-function) | 224 | (when (and capabilities success-string starttls-function) |
| @@ -227,10 +227,11 @@ functionality. | |||
| 227 | ;; If we have built-in STARTTLS support, try to upgrade the | 227 | ;; If we have built-in STARTTLS support, try to upgrade the |
| 228 | ;; connection. | 228 | ;; connection. |
| 229 | (when (and starttls-command | 229 | (when (and starttls-command |
| 230 | (or builtin-starttls | 230 | (setq starttls-available |
| 231 | (and (or require-tls | 231 | (or builtin-starttls |
| 232 | (plist-get parameters :use-starttls-if-possible)) | 232 | (and (or require-tls |
| 233 | (starttls-available-p))) | 233 | (plist-get parameters :use-starttls-if-possible)) |
| 234 | (starttls-available-p)))) | ||
| 234 | (not (eq (plist-get parameters :type) 'plain))) | 235 | (not (eq (plist-get parameters :type) 'plain))) |
| 235 | ;; If using external STARTTLS, drop this connection and start | 236 | ;; If using external STARTTLS, drop this connection and start |
| 236 | ;; anew with `starttls-open-stream'. | 237 | ;; anew with `starttls-open-stream'. |
| @@ -298,9 +299,13 @@ functionality. | |||
| 298 | ;; support, or no gnutls-cli installed. | 299 | ;; support, or no gnutls-cli installed. |
| 299 | (eq resulting-type 'plain)) | 300 | (eq resulting-type 'plain)) |
| 300 | (setq error | 301 | (setq error |
| 301 | (if require-tls | 302 | (if starttls-available |
| 302 | "Server does not support TLS" | 303 | "Server does not support TLS" |
| 303 | "Server supports STARTTLS, but Emacs does not have support for it")) | 304 | (concat "Emacs does not support TLS, and no external `" |
| 305 | (if starttls-use-gnutls | ||
| 306 | starttls-gnutls-program | ||
| 307 | starttls-program) | ||
| 308 | "' program was found"))) | ||
| 304 | (delete-process stream) | 309 | (delete-process stream) |
| 305 | (setq stream nil)) | 310 | (setq stream nil)) |
| 306 | ;; Return value: | 311 | ;; Return value: |
diff --git a/lisp/pcmpl-unix.el b/lisp/pcmpl-unix.el index b466c2cd899..a34458506e2 100644 --- a/lisp/pcmpl-unix.el +++ b/lisp/pcmpl-unix.el | |||
| @@ -185,7 +185,7 @@ Uses both `pcmpl-ssh-config-file' and `pcmpl-ssh-known-hosts-file'." | |||
| 185 | ;;;###autoload | 185 | ;;;###autoload |
| 186 | (defun pcomplete/ssh () | 186 | (defun pcomplete/ssh () |
| 187 | "Completion rules for the `ssh' command." | 187 | "Completion rules for the `ssh' command." |
| 188 | (pcomplete-opt "1246AaCfgKkMNnqsTtVvXxYbcDeFiLlmOopRSw" nil t) | 188 | (pcomplete-opt "1246AaCfgKkMNnqsTtVvXxYbcDeFiLlmOopRSw") |
| 189 | (pcomplete-here (pcmpl-ssh-hosts))) | 189 | (pcomplete-here (pcmpl-ssh-hosts))) |
| 190 | 190 | ||
| 191 | ;;;###autoload | 191 | ;;;###autoload |
diff --git a/src/ChangeLog b/src/ChangeLog index 52fe8baa92e..2c72e97b7f7 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,13 @@ | |||
| 1 | 2011-10-15 Martin Rudalics <rudalics@gmx.at> | ||
| 2 | |||
| 3 | * window.c (coordinates_in_window): Rewrite and delabelize | ||
| 4 | vertical border check. (Bug#5357) (Bug#9618) | ||
| 5 | |||
| 6 | 2011-10-14 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 7 | |||
| 8 | * xterm.c (frame_highlight, frame_unhighlight): Ignore unexplained | ||
| 9 | errors in XSetWindowBorder (bug#9310). | ||
| 10 | |||
| 1 | 2011-10-13 Dmitry Antipov <dmantipov@yandex.ru> | 11 | 2011-10-13 Dmitry Antipov <dmantipov@yandex.ru> |
| 2 | 12 | ||
| 3 | * editfns.c (Fset_time_zone_rule): Replace free with xfree to | 13 | * editfns.c (Fset_time_zone_rule): Replace free with xfree to |
| @@ -71,8 +81,8 @@ | |||
| 71 | 81 | ||
| 72 | 2011-10-07 Stefan Monnier <monnier@iro.umontreal.ca> | 82 | 2011-10-07 Stefan Monnier <monnier@iro.umontreal.ca> |
| 73 | 83 | ||
| 74 | * buffer.c (syms_of_buffer) <enable-multibyte-characters>: Don't | 84 | * buffer.c (syms_of_buffer) <enable-multibyte-characters>: |
| 75 | advertise functionality which we discourage or doesn't work. | 85 | Don't advertise functionality which we discourage or doesn't work. |
| 76 | 86 | ||
| 77 | 2011-10-07 Paul Eggert <eggert@cs.ucla.edu> | 87 | 2011-10-07 Paul Eggert <eggert@cs.ucla.edu> |
| 78 | 88 | ||
| @@ -338,8 +348,7 @@ | |||
| 338 | 2011-09-17 Eli Zaretskii <eliz@gnu.org> | 348 | 2011-09-17 Eli Zaretskii <eliz@gnu.org> |
| 339 | 349 | ||
| 340 | * xdisp.c (reseat_at_next_visible_line_start): Keep information | 350 | * xdisp.c (reseat_at_next_visible_line_start): Keep information |
| 341 | about the current paragraph and restore it after the call to | 351 | about the current paragraph and restore it after the call to reseat. |
| 342 | reseat. | ||
| 343 | 352 | ||
| 344 | * bidi.c (MAX_PARAGRAPH_SEARCH): New macro. | 353 | * bidi.c (MAX_PARAGRAPH_SEARCH): New macro. |
| 345 | (bidi_find_paragraph_start): Search back for paragraph beginning | 354 | (bidi_find_paragraph_start): Search back for paragraph beginning |
| @@ -559,7 +568,7 @@ | |||
| 559 | * doprnt.c (doprnt): Support printing ptrdiff_t and intmax_t values. | 568 | * doprnt.c (doprnt): Support printing ptrdiff_t and intmax_t values. |
| 560 | (esprintf, exprintf, evxprintf): New functions. | 569 | (esprintf, exprintf, evxprintf): New functions. |
| 561 | * keyboard.c (command_loop_level): Now EMACS_INT, not int. | 570 | * keyboard.c (command_loop_level): Now EMACS_INT, not int. |
| 562 | (cmd_error): kbd macro iterations count is now EMACS_INT, not int. | 571 | (cmd_error): Kbd macro iterations count is now EMACS_INT, not int. |
| 563 | (modify_event_symbol): Do not assume that the length of | 572 | (modify_event_symbol): Do not assume that the length of |
| 564 | name_alist_or_stem is safe to alloca and fits in int. | 573 | name_alist_or_stem is safe to alloca and fits in int. |
| 565 | (Fexecute_extended_command): Likewise for function name and binding. | 574 | (Fexecute_extended_command): Likewise for function name and binding. |
| @@ -1303,8 +1312,7 @@ | |||
| 1303 | 1312 | ||
| 1304 | 2011-08-18 Andreas Schwab <schwab@linux-m68k.org> | 1313 | 2011-08-18 Andreas Schwab <schwab@linux-m68k.org> |
| 1305 | 1314 | ||
| 1306 | * process.c (Fnetwork_interface_list): Correctly determine buffer | 1315 | * process.c (Fnetwork_interface_list): Correctly determine buffer size. |
| 1307 | size. | ||
| 1308 | 1316 | ||
| 1309 | 2011-08-17 Chong Yidong <cyd@stupidchicken.com> | 1317 | 2011-08-17 Chong Yidong <cyd@stupidchicken.com> |
| 1310 | 1318 | ||
| @@ -1349,15 +1357,10 @@ | |||
| 1349 | 1357 | ||
| 1350 | 2011-08-15 Eli Zaretskii <eliz@gnu.org> | 1358 | 2011-08-15 Eli Zaretskii <eliz@gnu.org> |
| 1351 | 1359 | ||
| 1352 | * biditype.h: File removed. | 1360 | * bidimirror.h: |
| 1353 | 1361 | * biditype.h: Remove file. | |
| 1354 | * bidimirror.h: File removed. | 1362 | * makefile.w32-in ($(BLD)/bidi.$(O)): |
| 1355 | 1363 | * deps.mk (bidi.o): Remove biditype.h and bidimirror.h. | |
| 1356 | * deps.mk (bidi.o): Remove biditype.h and | ||
| 1357 | bidimirror.h. | ||
| 1358 | |||
| 1359 | * makefile.w32-in ($(BLD)/bidi.$(O)): Remove biditype.h and | ||
| 1360 | bidimirror.h. | ||
| 1361 | 1364 | ||
| 1362 | * dispextern.h: Fix a typo in the comment to bidi_type_t. | 1365 | * dispextern.h: Fix a typo in the comment to bidi_type_t. |
| 1363 | 1366 | ||
| @@ -1532,8 +1535,7 @@ | |||
| 1532 | 1535 | ||
| 1533 | 2011-08-04 Andreas Schwab <schwab@linux-m68k.org> | 1536 | 2011-08-04 Andreas Schwab <schwab@linux-m68k.org> |
| 1534 | 1537 | ||
| 1535 | * regex.c (re_iswctype): Remove some redundant boolean | 1538 | * regex.c (re_iswctype): Remove some redundant boolean conversions. |
| 1536 | conversions. | ||
| 1537 | 1539 | ||
| 1538 | 2011-08-04 Jan Djärv <jan.h.d@swipnet.se> | 1540 | 2011-08-04 Jan Djärv <jan.h.d@swipnet.se> |
| 1539 | 1541 | ||
| @@ -2070,8 +2072,7 @@ | |||
| 2070 | 2011-07-15 Eli Zaretskii <eliz@gnu.org> | 2072 | 2011-07-15 Eli Zaretskii <eliz@gnu.org> |
| 2071 | 2073 | ||
| 2072 | * xdisp.c (move_it_in_display_line_to): Fix vertical motion with | 2074 | * xdisp.c (move_it_in_display_line_to): Fix vertical motion with |
| 2073 | bidi redisplay when a line includes both an image and is | 2075 | bidi redisplay when a line includes both an image and is truncated. |
| 2074 | truncated. | ||
| 2075 | 2076 | ||
| 2076 | 2011-07-14 Paul Eggert <eggert@cs.ucla.edu> | 2077 | 2011-07-14 Paul Eggert <eggert@cs.ucla.edu> |
| 2077 | 2078 | ||
diff --git a/src/window.c b/src/window.c index 94b9f8a451f..7f4714ba17e 100644 --- a/src/window.c +++ b/src/window.c | |||
| @@ -921,22 +921,45 @@ static enum window_part | |||
| 921 | coordinates_in_window (register struct window *w, int x, int y) | 921 | coordinates_in_window (register struct window *w, int x, int y) |
| 922 | { | 922 | { |
| 923 | struct frame *f = XFRAME (WINDOW_FRAME (w)); | 923 | struct frame *f = XFRAME (WINDOW_FRAME (w)); |
| 924 | int left_x, right_x; | ||
| 925 | enum window_part part; | 924 | enum window_part part; |
| 926 | int ux = FRAME_COLUMN_WIDTH (f); | 925 | int ux = FRAME_COLUMN_WIDTH (f); |
| 927 | int x0 = WINDOW_LEFT_EDGE_X (w); | 926 | int left_x = WINDOW_LEFT_EDGE_X (w); |
| 928 | int x1 = WINDOW_RIGHT_EDGE_X (w); | 927 | int right_x = WINDOW_RIGHT_EDGE_X (w); |
| 928 | int top_y = WINDOW_TOP_EDGE_Y (w); | ||
| 929 | int bottom_y = WINDOW_BOTTOM_EDGE_Y (w); | ||
| 929 | /* The width of the area where the vertical line can be dragged. | 930 | /* The width of the area where the vertical line can be dragged. |
| 930 | (Between mode lines for instance. */ | 931 | (Between mode lines for instance. */ |
| 931 | int grabbable_width = ux; | 932 | int grabbable_width = ux; |
| 932 | int lmargin_width, rmargin_width, text_left, text_right; | 933 | int lmargin_width, rmargin_width, text_left, text_right; |
| 933 | int top_y = WINDOW_TOP_EDGE_Y (w); | ||
| 934 | int bottom_y = WINDOW_BOTTOM_EDGE_Y (w); | ||
| 935 | 934 | ||
| 936 | /* Outside any interesting row? */ | 935 | /* Outside any interesting row or column? */ |
| 937 | if (y < top_y || y >= bottom_y) | 936 | if (y < top_y || y >= bottom_y || x < left_x || x >= right_x) |
| 938 | return ON_NOTHING; | 937 | return ON_NOTHING; |
| 939 | 938 | ||
| 939 | /* On the mode line or header line? */ | ||
| 940 | if ((WINDOW_WANTS_MODELINE_P (w) | ||
| 941 | && y >= bottom_y - CURRENT_MODE_LINE_HEIGHT (w) | ||
| 942 | && (part = ON_MODE_LINE)) | ||
| 943 | || (WINDOW_WANTS_HEADER_LINE_P (w) | ||
| 944 | && y < top_y + CURRENT_HEADER_LINE_HEIGHT (w) | ||
| 945 | && (part = ON_HEADER_LINE))) | ||
| 946 | { | ||
| 947 | /* If it's under/over the scroll bar portion of the mode/header | ||
| 948 | line, say it's on the vertical line. That's to be able to | ||
| 949 | resize windows horizontally in case we're using toolkit scroll | ||
| 950 | bars. Note: If scrollbars are on the left, the window that | ||
| 951 | must be eventually resized is that on the left of WINDOW. */ | ||
| 952 | if ((WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w) | ||
| 953 | && !WINDOW_LEFTMOST_P (w) | ||
| 954 | && eabs (x - left_x) < grabbable_width) | ||
| 955 | || (!WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w) | ||
| 956 | && !WINDOW_RIGHTMOST_P (w) | ||
| 957 | && eabs (x - right_x) < grabbable_width)) | ||
| 958 | return ON_VERTICAL_BORDER; | ||
| 959 | else | ||
| 960 | return part; | ||
| 961 | } | ||
| 962 | |||
| 940 | /* In what's below, we subtract 1 when computing right_x because we | 963 | /* In what's below, we subtract 1 when computing right_x because we |
| 941 | want the rightmost pixel, which is given by left_pixel+width-1. */ | 964 | want the rightmost pixel, which is given by left_pixel+width-1. */ |
| 942 | if (w->pseudo_window_p) | 965 | if (w->pseudo_window_p) |
| @@ -950,50 +973,6 @@ coordinates_in_window (register struct window *w, int x, int y) | |||
| 950 | right_x = WINDOW_BOX_RIGHT_EDGE_X (w) - 1; | 973 | right_x = WINDOW_BOX_RIGHT_EDGE_X (w) - 1; |
| 951 | } | 974 | } |
| 952 | 975 | ||
| 953 | /* On the mode line or header line? If it's near the start of | ||
| 954 | the mode or header line of window that's has a horizontal | ||
| 955 | sibling, say it's on the vertical line. That's to be able | ||
| 956 | to resize windows horizontally in case we're using toolkit | ||
| 957 | scroll bars. */ | ||
| 958 | |||
| 959 | if (WINDOW_WANTS_MODELINE_P (w) | ||
| 960 | && y >= bottom_y - CURRENT_MODE_LINE_HEIGHT (w)) | ||
| 961 | { | ||
| 962 | part = ON_MODE_LINE; | ||
| 963 | |||
| 964 | header_vertical_border_check: | ||
| 965 | /* We're somewhere on the mode line. We consider the place | ||
| 966 | between mode lines of horizontally adjacent mode lines | ||
| 967 | as the vertical border. If scroll bars on the left, | ||
| 968 | return the right window. */ | ||
| 969 | if ((WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w) | ||
| 970 | || WINDOW_RIGHTMOST_P (w)) | ||
| 971 | && !WINDOW_LEFTMOST_P (w) | ||
| 972 | && eabs (x - x0) < grabbable_width) | ||
| 973 | return ON_VERTICAL_BORDER; | ||
| 974 | |||
| 975 | /* Make sure we're not at the rightmost position of a | ||
| 976 | mode-/header-line and there's yet another window on the | ||
| 977 | right. (Bug#1372) */ | ||
| 978 | else if ((WINDOW_RIGHTMOST_P (w) || x < x1) | ||
| 979 | && eabs (x - x1) < grabbable_width) | ||
| 980 | return ON_VERTICAL_BORDER; | ||
| 981 | |||
| 982 | if (x < x0 || x >= x1) | ||
| 983 | return ON_NOTHING; | ||
| 984 | |||
| 985 | return part; | ||
| 986 | } | ||
| 987 | |||
| 988 | if (WINDOW_WANTS_HEADER_LINE_P (w) | ||
| 989 | && y < top_y + CURRENT_HEADER_LINE_HEIGHT (w)) | ||
| 990 | { | ||
| 991 | part = ON_HEADER_LINE; | ||
| 992 | goto header_vertical_border_check; | ||
| 993 | } | ||
| 994 | |||
| 995 | if (x < x0 || x >= x1) return ON_NOTHING; | ||
| 996 | |||
| 997 | /* Outside any interesting column? */ | 976 | /* Outside any interesting column? */ |
| 998 | if (x < left_x || x > right_x) | 977 | if (x < left_x || x > right_x) |
| 999 | return ON_SCROLL_BAR; | 978 | return ON_SCROLL_BAR; |
diff --git a/src/xterm.c b/src/xterm.c index 1357afa0c15..128a274ff10 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -3364,8 +3364,14 @@ frame_highlight (struct frame *f) | |||
| 3364 | and border pixel are window attributes which are "private to the | 3364 | and border pixel are window attributes which are "private to the |
| 3365 | client", so we can always change it to whatever we want. */ | 3365 | client", so we can always change it to whatever we want. */ |
| 3366 | BLOCK_INPUT; | 3366 | BLOCK_INPUT; |
| 3367 | /* I recently started to get errors in this XSetWindowBorder, depending on | ||
| 3368 | the window-manager in use, tho something more is at play since I've been | ||
| 3369 | using that same window-manager binary for ever. Let's not crash just | ||
| 3370 | because of this (bug#9310). */ | ||
| 3371 | x_catch_errors (FRAME_X_DISPLAY (f)); | ||
| 3367 | XSetWindowBorder (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), | 3372 | XSetWindowBorder (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
| 3368 | f->output_data.x->border_pixel); | 3373 | f->output_data.x->border_pixel); |
| 3374 | x_uncatch_errors (); | ||
| 3369 | UNBLOCK_INPUT; | 3375 | UNBLOCK_INPUT; |
| 3370 | x_update_cursor (f, 1); | 3376 | x_update_cursor (f, 1); |
| 3371 | x_set_frame_alpha (f); | 3377 | x_set_frame_alpha (f); |
| @@ -3379,8 +3385,11 @@ frame_unhighlight (struct frame *f) | |||
| 3379 | and border pixel are window attributes which are "private to the | 3385 | and border pixel are window attributes which are "private to the |
| 3380 | client", so we can always change it to whatever we want. */ | 3386 | client", so we can always change it to whatever we want. */ |
| 3381 | BLOCK_INPUT; | 3387 | BLOCK_INPUT; |
| 3388 | /* Same as above for XSetWindowBorder (bug#9310). */ | ||
| 3389 | x_catch_errors (FRAME_X_DISPLAY (f)); | ||
| 3382 | XSetWindowBorderPixmap (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), | 3390 | XSetWindowBorderPixmap (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
| 3383 | f->output_data.x->border_tile); | 3391 | f->output_data.x->border_tile); |
| 3392 | x_uncatch_errors (); | ||
| 3384 | UNBLOCK_INPUT; | 3393 | UNBLOCK_INPUT; |
| 3385 | x_update_cursor (f, 1); | 3394 | x_update_cursor (f, 1); |
| 3386 | x_set_frame_alpha (f); | 3395 | x_set_frame_alpha (f); |
diff --git a/test/ChangeLog b/test/ChangeLog index 6ab148358d9..ea6d90b534c 100644 --- a/test/ChangeLog +++ b/test/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2011-10-15 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * automated/f90.el: New file. | ||
| 4 | |||
| 1 | 2011-09-27 Ulf Jasper <ulf.jasper@web.de> | 5 | 2011-09-27 Ulf Jasper <ulf.jasper@web.de> |
| 2 | 6 | ||
| 3 | * automated/newsticker-tests.el: Move newsticker-testsuite.el | 7 | * automated/newsticker-tests.el: Move newsticker-testsuite.el |
diff --git a/test/automated/f90.el b/test/automated/f90.el new file mode 100644 index 00000000000..5d75d5cd0fb --- /dev/null +++ b/test/automated/f90.el | |||
| @@ -0,0 +1,158 @@ | |||
| 1 | ;;; f90.el --- tests for progmodes/f90.el | ||
| 2 | |||
| 3 | ;; Copyright (C) 2011 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: Glenn Morris <rgm@gnu.org> | ||
| 6 | |||
| 7 | ;; This file is part of GNU Emacs. | ||
| 8 | |||
| 9 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 10 | ;; it under the terms of the GNU General Public License as published by | ||
| 11 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 12 | ;; (at your option) any later version. | ||
| 13 | |||
| 14 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 15 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 16 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 17 | ;; GNU General Public License for more details. | ||
| 18 | |||
| 19 | ;; You should have received a copy of the GNU General Public License | ||
| 20 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| 21 | |||
| 22 | ;;; Commentary: | ||
| 23 | |||
| 24 | ;; This file does not have "test" in the name, because it lives under | ||
| 25 | ;; a test/ directory, so that would be superfluous. | ||
| 26 | |||
| 27 | ;;; Code: | ||
| 28 | |||
| 29 | (require 'ert) | ||
| 30 | (require 'f90) | ||
| 31 | |||
| 32 | (defconst f90-test-indent "\ | ||
| 33 | !! Comment before code. | ||
| 34 | !!! Comments before code. | ||
| 35 | #preprocessor before code | ||
| 36 | |||
| 37 | program progname | ||
| 38 | |||
| 39 | implicit none | ||
| 40 | |||
| 41 | integer :: i | ||
| 42 | |||
| 43 | !! Comment. | ||
| 44 | |||
| 45 | do i = 1, 10 | ||
| 46 | |||
| 47 | #preprocessor | ||
| 48 | |||
| 49 | !! Comment. | ||
| 50 | if ( i % 2 == 0 ) then | ||
| 51 | !! Comment. | ||
| 52 | cycle | ||
| 53 | else | ||
| 54 | write(*,*) i | ||
| 55 | end if | ||
| 56 | end do | ||
| 57 | |||
| 58 | !!! Comment. | ||
| 59 | |||
| 60 | end program progname | ||
| 61 | " | ||
| 62 | "Test string for F90 indentation.") | ||
| 63 | |||
| 64 | (ert-deftest f90-test-indent () | ||
| 65 | "Test F90 indentation." | ||
| 66 | (with-temp-buffer | ||
| 67 | (f90-mode) | ||
| 68 | (insert f90-test-indent) | ||
| 69 | (indent-rigidly (point-min) (point-max) -999) | ||
| 70 | (f90-indent-region (point-min) (point-max)) | ||
| 71 | (should (string-equal (buffer-string) f90-test-indent)))) | ||
| 72 | |||
| 73 | (ert-deftest f90-test-bug3729 () | ||
| 74 | "Test for http://debbugs.gnu.org/3729 ." | ||
| 75 | :expected-result :failed | ||
| 76 | (with-temp-buffer | ||
| 77 | (f90-mode) | ||
| 78 | (insert "!! Comment | ||
| 79 | |||
| 80 | include \"file.f90\" | ||
| 81 | |||
| 82 | subroutine test (x) | ||
| 83 | real x | ||
| 84 | x = x+1. | ||
| 85 | return | ||
| 86 | end subroutine test") | ||
| 87 | (goto-char (point-min)) | ||
| 88 | (forward-line 2) | ||
| 89 | (f90-indent-subprogram) | ||
| 90 | (should (= 0 (current-indentation))))) | ||
| 91 | |||
| 92 | (ert-deftest f90-test-bug3730 () | ||
| 93 | "Test for http://debbugs.gnu.org/3730 ." | ||
| 94 | (with-temp-buffer | ||
| 95 | (f90-mode) | ||
| 96 | (insert "a" ) | ||
| 97 | (move-to-column 68 t) | ||
| 98 | (insert "(/ x /)") | ||
| 99 | (f90-do-auto-fill) | ||
| 100 | (beginning-of-line) | ||
| 101 | (skip-chars-forward "[ \t]") | ||
| 102 | (should (equal "&(/" (buffer-substring (point) (+ 3 (point))))))) | ||
| 103 | |||
| 104 | ;; TODO bug#5593 | ||
| 105 | |||
| 106 | (ert-deftest f90-test-bug8691 () | ||
| 107 | "Test for http://debbugs.gnu.org/8691 ." | ||
| 108 | (with-temp-buffer | ||
| 109 | (f90-mode) | ||
| 110 | (insert "module modname | ||
| 111 | type, bind(c) :: type1 | ||
| 112 | integer :: part1 | ||
| 113 | end type type1 | ||
| 114 | end module modname") | ||
| 115 | (f90-indent-subprogram) | ||
| 116 | (forward-line -1) | ||
| 117 | (should (= 2 (current-indentation))))) | ||
| 118 | |||
| 119 | ;; TODO bug#8812 | ||
| 120 | |||
| 121 | (ert-deftest f90-test-bug8820 () | ||
| 122 | "Test for http://debbugs.gnu.org/8820 ." | ||
| 123 | (with-temp-buffer | ||
| 124 | (f90-mode) | ||
| 125 | (should (eq (char-syntax ?%) (string-to-char "."))))) | ||
| 126 | |||
| 127 | (ert-deftest f90-test-bug9553a () | ||
| 128 | "Test for http://debbugs.gnu.org/9553 ." | ||
| 129 | (with-temp-buffer | ||
| 130 | (f90-mode) | ||
| 131 | (insert "!!!") | ||
| 132 | (dotimes (_i 20) (insert " aaaa")) | ||
| 133 | (f90-do-auto-fill) | ||
| 134 | (beginning-of-line) | ||
| 135 | ;; This gives a more informative failure than looking-at. | ||
| 136 | (should (equal "!!! a" (buffer-substring (point) (+ 5 (point))))))) | ||
| 137 | |||
| 138 | (ert-deftest f90-test-bug9553b () | ||
| 139 | "Test for http://debbugs.gnu.org/9553 ." | ||
| 140 | (with-temp-buffer | ||
| 141 | (f90-mode) | ||
| 142 | (insert "!!!") | ||
| 143 | (dotimes (_i 13) (insert " aaaa")) | ||
| 144 | (insert "a, aaaa") | ||
| 145 | (f90-do-auto-fill) | ||
| 146 | (beginning-of-line) | ||
| 147 | (should (equal "!!! a" (buffer-substring (point) (+ 5 (point))))))) | ||
| 148 | |||
| 149 | (ert-deftest f90-test-bug9690 () | ||
| 150 | "Test for http://debbugs.gnu.org/9690 ." | ||
| 151 | (with-temp-buffer | ||
| 152 | (f90-mode) | ||
| 153 | (insert "#include \"foo.h\"") | ||
| 154 | (f90-indent-line) | ||
| 155 | (should (= 0 (current-indentation))))) | ||
| 156 | |||
| 157 | |||
| 158 | ;;; f90.el ends here | ||