diff options
214 files changed, 3360 insertions, 2488 deletions
diff --git a/.gitignore b/.gitignore index 618249c8def..df9dc8b110c 100644 --- a/.gitignore +++ b/.gitignore | |||
| @@ -40,7 +40,6 @@ Info.plist | |||
| 40 | InfoPlist.strings | 40 | InfoPlist.strings |
| 41 | Makefile | 41 | Makefile |
| 42 | makefile | 42 | makefile |
| 43 | !admin/charsets/Makefile | ||
| 44 | !etc/refcards/Makefile | 43 | !etc/refcards/Makefile |
| 45 | !test/automated/data/flymake/Makefile | 44 | !test/automated/data/flymake/Makefile |
| 46 | !test/indent/Makefile | 45 | !test/indent/Makefile |
diff --git a/CONTRIBUTE b/CONTRIBUTE index bf231554261..7e697ddd89a 100644 --- a/CONTRIBUTE +++ b/CONTRIBUTE | |||
| @@ -96,6 +96,9 @@ messages: | |||
| 96 | - Commit messages should not contain the "Signed-off-by:" lines that | 96 | - Commit messages should not contain the "Signed-off-by:" lines that |
| 97 | are used in some other projects. | 97 | are used in some other projects. |
| 98 | 98 | ||
| 99 | - Any lines of the commit message that start with "; " are omitted | ||
| 100 | from the generated ChangeLog. | ||
| 101 | |||
| 99 | - Explaining the rationale for a design choice is best done in comments | 102 | - Explaining the rationale for a design choice is best done in comments |
| 100 | in the source code. However, sometimes it is useful to describe just | 103 | in the source code. However, sometimes it is useful to describe just |
| 101 | the rationale for a change; that can be done in the commit message | 104 | the rationale for a change; that can be done in the commit message |
diff --git a/ChangeLog.2 b/ChangeLog.2 index d1c9477f146..b75a665b113 100644 --- a/ChangeLog.2 +++ b/ChangeLog.2 | |||
| @@ -1,3 +1,604 @@ | |||
| 1 | 2015-05-17 Johan Bockgård <bojohan@gnu.org> | ||
| 2 | |||
| 3 | Fix integer-valued `mouse-highlight' (Bug#20590) | ||
| 4 | * src/xterm.c (handle_one_xevent) [USE_GTK]: Fix ifdef scope. | ||
| 5 | |||
| 6 | 2015-05-17 Eli Zaretskii <eliz@gnu.org> | ||
| 7 | |||
| 8 | MS-Windows followup for ASCIIfication of curved quotes | ||
| 9 | * lisp/term/w32console.el (terminal-init-w32console): Repeat the | ||
| 10 | test for curved quotes being displayable, after switching the | ||
| 11 | terminal encoding. (Bug#20545) | ||
| 12 | |||
| 13 | 2015-05-17 Paul Eggert <eggert@cs.ucla.edu> | ||
| 14 | |||
| 15 | Spelling fixes | ||
| 16 | |||
| 17 | 2015-05-17 Jan D <jan.h.d@swipnet.se> | ||
| 18 | |||
| 19 | Add comment that x_shift_glyphs_for_insert is never called. | ||
| 20 | * xterm.c (x_shift_glyphs_for_insert, x_redisplay_interface): Add | ||
| 21 | comment that this function is never called. | ||
| 22 | |||
| 23 | 2015-05-16 Glenn Morris <rgm@gnu.org> | ||
| 24 | |||
| 25 | * src/lisp.mk: Remove from repository and generate at build-time. | ||
| 26 | * src/Makefile.in (lisp.mk): New rule to generate from loadup.el. | ||
| 27 | (shortlisp_filter): New variable. | ||
| 28 | (emacs$(EXEEXT), $(etc)/DOC): Depend on lisp.mk. | ||
| 29 | (distclean): Remove lisp.mk. | ||
| 30 | * Makefile.in ($(MAKEFILE_NAME)): No longer depend on src/lisp.mk. | ||
| 31 | * lisp/loadup.el: Tweak layout to make it easier to parse. | ||
| 32 | * make-dist: Do not distribute src/lisp.mk. | ||
| 33 | |||
| 34 | 2015-05-16 Dmitry Gutov <dgutov@yandex.ru> | ||
| 35 | |||
| 36 | Display shorter dates in Git annotate output | ||
| 37 | * lisp/vc/vc-git.el (vc-git-annotate-command): Use the short date | ||
| 38 | format (when not overridden with vc-git-annotate-switches). | ||
| 39 | (vc-git-annotate-time): Support the short format, as well as ISO | ||
| 40 | 8601 that has been used until now (bug#5428). | ||
| 41 | |||
| 42 | 2015-05-16 Paul Eggert <eggert@cs.ucla.edu> | ||
| 43 | |||
| 44 | ASCIIfy curved quotes on displays lacking them | ||
| 45 | * lisp/international/mule-cmds.el (set-locale-environment): | ||
| 46 | If curved quotes don't work, display straight ASCII approximations | ||
| 47 | (Bug#20545). | ||
| 48 | |||
| 49 | 2015-05-16 Glenn Morris <rgm@gnu.org> | ||
| 50 | |||
| 51 | Small src/Makefile simplification. | ||
| 52 | * src/lisp.mk (shortlisp): Rename from lisp, remove $lispsource prefix. | ||
| 53 | * src/Makefile.in (lisp): Derive from shortlisp. | ||
| 54 | ($(etc)/DOC): Use $shortlisp rather than parsing lisp.mk. | ||
| 55 | |||
| 56 | 2015-05-16 Eli Zaretskii <eliz@gnu.org> | ||
| 57 | |||
| 58 | * lisp/help-mode.el (help-go-forward): Doc fix. | ||
| 59 | (Bug#20577) | ||
| 60 | |||
| 61 | * doc/lispref/debugging.texi (Profiling): Improve indexing. | ||
| 62 | (Bug#20576) | ||
| 63 | |||
| 64 | 2015-05-16 Dmitry Gutov <dgutov@yandex.ru> | ||
| 65 | |||
| 66 | Use `unless' to have one fewer `not' | ||
| 67 | * lisp/vc/vc-git.el (vc-git-resolve-when-done): Use `unless' to | ||
| 68 | have one fewer `not'. | ||
| 69 | |||
| 70 | Remove redundant :group declarations from vc-git.el | ||
| 71 | * lisp/vc/vc-git.el (vc-git-diff-switches) | ||
| 72 | (vc-git-annotate-switches, vc-git-resolve-conflicts) | ||
| 73 | (vc-git-program, vc-git-root-log-format): Remove the redundant | ||
| 74 | :group declarations. | ||
| 75 | |||
| 76 | 2015-05-16 Nicolas Petton <nicolas@petton.fr> | ||
| 77 | |||
| 78 | Removes the predicate from lisp-complete-symbol (Bug#20456) | ||
| 79 | * lisp/emacs-lisp/lisp.el (lisp-complete-symbol): Do not use predicate | ||
| 80 | and remove it from the docstring. | ||
| 81 | |||
| 82 | 2015-05-16 Dmitry Gutov <dgutov@yandex.ru> | ||
| 83 | |||
| 84 | Add new option vc-git-resolve-conflicts | ||
| 85 | * lisp/vc/vc-git.el (vc-git-resolve-conflicts): New variable. | ||
| 86 | (vc-git-find-file-hook): Add to after-save-hook only when the | ||
| 87 | above is non-nil. | ||
| 88 | (vc-git-resolve-when-done): Update to honor the new variable. | ||
| 89 | (Bug#20292) | ||
| 90 | |||
| 91 | 2015-05-16 Eli Zaretskii <eliz@gnu.org> | ||
| 92 | |||
| 93 | Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs | ||
| 94 | |||
| 95 | 2015-05-16 Artur Malabarba <bruce.connor.am@gmail.com> | ||
| 96 | |||
| 97 | * lisp/emacs-lisp/tabulated-list.el: Don't error on nil header-string | ||
| 98 | (tabulated-list-init-header): Document new behavior. | ||
| 99 | (tabulated-list-print-fake-header): No nothing if | ||
| 100 | `tabulated-list--header-string' is nil. | ||
| 101 | (tabulated-list--header-string): Add a docstring. | ||
| 102 | * doc/lispref/modes.texi (Tabulated List Mode): Document it. | ||
| 103 | * etc/NEWS: Document it. | ||
| 104 | |||
| 105 | 2015-05-15 Leo Liu <sdl.web@gmail.com> | ||
| 106 | |||
| 107 | Revert "Fix cps--gensym" | ||
| 108 | * lisp/emacs-lisp/generator.el (cps--gensym): Revert commit | ||
| 109 | fbda511ab8069d0115eafca411a43353b85431b1 on 2015-05-14. | ||
| 110 | |||
| 111 | 2015-05-15 Glenn Morris <rgm@gnu.org> | ||
| 112 | |||
| 113 | Replace AC_SUBST_FILE in configure with include in Makefiles. | ||
| 114 | * configure.ac (DEPDIR, MKDEPDIR, deps_frag, lwlib_deps_frag) | ||
| 115 | (oldxmenu_deps_frag, lisp_frag): Remove output variables/files. | ||
| 116 | (AUTO_DEPEND): New output variable. | ||
| 117 | * lwlib/Makefile.in (AUTO_DEPEND): New, set by configure. | ||
| 118 | (DEPFLAGS, MKDEPDIR): Set directly via conditional. | ||
| 119 | (lwlib_deps_frag): Replace by conditional include. | ||
| 120 | * lwlib/autodeps.mk: Remove file. | ||
| 121 | * oldXMenu/Makefile.in (AUTO_DEPEND): New, set by configure. | ||
| 122 | (DEPFLAGS, MKDEPDIR): Set directly via conditional. | ||
| 123 | (oldxmenu_deps_frag): Replace by conditional include. | ||
| 124 | * oldXMenu/autodeps.mk: Remove file. | ||
| 125 | * src/Makefile.in (AUTO_DEPEND): New, set by configure. | ||
| 126 | (DEPFLAGS, MKDEPDIR): Set directly via conditional. | ||
| 127 | (lisp_frag): Replace by an include. | ||
| 128 | (deps_frag): Replace by conditional include. | ||
| 129 | * src/autodeps.mk: Remove file. | ||
| 130 | |||
| 131 | Tweak japanese.el's loading of dependencies. | ||
| 132 | * lisp/loadup.el: Explicitly load cp51932 and eucjp-ms. | ||
| 133 | * lisp/language/japanese.el: Use require rather than load. | ||
| 134 | * lisp/international/cp51932.el, lisp/international/eucjp-ms.el: | ||
| 135 | Provide a feature. | ||
| 136 | * admin/charsets/eucjp-ms.awk, admin/charsets/cp51932.awk: | ||
| 137 | Provide a feature in the generated file. | ||
| 138 | |||
| 139 | 2015-05-15 Jan D <jan.h.d@swipnet.se> | ||
| 140 | |||
| 141 | Fix NS warnings. | ||
| 142 | * nsmenu.m (ns_popup_dialog) | ||
| 143 | * nsimage.m (initFromXBM:width:height:fg:bg:) | ||
| 144 | * nsfns.m (Fx_create_frame): Remove unused variables. | ||
| 145 | (Fns_read_file_name): Initialize fname, remove ret. | ||
| 146 | * nsterm.m (ns_draw_window_cursor): Handle DEFAULT_CURSOR in switch. | ||
| 147 | (ns_get_color, ns_set_horizontal_scroll_bar, keyDown): Remove unused | ||
| 148 | variable. | ||
| 149 | (init): Add parantesis in if. | ||
| 150 | (ns_create_terminal): Assign set_horizontal_scroll_bar_hook. | ||
| 151 | |||
| 152 | 2015-05-15 Jan Djärv <jan.h.d@swipnet.se> | ||
| 153 | |||
| 154 | Fix a enum conversion warning in macfont.m | ||
| 155 | * src/macfont.h (CharacterCollection): Typedef to NSCharacterCollection. | ||
| 156 | (MAC_CHARACTER_COLLECTION_*): Use the NS variants. | ||
| 157 | |||
| 158 | 2015-05-15 Eli Zaretskii <eliz@gnu.org> | ||
| 159 | |||
| 160 | Support de-alt dictionary with Aspell. | ||
| 161 | * lisp/textmodes/ispell.el (ispell-aspell-find-dictionary): | ||
| 162 | Support Aspell dictionaries with names like "de-alt". (Bug#20581) | ||
| 163 | |||
| 164 | 2015-05-15 Jan Djärv <jan.h.d@swipnet.se> | ||
| 165 | |||
| 166 | cus-start.el: Add ns-confirm-quit. | ||
| 167 | * cus-start.el: Add ns-confirm-quit. | ||
| 168 | |||
| 169 | Fix warnings on OSX 10.10. | ||
| 170 | * nsfns.m (MODAL_OK_RESPONSE): New define for different OSX versions. | ||
| 171 | (Fns_read_file_name): Check against MODAL_OK_RESPONSE. | ||
| 172 | (compute_tip_xy): Use convertRectToScreen for OSX >= 10.7 | ||
| 173 | * nsmenu.m (initWithContentRect:styleMask:backing:defer:) | ||
| 174 | * nsimage.m (allocInitFromFile, setPixmapData): Only call | ||
| 175 | setScalesWhenResized for OSX < 10.6. | ||
| 176 | * nsterm.h (EmacsScroller): Declare scrollerWidth. | ||
| 177 | * nsterm.m (ns_copy_bits): New function that does not use deprecated | ||
| 178 | NSCopyBits. | ||
| 179 | (ns_scroll_run, ns_shift_glyphs_for_insert): Call ns_copy_bits. | ||
| 180 | (runAlertPanel): New function. | ||
| 181 | (applicationShouldTerminate:): Call runAlertPanel. | ||
| 182 | (initFrameFromEmacs, toggleFullScreen:): Only call useOptimizedDrawing | ||
| 183 | for OSX < 10.10. | ||
| 184 | (initFrameFromEmacs:): Only call allocateGState for OSX < 10.10. | ||
| 185 | (windowWillUseStandardFrame:defaultFrame:): Cast arg to abs to int. | ||
| 186 | (draggingEntered:): Returns NSDragOperation. | ||
| 187 | (scrollerWidth): Use scrollerWidthForControlSize for OSX >= 10.7. | ||
| 188 | |||
| 189 | 2015-05-15 Artur Malabarba <bruce.connor.am@gmail.com> | ||
| 190 | |||
| 191 | * lisp/emacs-lisp/package.el: Don't ensure-init during startup | ||
| 192 | (package--init-file-ensured): New variable. | ||
| 193 | (package-initialize, package--ensure-init-file): Use it. | ||
| 194 | |||
| 195 | 2015-05-15 Jan Djärv <jan.h.d@swipnet.se> | ||
| 196 | |||
| 197 | Honor :fore/background for XBM on NS (Bug#14969). | ||
| 198 | * nsterm.h (EmacsImage): Add xbm_fg, remove initFromSkipXBM, | ||
| 199 | initFromXBM takes bg, fg args, remove flip arg. | ||
| 200 | (ns_image_from_XBM): Add bg, fg args. | ||
| 201 | * image.c (x_create_bitmap_from_data) | ||
| 202 | (Create_Pixmap_From_Bitmap_Data): ns_image_from_XBM takes bg, fg args. | ||
| 203 | * nsimage.m (ns_image_from_XBM): Add fg, bg args, pass to initFromXBM. | ||
| 204 | Remove flip arg. | ||
| 205 | (initFromSkipXBM): Move code to initFromXBM. | ||
| 206 | (initFromXBM): Actually set fg and bg, instead of playing alpha games. | ||
| 207 | Use fg, bg from args (Bug#14969). Remove if (length) section, was always | ||
| 208 | false. | ||
| 209 | Remove bit flipping (bitPat, swt), generated incorrect images when | ||
| 210 | width/height wasn't a multiple of 8. | ||
| 211 | (setXBMColor:): Modify planes by comparing to saved xbm_fg. | ||
| 212 | * nsterm.m (ns_draw_fringe_bitmap): initFromXBM takes fg, bg args, remove | ||
| 213 | flip arg. | ||
| 214 | |||
| 215 | 2015-05-15 Artur Malabarba <bruce.connor.am@gmail.com> | ||
| 216 | |||
| 217 | * lisp/emacs-lisp/package.el: Be more careful with the init file | ||
| 218 | (package--ensure-init-file): Check that user-init-file is set, | ||
| 219 | exists, is readable, and is writable. (Bug#20584) | ||
| 220 | Also expand the docstring. | ||
| 221 | |||
| 222 | 2015-05-14 Wilson Snyder <wsnyder@wsnyder.org> | ||
| 223 | |||
| 224 | Sync with upstream verilog-mode revision 6232468 | ||
| 225 | * lisp/progmodes/verilog-mode.el (verilog-font-lock-grouping-keywords-face) | ||
| 226 | (verilog-highlight-grouping-keywords): Fix use of face when | ||
| 227 | `verilog-highlight-grouping-keywords' set. Reported by Jeff | ||
| 228 | Pompa. | ||
| 229 | (verilog-auto-reset): Fix AUTORESET to ignore member resets if | ||
| 230 | parent is reset, bug906. Reported by Ken Schmidt. | ||
| 231 | (verilog-auto-inout-module): Add fourth regexp argument to | ||
| 232 | AUTOINOUTMODULE and AUTOINOUTCOMP for signals to not match, | ||
| 233 | bug856. Reported by John Tillema. | ||
| 234 | (verilog-auto-inst-port): Fix AUTOINST interfaces to not show | ||
| 235 | modport if signal attachment is itself a modport. Reported by | ||
| 236 | Matthew Lovell. | ||
| 237 | (verilog-auto-reset, verilog-auto-sense-sigs): Fix AUTORESET with | ||
| 238 | always_comb and always_latch, bug844. Reported by Greg Hilton. | ||
| 239 | (verilog-at-constraint-p, verilog-beg-of-statement-1): Fix hanging | ||
| 240 | with many curly-bracket pairs, bug663. | ||
| 241 | (verilog-set-auto-endcomments): Fix end comments for functions of | ||
| 242 | type void, etc. Reported by Alex Reed. | ||
| 243 | (verilog-do-indent): Fix electric tab deleting form-feeds. Note | ||
| 244 | caused by indent-line-to deleting tabls pre 24.5. | ||
| 245 | (verilog-nameable-item-re): Fix nameable items that can have an | ||
| 246 | end-identifier to include endchecker, endgroup, endprogram, | ||
| 247 | endproperty, and endsequence. Reported by Alex Reed. | ||
| 248 | (verilog-label-be): When auto-commenting a buffer, consider | ||
| 249 | auto-comments on all known keywords (not just a subset thereof). | ||
| 250 | Reported by Alex Reed. | ||
| 251 | (verilog-auto-end-comment-lines-re) | ||
| 252 | (verilog-end-block-ordered-re, verilog-set-auto-endcomments): | ||
| 253 | Automatically comment property/endproperty blocks to match other | ||
| 254 | similar blocks like sequence/endsequence, function/endfunction, | ||
| 255 | etc. Reported by Alex Reed. | ||
| 256 | (verilog-set-auto-endcomments): Detect the function- or task-name | ||
| 257 | when auto-commenting blocks that lack an explicit | ||
| 258 | portlist. Reported by Alex Reed. | ||
| 259 | (verilog-auto, verilog-auto-insert-last): Add AUTOINSERTLAST to | ||
| 260 | allow post-AUTO user fixups, bug826. Reported by Dennis | ||
| 261 | Muhlestein. | ||
| 262 | (verilog-no-indent-begin-re): When `verilog-indent-begin-after-if' | ||
| 263 | is nil, fix indenting initial/final to match always statements, | ||
| 264 | bug825. Reported by Tim Clapp. | ||
| 265 | (verilog-extended-complete-re): Fix indentation of DPI-C imports | ||
| 266 | with c_identifiers, and DPI-C imports, bug557. Reported by ZeDong | ||
| 267 | Mao and Jason Forkey. | ||
| 268 | (verilog-read-decls): Fix parsing typed interfaces. Fix | ||
| 269 | AUTOINOUTMODPORT missing types. Reported by Stephan Bourduas. | ||
| 270 | Fix localparam not being ignored in AUTOINSTPARAM, | ||
| 271 | bug889. Reported by Shannon Hill. | ||
| 272 | (verilog-auto-output-every): Add regexp to AUTOOUTPUTEVERY, | ||
| 273 | bug793. Reported by Pierre-David Pfister. | ||
| 274 | (verilog-auto-arg-format, verilog-auto-arg-ports): Add | ||
| 275 | verilog-auto-arg-format to support newlines in AUTOARG. Reported | ||
| 276 | by Jie Xiao. | ||
| 277 | (verilog-batch-execute-func): Do not batch re-auto files loaded by | ||
| 278 | Local Variables. Fix printing "no changes to be saved" with | ||
| 279 | verilog-batch. Reported by Dan Dever. | ||
| 280 | (verilog-auto-inout-module): Fix AUTOINOUTMODULE not inserting | ||
| 281 | interface-only modules, bug721. Reported by Dean Hoyt. | ||
| 282 | Author: Alex Reed <acreed4@gmail.com> | ||
| 283 | * lisp/progmodes/verilog-mode.el (verilog-beg-of-statement): Don't | ||
| 284 | treat '<keyword>:<identifier>' as the start of a labeled | ||
| 285 | statement, bug905. Reported by Enzo Chi. | ||
| 286 | (verilog-directive-re, verilog-compiler-directives) | ||
| 287 | (verilog-keywords): Match full set of IEEE 2012-1800 compiler | ||
| 288 | directives (plus some extras) when determining indentation, bug | ||
| 289 | 901. Reported by Bernd Beuster. | ||
| 290 | (verilog-at-constraint-p): Fix indentation of coverpoint bins if | ||
| 291 | iff expression doesn't start with word-character, bug900. | ||
| 292 | (verilog-optional-signed-range-re, verilog-optional-signed-re): | ||
| 293 | Fix incorrect indentation/alignment of unsigned declarations, | ||
| 294 | bug897. | ||
| 295 | (verilog-looking-back, verilog-in-attribute-p): Fix labling of | ||
| 296 | always constructs, bug895. | ||
| 297 | (verilog-calc-1): Fix verilog-mode constraint indentation, | ||
| 298 | bug324. Reported by Eric Mastromarchi. | ||
| 299 | (verilog-beg-of-statement): Fix indenting for some forms of | ||
| 300 | constraintsm bug433. Reported by Brad Parker. Fix indentation of | ||
| 301 | continued assignment incorrect if first line ends with ']', | ||
| 302 | bug437. Reported by Dan Dever. Fix indention of cover inside an | ||
| 303 | ifdef, bug 862. Reported by Bernd Beuster Fix labeling do-while | ||
| 304 | blocks, bug842. | ||
| 305 | (verilog-preprocessor-re): Fix fork/end UNMATCHED warning, | ||
| 306 | bug859. Reported by Kaushal Modi. | ||
| 307 | (verilog-set-auto-endcomments): Fix endlabel end comments, bug888. | ||
| 308 | (verilog-backward-token): Fix indenting sensitivity lists with | ||
| 309 | named events, bug840. Reed. | ||
| 310 | (verilog-no-indent-begin-re): Fix `verilog-indent-begin-after-if' | ||
| 311 | nil not honoring 'forever', 'foreach', and 'do' keywords. | ||
| 312 | |||
| 313 | 2015-05-14 Paul Eggert <eggert@cs.ucla.edu> | ||
| 314 | |||
| 315 | Check for invalid GTK+ monitor scales | ||
| 316 | * src/gtkutil.c (xg_get_gdk_scale): Return 1 for invalid scales, | ||
| 317 | INT_MAX for too-large scales. All callers changed to assume the | ||
| 318 | result is valid (Bug#20432). | ||
| 319 | (xg_frame_set_char_size, xg_update_scrollbar_pos): | ||
| 320 | Calculate scale only if needed. | ||
| 321 | show ASCII approximations instead. | ||
| 322 | |||
| 323 | 2015-05-14 Eli Zaretskii <eliz@gnu.org> | ||
| 324 | |||
| 325 | Fix daemon crashes when linum-mode is turned on early on | ||
| 326 | * src/window.c (Fwindow_end): Don't try calling display engine | ||
| 327 | functions on initial-frame frame. (Bug#20565) | ||
| 328 | |||
| 329 | Fix selective diff browsing in Ediff | ||
| 330 | * lisp/vc/ediff-util.el (ediff-focus-on-regexp-matches): Go to the | ||
| 331 | beginning of the region before searching for the | ||
| 332 | ediff-regexp-focus-* regexps. (Bug#20568) | ||
| 333 | |||
| 334 | 2015-05-14 Jan D <jan.h.d@swipnet.se> | ||
| 335 | |||
| 336 | Fixes Bug#20142. | ||
| 337 | * gtkutil.c (delete_cb): Don't send delete event here, it does arrive | ||
| 338 | in the main loop, even for Gtk 3 (Bug#20142). | ||
| 339 | |||
| 340 | Don't access display after i/o error (Bug#19147). | ||
| 341 | * xterm.c (x_connection_closed): Add third arg ioerror. | ||
| 342 | If ioerror, set display to 0 (Bug#19147). | ||
| 343 | (x_error_quitter): Call x_connection_closed with third arg false. | ||
| 344 | (x_io_error_quitter): Call x_connection_closed with third arg true. | ||
| 345 | |||
| 346 | Handle GTK_SCALE, fixes Bug#20432. | ||
| 347 | * gtkutil.c (xg_get_gdk_scale): New function. | ||
| 348 | (xg_frame_set_char_size) | ||
| 349 | (x_wm_set_size_hint, xg_get_default_scrollbar_width) | ||
| 350 | (xg_get_default_scrollbar_height) | ||
| 351 | (xg_update_horizontal_scrollbar_pos): Take GTK_SCALE in to account | ||
| 352 | when setting sizes (Bug#20432). | ||
| 353 | |||
| 354 | 2015-05-13 Leo Liu <sdl.web@gmail.com> | ||
| 355 | |||
| 356 | Fix cps--gensym | ||
| 357 | * lisp/emacs-lisp/generator.el (cps--gensym): Fix. | ||
| 358 | |||
| 359 | 2015-05-13 Glenn Morris <rgm@gnu.org> | ||
| 360 | |||
| 361 | Fix bootstrap (void function cl-member). | ||
| 362 | * lisp/emacs-lisp/cl-lib.el: Load cl-seq if no cl-loaddefs file. | ||
| 363 | * lisp/emacs-lisp/cl-seq.el: Provide a feature. | ||
| 364 | |||
| 365 | 2015-05-13 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 366 | |||
| 367 | * lisp/loadup.el ("emacs-lisp/cl-generic"): Preload | ||
| 368 | * src/lisp.mk (lisp): Add emacs-lisp/cl-generic.elc. | ||
| 369 | * lisp/emacs-lisp/cl-generic.el (cl-generic-define-method): | ||
| 370 | Avoid defalias for closures which are not immutable. | ||
| 371 | (cl--generic-prefill-dispatchers): New macro. Use it to prefill the | ||
| 372 | dispatchers table with various entries. | ||
| 373 | * lisp/emacs-lisp/ert.el (emacs-lisp-mode-hook): | ||
| 374 | * lisp/emacs-lisp/seq.el (emacs-lisp-mode-hook): Use add-hook. | ||
| 375 | |||
| 376 | 2015-05-13 Eli Zaretskii <eliz@gnu.org> | ||
| 377 | |||
| 378 | Improve tagging of C bindings in DEFVAR_* | ||
| 379 | * src/Makefile.in (TAGS): Add --regex options to tag the C binding | ||
| 380 | from DEFVAR_*. | ||
| 381 | |||
| 382 | 2015-05-13 Paul Eggert <eggert@cs.ucla.edu> | ||
| 383 | |||
| 384 | * src/editfns.c (Fformat): Fix use-after-free bug (Bug#20548). | ||
| 385 | |||
| 386 | 2015-05-12 Glenn Morris <rgm@gnu.org> | ||
| 387 | |||
| 388 | * lisp/progmodes/tcl.el (tcl-filter): | ||
| 389 | Handle comint-prompt-read-only like gud.el does. (Bug#20549) | ||
| 390 | |||
| 391 | Add basic VC push support. | ||
| 392 | * lisp/vc/vc.el (vc-push): New autoloaded command. | ||
| 393 | * lisp/vc/vc-hooks.el (vc-prefix-map, vc-menu-map): Add vc-push. | ||
| 394 | * lisp/vc/vc-bzr.el (vc-bzr--pushpull): New, factored from vc-bzr-pull. | ||
| 395 | (vc-bzr-pull): Reimplement using vc-bzr--pushpull. | ||
| 396 | (vc-bzr-push): New. | ||
| 397 | * lisp/vc/vc-git.el (vc-git--pushpull): New, factored from vc-git-pull. | ||
| 398 | (vc-git-pull): Reimplement using vc-git--pushpull. | ||
| 399 | (vc-git-push): New. | ||
| 400 | * lisp/vc/vc-hg.el (vc-hg--pushpull): New, factored from vc-hg-pull. | ||
| 401 | (vc-hg-pull, vc-hg-push): Reimplement using vc-hg--pushpull. | ||
| 402 | * doc/emacs/maintaining.texi (Pulling / Pushing): | ||
| 403 | Rename from "VC Pull". Mention pushing. | ||
| 404 | (VC With A Merging VCS, VC Change Log): Update xrefs. | ||
| 405 | (Branches): Update menu. | ||
| 406 | * doc/emacs/emacs.texi: Update menu. | ||
| 407 | * etc/NEWS: Mention this. | ||
| 408 | |||
| 409 | 2015-05-12 Nicolas Petton <nicolas@petton.fr> | ||
| 410 | |||
| 411 | Improve the seq pcase pattern and the `seq-let' macro | ||
| 412 | * lisp/emacs-lisp/seq.el: The pcase pattern now matches only if the | ||
| 413 | object is a sequence, and binds each element of ARGS to the | ||
| 414 | corresponding element of the sequence. | ||
| 415 | |||
| 416 | 2015-05-12 Eli Zaretskii <eliz@gnu.org> | ||
| 417 | |||
| 418 | Fix tags created from DEFVAR_* declarations in C | ||
| 419 | * src/Makefile.in (TAGS): Improve the --regex argument to etags, | ||
| 420 | to make tags extracted from DEFVAR_* declarations more accurate. | ||
| 421 | |||
| 422 | Add a test suite for etags | ||
| 423 | * test/etags/: New test suite, adapted from | ||
| 424 | http://fly.isti.cnr.it/pub/software/unix/etags-regression-test.tar.bz2, | ||
| 425 | whose original author is Francesco Potortì <pot@gnu.org>. | ||
| 426 | |||
| 427 | Fix tagging of symbols in C enumerations | ||
| 428 | * lib-src/etags.c (consider_token): Don't tag symbols in | ||
| 429 | expressions that assign values to enum constants. See | ||
| 430 | http://lists.gnu.org/archive/html/emacs-devel/2015-05/msg00291.html | ||
| 431 | for details. | ||
| 432 | (C_entries): Reset fvdef to fvnone after processing a preprocessor | ||
| 433 | conditional and after a comma outside of parentheses. | ||
| 434 | |||
| 435 | 2015-05-12 Glenn Morris <rgm@gnu.org> | ||
| 436 | |||
| 437 | * lisp/url/url-handlers.el (url-file-name-completion) | ||
| 438 | (url-file-name-all-completions): Silence compiler. | ||
| 439 | |||
| 440 | * lisp/emacs-lisp/chart.el (chart-axis-draw): Replace obsolete alias. | ||
| 441 | |||
| 442 | * lisp/play/dunnet.el (dun-dos-boot-msg): Fix time. (Bug#20554) | ||
| 443 | |||
| 444 | 2015-05-12 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 445 | |||
| 446 | * lisp/emacs-lisp/cl-generic.el: Add dispatch on &context arguments | ||
| 447 | (cl--generic-mandatory-args): Remove. | ||
| 448 | (cl--generic-split-args): New function. | ||
| 449 | (cl-generic-define, cl--generic-lambda): Use it. | ||
| 450 | (cl-generic-define-method): Use it as well, and add support for | ||
| 451 | context args. | ||
| 452 | (cl--generic-get-dispatcher): Handle &context dispatch. | ||
| 453 | (cl--generic-cache-miss): `dispatch-arg' can now be a context expression. | ||
| 454 | (cl--generic-dispatchers): Pre-fill. | ||
| 455 | * test/automated/cl-generic-tests.el (sm-generic-test-12-context): New test. | ||
| 456 | |||
| 457 | 2015-05-11 Glenn Morris <rgm@gnu.org> | ||
| 458 | |||
| 459 | * make-dist: Abort if "make ChangeLog" fails. Add "--no-changelog". | ||
| 460 | |||
| 461 | 2015-05-11 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 462 | |||
| 463 | * lisp/term/xterm.el: Fix xterm-paste handling for rxvt | ||
| 464 | * lisp/term/rxvt.el: Require term/xterm. | ||
| 465 | (rxvt-function-map): Use xterm-rxvt-function-map. | ||
| 466 | (rxvt-standard-colors): Move before first use. | ||
| 467 | (terminal-init-rxvt): Use xterm--push-map and xterm-register-default-colors. | ||
| 468 | (rxvt-rgb-convert-to-16bit, rxvt-register-default-colors): Remove. | ||
| 469 | * lisp/term/xterm.el (xterm-rxvt-function-map): New var. | ||
| 470 | Move shared bindings between rxvt and xterm to it. | ||
| 471 | (xterm-function-map): Use it. Move the xterm-paste binding to | ||
| 472 | xterm-rxvt-function-map (bug#20444). | ||
| 473 | (xterm-standard-colors): Move before first use. | ||
| 474 | (xterm--push-map): New function. | ||
| 475 | (xterm-register-default-colors): Take standard colors as argument. | ||
| 476 | (terminal-init-xterm): Use it. Adjust call to | ||
| 477 | xterm-register-default-colors. | ||
| 478 | |||
| 479 | 2015-05-11 Glenn Morris <rgm@gnu.org> | ||
| 480 | |||
| 481 | * lisp/term/x-win.el: Quieten --without-x compilation. | ||
| 482 | (x-own-selection-internal, x-disown-selection-internal) | ||
| 483 | (x-selection-owner-p, x-selection-exists-p, x-get-selection-internal): | ||
| 484 | Declare. | ||
| 485 | |||
| 486 | * Makefile.in (emacslog): Remove srcdir. | ||
| 487 | (ChangeLog): Update for the above. | ||
| 488 | |||
| 489 | 2015-05-11 Paul Eggert <eggert@cs.ucla.edu> | ||
| 490 | |||
| 491 | Spelling fix | ||
| 492 | |||
| 493 | 2015-05-10 Fabián Ezequiel Gallina <fgallina@gnu.org> | ||
| 494 | |||
| 495 | python.el: better limit for looking-back calls | ||
| 496 | * lisp/progmodes/python.el (python-shell-accept-process-output): | ||
| 497 | Use last comint prompt start as limit for looking-back. | ||
| 498 | |||
| 499 | 2015-05-10 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 500 | |||
| 501 | CEDET (srecode-insert-fcn): Fix use of oref on a class | ||
| 502 | * lisp/cedet/srecode/insert.el (srecode-insert-fcn): Fix use of oref on | ||
| 503 | a class. Reported by Pierre Lorenzon. | ||
| 504 | (srecode-template-inserter-point): Remove declaration. | ||
| 505 | |||
| 506 | CEDET (srecode-create-dictionary): Avoid obsolete object name | ||
| 507 | * lisp/cedet/srecode/dictionary.el (srecode-create-dictionary): | ||
| 508 | Don't use a symbol as an object name. Reported by Pierre Lorenzon. | ||
| 509 | |||
| 510 | 2015-05-10 Paul Eggert <eggert@cs.ucla.edu> | ||
| 511 | |||
| 512 | C-x 8 shorthands for curved quotes, Euro, etc. | ||
| 513 | Although C-x 8 lets you insert arbitrary Unicode characters, | ||
| 514 | it's awkward to use this to insert commonly used symbols such as curved | ||
| 515 | quotes, the Euro symbol, etc. This patch adds simpler sequences for | ||
| 516 | characters commonly found in English text and in basic math. | ||
| 517 | For example, assuming the Alt key works on your keyboard and iso-transl | ||
| 518 | is loaded, one can now type "A-[" instead of "A-RET LEFT SIN TAB RET" | ||
| 519 | to get the character "‘" (U+2018 LEFT SINGLE QUOTATION MARK). | ||
| 520 | (Bug#20499) | ||
| 521 | * doc/emacs/mule.texi (Unibyte Mode): | ||
| 522 | A few other printing characters now work too. | ||
| 523 | * etc/NEWS: Document this. | ||
| 524 | * lisp/international/iso-transl.el (iso-transl-char-map): | ||
| 525 | Also support the following characters: | ||
| 526 | †‑ ‒ – — ― ‘ ’ “ ††‡ • ′ ″ € № ↠→ ↔ − ≈ ≠≤ ≥ | ||
| 527 | |||
| 528 | 2015-05-10 Dmitry Gutov <dgutov@yandex.ru> | ||
| 529 | |||
| 530 | Add xref-find-regexp | ||
| 531 | * lisp/progmodes/xref.el (xref-find-function): Describe the | ||
| 532 | `matches' action. | ||
| 533 | (xref-find-regexp): New command, using it. | ||
| 534 | (xref-collect-references): Rename to xref-collect-matches. | ||
| 535 | (xref--collect-reference): Rename to xref--collect-match. | ||
| 536 | (xref-collect-matches, xref--collect-match): Accept new argument, | ||
| 537 | KIND. Update accordingly. | ||
| 538 | (xref--regexp-to-extended): New function. | ||
| 539 | * lisp/progmodes/elisp-mode.el (elisp-xref-find): Support the | ||
| 540 | `matches' action. | ||
| 541 | (elisp--xref-find-matches): Accept new argument. Resolve a FIXME. | ||
| 542 | * lisp/progmodes/etags.el (etags-xref-find): | ||
| 543 | Support the `matches' action. | ||
| 544 | (etags--xref-find-matches): New function. | ||
| 545 | |||
| 546 | 2015-05-10 Glenn Morris <rgm@gnu.org> | ||
| 547 | |||
| 548 | * Makefile.in: Fixes for recent change-history changes. | ||
| 549 | (change-history-nocommit): Update footer regexp. | ||
| 550 | Ensure output script stays executable. | ||
| 551 | |||
| 552 | 2015-05-10 Nicolas Petton <nicolas@petton.fr> | ||
| 553 | |||
| 554 | New version of `seq-let' based on a pcase pattern | ||
| 555 | * lisp/emacs-lisp/seq.el (seq-let): Define the macro in terms of a | ||
| 556 | pcase pattern if `pcase-defmacro' is defined (Emacs>=25.1). | ||
| 557 | |||
| 558 | 2015-05-10 Przemysław Wojnowski <esperanto@cumego.com> | ||
| 559 | |||
| 560 | Add basic HTML5 tags and a template | ||
| 561 | * lisp/textmodes/sgml-mode.el: Basic HTML5 support. | ||
| 562 | (html-tag-alist): Add HTML5 tags. | ||
| 563 | (html-tag-help): Add new tags descriptions. | ||
| 564 | (html-navigational-links): Template for nav links. | ||
| 565 | (html-html5-template): Template for a HTML5 page. | ||
| 566 | |||
| 567 | 2015-05-10 Dmitry Gutov <dgutov@yandex.ru> | ||
| 568 | |||
| 569 | semantic/symref/grep: Don't use word boundaries | ||
| 570 | * lisp/cedet/semantic/symref/grep.el | ||
| 571 | (semantic-symref-perform-search): Instead of wrapping input in | ||
| 572 | word boundaries, check that the characters before and after are | ||
| 573 | not word constituents. | ||
| 574 | |||
| 575 | semantic/symref/grep: Support regexp search | ||
| 576 | * lisp/cedet/semantic/symref.el | ||
| 577 | (semantic-symref-hit-to-tag-via-buffer): Don't regexp-quote when | ||
| 578 | the search type is regexp. | ||
| 579 | * lisp/cedet/semantic/symref/grep.el | ||
| 580 | (semantic-symref-perform-search): Support the regexp search type. | ||
| 581 | Pass -E to Grep when it's used. | ||
| 582 | |||
| 583 | semantic-symref-regexp: Allow to input an arbitrary string | ||
| 584 | * lisp/cedet/semantic/symref/list.el (semantic-symref-regexp): | ||
| 585 | Allow to input an arbitrary string interactively. | ||
| 586 | |||
| 587 | Remove tag-symbol-match-p from etags-xref-find-definitions-tag-order | ||
| 588 | * lisp/progmodes/etags.el (etags-xref-find-definitions-tag-order): | ||
| 589 | Remove tag-symbol-match-p from the default value | ||
| 590 | (http://lists.gnu.org/archive/html/emacs-devel/2015-05/msg00292.html). | ||
| 591 | |||
| 592 | Declare find-tag obsolete | ||
| 593 | * lisp/progmodes/etags.el (find-tag): Declare obsolete in favor of | ||
| 594 | xref-find-definitions. | ||
| 595 | |||
| 596 | 2015-05-10 Jan D <jan.h.d@swipnet.se> | ||
| 597 | |||
| 598 | Draw composite string correctly (Bug#20537). | ||
| 599 | * nsterm.m (ns_draw_composite_glyph_string_foreground): New function. | ||
| 600 | (ns_draw_glyph_string): Call it (Bug#20537). | ||
| 601 | |||
| 1 | 2015-05-09 Eli Zaretskii <eliz@gnu.org> | 602 | 2015-05-09 Eli Zaretskii <eliz@gnu.org> |
| 2 | 603 | ||
| 3 | Avoid infloop in ERC | 604 | Avoid infloop in ERC |
diff --git a/Makefile.in b/Makefile.in index eec6d313524..9790dbd7b10 100644 --- a/Makefile.in +++ b/Makefile.in | |||
| @@ -831,7 +831,7 @@ clean_dirs = $(mostlyclean_dirs) nextstep | |||
| 831 | $(foreach dir,$(clean_dirs),$(eval $(call submake_template,$(dir),clean))) | 831 | $(foreach dir,$(clean_dirs),$(eval $(call submake_template,$(dir),clean))) |
| 832 | 832 | ||
| 833 | clean: $(clean_dirs:=_clean) | 833 | clean: $(clean_dirs:=_clean) |
| 834 | for dir in test/automated; do \ | 834 | for dir in test/automated admin/charsets; do \ |
| 835 | [ ! -d $$dir ] || $(MAKE) -C $$dir clean; \ | 835 | [ ! -d $$dir ] || $(MAKE) -C $$dir clean; \ |
| 836 | done | 836 | done |
| 837 | -rm -f *.tmp etc/*.tmp* | 837 | -rm -f *.tmp etc/*.tmp* |
| @@ -856,8 +856,10 @@ distclean_dirs = $(clean_dirs) leim lisp | |||
| 856 | 856 | ||
| 857 | $(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),distclean))) | 857 | $(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),distclean))) |
| 858 | 858 | ||
| 859 | maybeclean_dirs = test/automated admin/grammars admin/unidata admin/charsets | ||
| 860 | |||
| 859 | distclean: $(distclean_dirs:=_distclean) | 861 | distclean: $(distclean_dirs:=_distclean) |
| 860 | for dir in test/automated admin/grammars admin/unidata; do \ | 862 | for dir in ${maybeclean_dirs}; do \ |
| 861 | [ ! -d $$dir ] || $(MAKE) -C $$dir distclean; \ | 863 | [ ! -d $$dir ] || $(MAKE) -C $$dir distclean; \ |
| 862 | done | 864 | done |
| 863 | ${top_distclean} | 865 | ${top_distclean} |
| @@ -868,7 +870,7 @@ distclean: $(distclean_dirs:=_distclean) | |||
| 868 | $(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),bootstrap-clean))) | 870 | $(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),bootstrap-clean))) |
| 869 | 871 | ||
| 870 | bootstrap-clean: $(distclean_dirs:=_bootstrap-clean) | 872 | bootstrap-clean: $(distclean_dirs:=_bootstrap-clean) |
| 871 | for dir in test/automated admin/grammars admin/unidata; do \ | 873 | for dir in ${maybeclean_dirs}; do \ |
| 872 | [ ! -d $$dir ] || $(MAKE) -C $$dir bootstrap-clean; \ | 874 | [ ! -d $$dir ] || $(MAKE) -C $$dir bootstrap-clean; \ |
| 873 | done | 875 | done |
| 874 | [ ! -f config.log ] || mv -f config.log config.log~ | 876 | [ ! -f config.log ] || mv -f config.log config.log~ |
| @@ -896,7 +898,7 @@ maintainer_clean_dirs = src leim lisp | |||
| 896 | $(foreach dir,$(maintainer_clean_dirs),$(eval $(call submake_template,$(dir),maintainer-clean))) | 898 | $(foreach dir,$(maintainer_clean_dirs),$(eval $(call submake_template,$(dir),maintainer-clean))) |
| 897 | 899 | ||
| 898 | maintainer-clean: bootstrap-clean $(maintainer_clean_dirs:=_maintainer-clean) | 900 | maintainer-clean: bootstrap-clean $(maintainer_clean_dirs:=_maintainer-clean) |
| 899 | for dir in test/automated admin/grammars admin/unidata; do \ | 901 | for dir in ${maybeclean_dirs}; do \ |
| 900 | [ ! -d $$dir ] || $(MAKE) -C $$dir maintainer-clean; \ | 902 | [ ! -d $$dir ] || $(MAKE) -C $$dir maintainer-clean; \ |
| 901 | done | 903 | done |
| 902 | ${top_maintainer_clean} | 904 | ${top_maintainer_clean} |
| @@ -910,6 +912,7 @@ maintainer-clean: bootstrap-clean $(maintainer_clean_dirs:=_maintainer-clean) | |||
| 910 | $(foreach dir,$(SUBDIR),$(eval $(call submake_template,$(dir),extraclean))) | 912 | $(foreach dir,$(SUBDIR),$(eval $(call submake_template,$(dir),extraclean))) |
| 911 | 913 | ||
| 912 | ## FIXME this is busted because most of these do not have extraclean rules. | 914 | ## FIXME this is busted because most of these do not have extraclean rules. |
| 915 | ## Also it is missing things that do have such rules. | ||
| 913 | extraclean: $(SUBDIR:=_extraclean) | 916 | extraclean: $(SUBDIR:=_extraclean) |
| 914 | ${top_maintainer_clean} | 917 | ${top_maintainer_clean} |
| 915 | -rm -f config-tmp-* | 918 | -rm -f config-tmp-* |
diff --git a/admin/charsets/Makefile b/admin/charsets/Makefile deleted file mode 100644 index e5cf2508d85..00000000000 --- a/admin/charsets/Makefile +++ /dev/null | |||
| @@ -1,324 +0,0 @@ | |||
| 1 | # Makefile -- Makefile to generate charset maps in etc/charsets. | ||
| 2 | # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 | ||
| 3 | # National Institute of Advanced Industrial Science and Technology (AIST) | ||
| 4 | # Registration Number H13PRO009 | ||
| 5 | # | ||
| 6 | # This file is part of GNU Emacs. | ||
| 7 | |||
| 8 | # GNU Emacs is free software: you can redistribute it and/or modify | ||
| 9 | # it under the terms of the GNU General Public License as published by | ||
| 10 | # the Free Software Foundation, either version 3 of the License, or | ||
| 11 | # (at your option) any later version. | ||
| 12 | |||
| 13 | # GNU Emacs is distributed in the hope that it will be useful, | ||
| 14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 16 | # GNU General Public License for more details. | ||
| 17 | |||
| 18 | # You should have received a copy of the GNU General Public License | ||
| 19 | # along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| 20 | |||
| 21 | # Commentary: | ||
| 22 | |||
| 23 | # If your system doesn't have the directory /usr/share/i18n/charmaps, | ||
| 24 | # get the source of the latest glibc, gzip all the charmap files in | ||
| 25 | # the directory "localedate/charmaps", and set the variable | ||
| 26 | # GLIBC_CHARMAPS to that directory. | ||
| 27 | |||
| 28 | GLIBC_CHARMAPS=/usr/share/i18n/charmaps | ||
| 29 | |||
| 30 | CHARSETS = ${ISO8859} ${IBM} ${CODEPAGE} ${CJK} ${MISC} ${MULE} | ||
| 31 | |||
| 32 | # Note: We can not prepend "ISO-" to these map files because of file | ||
| 33 | # name limits on DOS. | ||
| 34 | ISO8859 = \ | ||
| 35 | 8859-2.map 8859-3.map 8859-4.map 8859-5.map 8859-6.map 8859-7.map \ | ||
| 36 | 8859-8.map 8859-9.map 8859-10.map 8859-11.map 8859-13.map 8859-14.map \ | ||
| 37 | 8859-15.map 8859-16.map | ||
| 38 | |||
| 39 | IBM = \ | ||
| 40 | IBM037.map IBM038.map \ | ||
| 41 | IBM256.map IBM273.map IBM274.map IBM275.map IBM277.map IBM278.map \ | ||
| 42 | IBM280.map IBM281.map IBM284.map IBM285.map IBM290.map IBM297.map \ | ||
| 43 | IBM420.map IBM423.map IBM424.map IBM437.map IBM500.map IBM850.map \ | ||
| 44 | IBM851.map IBM852.map IBM855.map IBM856.map IBM857.map IBM860.map \ | ||
| 45 | IBM861.map IBM862.map IBM863.map IBM864.map IBM865.map IBM866.map \ | ||
| 46 | IBM868.map IBM869.map IBM870.map IBM871.map IBM874.map IBM875.map \ | ||
| 47 | IBM880.map IBM891.map IBM903.map IBM904.map IBM905.map IBM918.map \ | ||
| 48 | IBM1004.map IBM1026.map IBM1047.map | ||
| 49 | |||
| 50 | CODEPAGE = \ | ||
| 51 | CP737.map CP775.map CP1125.map\ | ||
| 52 | CP1250.map CP1251.map CP1252.map CP1253.map CP1254.map \ | ||
| 53 | CP1255.map CP1256.map CP1257.map CP1258.map \ | ||
| 54 | CP10007.map \ | ||
| 55 | CP720.map CP858.map | ||
| 56 | |||
| 57 | CJK = GB2312.map GBK.map GB180302.map GB180304.map \ | ||
| 58 | BIG5.map BIG5-HKSCS.map\ | ||
| 59 | CNS-1.map CNS-2.map CNS-3.map CNS-4.map CNS-5.map CNS-6.map CNS-7.map \ | ||
| 60 | CNS-F.map \ | ||
| 61 | JISX0201.map JISX0208.map JISX0212.map JISX2131.map JISX2132.map \ | ||
| 62 | JISC6226.map CP932-2BYTE.map JISX213A.map\ | ||
| 63 | KSC5601.map KSC5636.map JOHAB.map | ||
| 64 | |||
| 65 | MISC = KOI-8.map KOI8-R.map KOI8-U.map KOI8-T.map ALTERNATIVNYJ.map \ | ||
| 66 | MIK.map PTCP154.map \ | ||
| 67 | TIS-620.map VISCII.map VSCII.map VSCII-2.map\ | ||
| 68 | KA-PS.map KA-ACADEMY.map \ | ||
| 69 | HP-ROMAN8.map NEXTSTEP.map MACINTOSH.map EBCDICUK.map EBCDICUS.map \ | ||
| 70 | stdenc.map symbol.map \ | ||
| 71 | CP949-2BYTE.map \ | ||
| 72 | BIG5-1.map BIG5-2.map | ||
| 73 | |||
| 74 | # Emacs-mule charsets. | ||
| 75 | MULE = MULE-ethiopic.map MULE-ipa.map MULE-is13194.map \ | ||
| 76 | MULE-sisheng.map MULE-tibetan.map \ | ||
| 77 | MULE-lviscii.map MULE-uviscii.map | ||
| 78 | |||
| 79 | TRANS_TABLE = cp51932.el eucjp-ms.el | ||
| 80 | SED_SCRIPT = jisx2131-filter | ||
| 81 | |||
| 82 | all: ${CHARSETS} ${TRANS_TABLE} | ||
| 83 | |||
| 84 | AWK = gawk | ||
| 85 | |||
| 86 | # Rules for each charset | ||
| 87 | |||
| 88 | VSCII.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz mapconv compact.awk | ||
| 89 | # Generating $@... | ||
| 90 | @./mapconv $< '/^<.*[ ]\/x[0-9a-f].[ ]/' GLIBC-1 compact.awk > $@ | ||
| 91 | |||
| 92 | VSCII-2.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz mapconv compact.awk | ||
| 93 | # Generating $@... | ||
| 94 | @./mapconv $< '/^<.*[ ]\/x[2-7a-f].[ ]/' GLIBC-1 compact.awk \ | ||
| 95 | | sed 's/0x20-0x7F.*/0x00-0x7F 0x0000/' > $@ | ||
| 96 | |||
| 97 | ALTERNATIVNYJ.map: IBM866.map | ||
| 98 | # Generating $@... | ||
| 99 | @echo "# Modified from IBM866.map according to the chart at" > $@ | ||
| 100 | @echo "# http://www.cyrillic.com/ref/cyrillic/koi-8alt.html," >> $@ | ||
| 101 | @echo "# with guesses for the Unicodes of the glyphs." >> $@ | ||
| 102 | @sed -e '1 d' \ | ||
| 103 | -e '/0xF2/ s/ .*/ 0x2019/' \ | ||
| 104 | -e '/0xF3/ s/ .*/ 0x2018/' \ | ||
| 105 | -e '/0xF4/ s/ .*/ 0x0301/' \ | ||
| 106 | -e '/0xF5/ s/ .*/ 0x0300/' \ | ||
| 107 | -e '/0xF6/ s/ .*/ 0x203A/' \ | ||
| 108 | -e '/0xF7/ s/ .*/ 0x2039/' \ | ||
| 109 | -e '/0xF8/ s/ .*/ 0x2191/' \ | ||
| 110 | -e '/0xF9/ s/ .*/ 0x2193/' \ | ||
| 111 | -e '/0xFA/ s/ .*/ 0x00B1/' \ | ||
| 112 | -e '/0xFB/ s/ .*/ 0x00F7/' < $< >> $@ | ||
| 113 | |||
| 114 | MIK.map: mapfiles/bulgarian-mik.txt mapconv compact.awk | ||
| 115 | # Generating $@... | ||
| 116 | @./mapconv $< '1,$$' CZYBORRA compact.awk > $@ | ||
| 117 | |||
| 118 | PTCP154.map: mapfiles/PTCP154 mapconv compact.awk | ||
| 119 | # Generating $@... | ||
| 120 | @./mapconv $< '/^0x/' IANA compact.awk > $@ | ||
| 121 | |||
| 122 | stdenc.map: mapfiles/stdenc.txt mapconv compact.awk | ||
| 123 | # Generating $@... | ||
| 124 | @./mapconv $< '/^[0-9A-Fa-f]/' UNICODE compact.awk > $@ | ||
| 125 | |||
| 126 | symbol.map: mapfiles/symbol.txt mapconv compact.awk | ||
| 127 | # Generating $@... | ||
| 128 | @./mapconv $< '/^[0-9A-Fa-f]/' UNICODE compact.awk > $@ | ||
| 129 | |||
| 130 | CP720.map: mapfiles/CP720.map | ||
| 131 | # Generating $@... | ||
| 132 | @cp $< $@ | ||
| 133 | |||
| 134 | CP858.map: mapfiles/CP858.map | ||
| 135 | # Generating $@... | ||
| 136 | @cp $< $@ | ||
| 137 | |||
| 138 | CP949-2BYTE.map: ${GLIBC_CHARMAPS}/CP949.gz mapconv compact.awk | ||
| 139 | # Generating $@... | ||
| 140 | @./mapconv $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 compact.awk > $@ | ||
| 141 | |||
| 142 | GB2312.map: ${GLIBC_CHARMAPS}/GB2312.gz mapconv compact.awk | ||
| 143 | # Generating $@... | ||
| 144 | @./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 compact.awk > $@ | ||
| 145 | |||
| 146 | GBK.map: ${GLIBC_CHARMAPS}/GBK.gz mapconv compact.awk | ||
| 147 | # Generating $@... | ||
| 148 | @./mapconv $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 compact.awk > $@ | ||
| 149 | |||
| 150 | GB180302.map: ${GLIBC_CHARMAPS}/GB18030.gz mapconv gb180302.awk | ||
| 151 | # Generating $@... | ||
| 152 | @./mapconv $< '/^<.*[ ]\/x..\/x..[ ]/' GLIBC-2 gb180302.awk > $@ | ||
| 153 | |||
| 154 | GB180304.map: GB180302.map gb180304.awk | ||
| 155 | # Generating $@... | ||
| 156 | @$(AWK) -f gb180304.awk < $< > $@ | ||
| 157 | |||
| 158 | JISX0201.map: ${GLIBC_CHARMAPS}/JIS_X0201.gz mapconv compact.awk | ||
| 159 | # Generating $@... | ||
| 160 | @./mapconv $< '/^<.*[ ]\/x[0-9]/' GLIBC-1 compact.awk > $@ | ||
| 161 | @echo "# Generated by hand" >> $@ | ||
| 162 | @echo "0xA1-0xDF 0xFF61" >> $@ | ||
| 163 | |||
| 164 | JISX0208.map: ${GLIBC_CHARMAPS}/EUC-JP.gz mapconv | ||
| 165 | # Generating $@... | ||
| 166 | @./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \ | ||
| 167 | | sed 's/0x2015/0x2014/' > $@ | ||
| 168 | |||
| 169 | JISX0212.map: ${GLIBC_CHARMAPS}/EUC-JP.gz mapconv compact.awk | ||
| 170 | # Generating $@... | ||
| 171 | @./mapconv $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 compact.awk > $@ | ||
| 172 | |||
| 173 | jisx2131-filter: mapfiles/JISX213A.map | ||
| 174 | @sed -n -e '/^#/d' -e 's,.*0x\([0-9A-Z]*\)$$,/0x0*\1$$/d,p' < $< > $@ | ||
| 175 | |||
| 176 | JISX2131.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz mapconv jisx2131-filter | ||
| 177 | # Generating $@... | ||
| 178 | @./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \ | ||
| 179 | | sed -f jisx2131-filter \ | ||
| 180 | | sed -e 's/0x2015/0x2014/' -e 's/0x2299/0x29BF/' > $@ | ||
| 181 | |||
| 182 | JISX2132.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz mapconv | ||
| 183 | # Generating $@... | ||
| 184 | @./mapconv $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 > $@ | ||
| 185 | |||
| 186 | JISX213A.map: mapfiles/JISX213A.map | ||
| 187 | # Generating $@ | ||
| 188 | @cp $< $@ | ||
| 189 | |||
| 190 | CP932-2BYTE.map: mapfiles/CP932.TXT mapconv cp932.awk | ||
| 191 | # Generating $@... | ||
| 192 | @./mapconv $< '/^0x[89A-F][0-9A-F][0-9A-F]/' UNICODE2 cp932.awk > $@ | ||
| 193 | |||
| 194 | cp51932.el: CP932-2BYTE.map cp51932.awk | ||
| 195 | @$(AWK) -f cp51932.awk < CP932-2BYTE.map > $@ | ||
| 196 | |||
| 197 | eucjp-ms.el: ${GLIBC_CHARMAPS}/EUC-JP-MS.gz eucjp-ms.awk | ||
| 198 | @zcat $< | $(AWK) -f eucjp-ms.awk > $@ | ||
| 199 | |||
| 200 | JISC6226.map: mapfiles/Uni2JIS mapconv kuten.awk | ||
| 201 | # Generating $@... | ||
| 202 | # As Uni2JIS doesn't contain mappings of characters added to Unicode | ||
| 203 | # recently, we add them manually here (including one correction for | ||
| 204 | # U+005C vs U+FF3C). These changes are based on bogytech's blog at | ||
| 205 | # http://bogytech.blogspot.jp/search/label/emacs. | ||
| 206 | @./mapconv $< '/^[^#].*0-/' YASUOKA kuten.awk \ | ||
| 207 | | sed -e '/0x2140/s/005C/FF3C/' \ | ||
| 208 | -e '$$ a 0x3442 0x3D4E' \ | ||
| 209 | -e '$$ a 0x374E 0x25874' \ | ||
| 210 | -e '$$ a 0x3764 0x28EF6' \ | ||
| 211 | -e '$$ a 0x513D 0x2F80F' \ | ||
| 212 | -e '$$ a 0x7045 0x9724' > $@ | ||
| 213 | |||
| 214 | KSC5601.map: ${GLIBC_CHARMAPS}/EUC-KR.gz mapconv compact.awk | ||
| 215 | # Generating $@... | ||
| 216 | @./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 compact.awk > $@ | ||
| 217 | |||
| 218 | BIG5.map: ${GLIBC_CHARMAPS}/BIG5.gz mapconv compact.awk | ||
| 219 | # Generating $@... | ||
| 220 | @./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2 > $@ | ||
| 221 | |||
| 222 | BIG5-1.map: BIG5.map mapconv big5.awk | ||
| 223 | # Generating $@... | ||
| 224 | @echo "# Generated from $<" > $@ | ||
| 225 | @sed -n -e '/0xa140/,/0xc8fe/p' < $< | gawk -f big5.awk >> $@ | ||
| 226 | |||
| 227 | BIG5-2.map: BIG5.map mapconv big5.awk | ||
| 228 | # Generating $@... | ||
| 229 | @echo "# Generated from $<" > $@ | ||
| 230 | @sed -n -e '/0xc940/,$$ p' < $< | gawk -f big5.awk >> $@ | ||
| 231 | |||
| 232 | BIG5-HKSCS.map: ${GLIBC_CHARMAPS}/BIG5-HKSCS.gz mapconv compact.awk | ||
| 233 | # Generating $@... | ||
| 234 | @./mapconv $< '/^<.*[ ]\/x[89a-f].\//' GLIBC-2 compact.awk > $@ | ||
| 235 | |||
| 236 | JOHAB.map: ${GLIBC_CHARMAPS}/JOHAB.gz mapconv compact.awk | ||
| 237 | # Generating $@... | ||
| 238 | @./mapconv $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 compact.awk > $@ | ||
| 239 | |||
| 240 | CNS-1.map: ${GLIBC_CHARMAPS}/EUC-TW.gz mapconv compact.awk | ||
| 241 | # Generating $@... | ||
| 242 | @./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 compact.awk > $@ | ||
| 243 | |||
| 244 | # CNS-1.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk | ||
| 245 | # # Generating $@... | ||
| 246 | # @./mapconv $< '/^C1/' KANJI-DATABASE compact.awk > $@ | ||
| 247 | |||
| 248 | CNS-2.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk | ||
| 249 | # Generating $@... | ||
| 250 | @./mapconv $< '/^C2/' KANJI-DATABASE compact.awk > $@ | ||
| 251 | |||
| 252 | CNS-3.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk | ||
| 253 | # Generating $@... | ||
| 254 | @./mapconv $< '/^C3/' KANJI-DATABASE compact.awk > $@ | ||
| 255 | |||
| 256 | CNS-4.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk | ||
| 257 | # Generating $@... | ||
| 258 | @./mapconv $< '/^C4/' KANJI-DATABASE compact.awk > $@ | ||
| 259 | |||
| 260 | CNS-5.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk | ||
| 261 | # Generating $@... | ||
| 262 | @./mapconv $< '/^C5/' KANJI-DATABASE compact.awk > $@ | ||
| 263 | |||
| 264 | CNS-6.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk | ||
| 265 | # Generating $@... | ||
| 266 | @./mapconv $< '/^C6/' KANJI-DATABASE compact.awk > $@ | ||
| 267 | |||
| 268 | CNS-7.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk | ||
| 269 | # Generating $@... | ||
| 270 | @./mapconv $< '/^C7/' KANJI-DATABASE compact.awk > $@ | ||
| 271 | |||
| 272 | CNS-F.map: ${GLIBC_CHARMAPS}/EUC-TW.gz mapconv compact.awk | ||
| 273 | # Generating $@... | ||
| 274 | @./mapconv $< '/^<.*\/x8e\/xaf/ s,/x8e/xaf,,' GLIBC-2-7 compact.awk > $@ | ||
| 275 | |||
| 276 | # General target to produce map files for mule charsets. | ||
| 277 | MULE-%.map: mapfiles/MULE-%.map | ||
| 278 | # Generating $@... | ||
| 279 | @cp $< $@ | ||
| 280 | |||
| 281 | # General target to produce map files for ISO-8859, GEORGIAN, and | ||
| 282 | # EBCDIC charsets. We can not use the original file name because of | ||
| 283 | # file name limit on DOS. "KA" is ISO 639 language code for Georgian. | ||
| 284 | |||
| 285 | 8859-%.map: ${GLIBC_CHARMAPS}/ISO-8859-%.gz mapconv compact.awk | ||
| 286 | # Generating $@... | ||
| 287 | @./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@ | ||
| 288 | |||
| 289 | KA-%.map: ${GLIBC_CHARMAPS}/GEORGIAN-%.gz mapconv compact.awk | ||
| 290 | # Generating $@... | ||
| 291 | @./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@ | ||
| 292 | |||
| 293 | EBCDIC%.map: ${GLIBC_CHARMAPS}/EBCDIC-%.gz mapconv compact.awk | ||
| 294 | # Generating $@... | ||
| 295 | @./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@ | ||
| 296 | |||
| 297 | # General target to produce map files for single-byte charsets. | ||
| 298 | |||
| 299 | %.map: ${GLIBC_CHARMAPS}/%.gz mapconv compact.awk | ||
| 300 | # Generating $@... | ||
| 301 | @./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@ | ||
| 302 | |||
| 303 | install: | ||
| 304 | @for f in ${CHARSETS}; do \ | ||
| 305 | if test -r $$f; then \ | ||
| 306 | if ! cmp -s $$f ../../etc/charsets/$$f; then \ | ||
| 307 | echo updating $$f; \ | ||
| 308 | cp $$f ../../etc/charsets; \ | ||
| 309 | fi; \ | ||
| 310 | fi; \ | ||
| 311 | done | ||
| 312 | @for f in ${TRANS_TABLE}; do \ | ||
| 313 | if test -r $$f; then \ | ||
| 314 | if ! cmp -s $$f ../../lisp/international/$$f; then \ | ||
| 315 | echo updating $$f; \ | ||
| 316 | cp $$f ../../lisp/international; \ | ||
| 317 | fi; \ | ||
| 318 | fi; \ | ||
| 319 | done | ||
| 320 | |||
| 321 | # Clear files that are automatically generated. | ||
| 322 | clean: | ||
| 323 | rm -f ${CHARSETS} ${TRANS_TABLE} ${SED_SCRIPT} | ||
| 324 | |||
diff --git a/admin/charsets/Makefile.in b/admin/charsets/Makefile.in new file mode 100644 index 00000000000..0b96cd19713 --- /dev/null +++ b/admin/charsets/Makefile.in | |||
| @@ -0,0 +1,335 @@ | |||
| 1 | ### @configure_input@ | ||
| 2 | |||
| 3 | # Copyright (C) 2015 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 | ||
| 6 | # National Institute of Advanced Industrial Science and Technology (AIST) | ||
| 7 | # Registration Number H13PRO009 | ||
| 8 | # | ||
| 9 | # This file is part of GNU Emacs. | ||
| 10 | |||
| 11 | # GNU Emacs is free software: you can redistribute it and/or modify | ||
| 12 | # it under the terms of the GNU General Public License as published by | ||
| 13 | # the Free Software Foundation, either version 3 of the License, or | ||
| 14 | # (at your option) any later version. | ||
| 15 | |||
| 16 | # GNU Emacs is distributed in the hope that it will be useful, | ||
| 17 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 18 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 19 | # GNU General Public License for more details. | ||
| 20 | |||
| 21 | # You should have received a copy of the GNU General Public License | ||
| 22 | # along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| 23 | |||
| 24 | ### Commentary: | ||
| 25 | |||
| 26 | # Generate charset maps in etc/charsets. | ||
| 27 | |||
| 28 | # If your system doesn't have the directory /usr/share/i18n/charmaps, | ||
| 29 | # get the source of the latest glibc, gzip all the charmap files in | ||
| 30 | # the directory "localedate/charmaps", and set the variable | ||
| 31 | # GLIBC_CHARMAPS to that directory. | ||
| 32 | |||
| 33 | SHELL = @SHELL@ | ||
| 34 | |||
| 35 | AWK = @AWK@ | ||
| 36 | |||
| 37 | srcdir = @srcdir@ | ||
| 38 | top_srcdir = @top_srcdir@ | ||
| 39 | |||
| 40 | charsetdir = ${top_srcdir}/etc/charsets | ||
| 41 | lispintdir = ${top_srcdir}/lisp/international | ||
| 42 | mapfiledir = ${srcdir}/mapfiles | ||
| 43 | |||
| 44 | GLIBC_CHARMAPS=/usr/share/i18n/charmaps | ||
| 45 | |||
| 46 | AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ | ||
| 47 | AM_V_GEN = $(am__v_GEN_@AM_V@) | ||
| 48 | am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) | ||
| 49 | am__v_GEN_0 = @echo " GEN " $@; | ||
| 50 | am__v_GEN_1 = | ||
| 51 | |||
| 52 | AM_V_at = $(am__v_at_@AM_V@) | ||
| 53 | am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) | ||
| 54 | am__v_at_0 = @ | ||
| 55 | am__v_at_1 = | ||
| 56 | |||
| 57 | # Note: We can not prepend "ISO-" to these map files because of file | ||
| 58 | # name limits on DOS. | ||
| 59 | ISO8859 = \ | ||
| 60 | 8859-2.map 8859-3.map 8859-4.map 8859-5.map 8859-6.map 8859-7.map \ | ||
| 61 | 8859-8.map 8859-9.map 8859-10.map 8859-11.map 8859-13.map 8859-14.map \ | ||
| 62 | 8859-15.map 8859-16.map | ||
| 63 | |||
| 64 | IBM = \ | ||
| 65 | IBM037.map IBM038.map \ | ||
| 66 | IBM256.map IBM273.map IBM274.map IBM275.map IBM277.map IBM278.map \ | ||
| 67 | IBM280.map IBM281.map IBM284.map IBM285.map IBM290.map IBM297.map \ | ||
| 68 | IBM420.map IBM423.map IBM424.map IBM437.map IBM500.map IBM850.map \ | ||
| 69 | IBM851.map IBM852.map IBM855.map IBM856.map IBM857.map IBM860.map \ | ||
| 70 | IBM861.map IBM862.map IBM863.map IBM864.map IBM865.map IBM866.map \ | ||
| 71 | IBM868.map IBM869.map IBM870.map IBM871.map IBM874.map IBM875.map \ | ||
| 72 | IBM880.map IBM891.map IBM903.map IBM904.map IBM905.map IBM918.map \ | ||
| 73 | IBM1004.map IBM1026.map IBM1047.map | ||
| 74 | |||
| 75 | CODEPAGE = \ | ||
| 76 | CP737.map CP775.map CP1125.map\ | ||
| 77 | CP1250.map CP1251.map CP1252.map CP1253.map CP1254.map \ | ||
| 78 | CP1255.map CP1256.map CP1257.map CP1258.map \ | ||
| 79 | CP10007.map \ | ||
| 80 | CP720.map CP858.map | ||
| 81 | |||
| 82 | CJK = GB2312.map GBK.map GB180302.map GB180304.map \ | ||
| 83 | BIG5.map BIG5-HKSCS.map\ | ||
| 84 | CNS-1.map CNS-2.map CNS-3.map CNS-4.map CNS-5.map CNS-6.map CNS-7.map \ | ||
| 85 | CNS-F.map \ | ||
| 86 | JISX0201.map JISX0208.map JISX0212.map JISX2131.map JISX2132.map \ | ||
| 87 | JISC6226.map CP932-2BYTE.map JISX213A.map\ | ||
| 88 | KSC5601.map KSC5636.map JOHAB.map | ||
| 89 | |||
| 90 | MISC = KOI-8.map KOI8-R.map KOI8-U.map KOI8-T.map ALTERNATIVNYJ.map \ | ||
| 91 | MIK.map PTCP154.map \ | ||
| 92 | TIS-620.map VISCII.map VSCII.map VSCII-2.map\ | ||
| 93 | KA-PS.map KA-ACADEMY.map \ | ||
| 94 | HP-ROMAN8.map NEXTSTEP.map MACINTOSH.map EBCDICUK.map EBCDICUS.map \ | ||
| 95 | stdenc.map symbol.map \ | ||
| 96 | CP949-2BYTE.map \ | ||
| 97 | BIG5-1.map BIG5-2.map | ||
| 98 | |||
| 99 | # Emacs-mule charsets. | ||
| 100 | MULE = MULE-ethiopic.map MULE-ipa.map MULE-is13194.map \ | ||
| 101 | MULE-sisheng.map MULE-tibetan.map \ | ||
| 102 | MULE-lviscii.map MULE-uviscii.map | ||
| 103 | |||
| 104 | SED_SCRIPT = jisx2131-filter | ||
| 105 | |||
| 106 | TRANS_TABLE = cp51932.el eucjp-ms.el | ||
| 107 | TRANS_TABLE := $(addprefix ${lispintdir}/,${TRANS_TABLE}) | ||
| 108 | |||
| 109 | CHARSETS = ${ISO8859} ${IBM} ${CODEPAGE} ${CJK} ${MISC} ${MULE} | ||
| 110 | CHARSETS := $(addprefix ${charsetdir}/,${CHARSETS}) | ||
| 111 | |||
| 112 | ## Those charsets whose source is not in GLIBC_CHARMAPS. | ||
| 113 | LOCAL = MIK.map PTCP154.map stdenc.map symbol.map CP720.map CP858.map \ | ||
| 114 | JISX213A.map CP932-2BYTE.map JISC6226.map \ | ||
| 115 | CNS-2.map CNS-3.map CNS-4.map CNS-5.map CNS-6.map CNS-7.map \ | ||
| 116 | ${MULE} | ||
| 117 | LOCAL := $(addprefix ${charsetdir}/,${LOCAL}) | ||
| 118 | |||
| 119 | |||
| 120 | .PHONY: all local | ||
| 121 | |||
| 122 | all: ${CHARSETS} ${TRANS_TABLE} | ||
| 123 | local: ${LOCAL} ${lispintdir}/cp51932.el | ||
| 124 | |||
| 125 | ## Rules for each charset. | ||
| 126 | |||
| 127 | mapconv = ${srcdir}/mapconv | ||
| 128 | run_mapconv = AWK=${AWK} ${srcdir}/mapconv | ||
| 129 | big5 = ${srcdir}/big5.awk | ||
| 130 | compact = ${srcdir}/compact.awk | ||
| 131 | cp51932 = ${srcdir}/cp51932.awk | ||
| 132 | cp932 = ${srcdir}/cp932.awk | ||
| 133 | eucjp_ms = ${srcdir}/eucjp-ms.awk | ||
| 134 | gb180302 = ${srcdir}/gb180302.awk | ||
| 135 | gb180304 = ${srcdir}/gb180304.awk | ||
| 136 | kuten = ${srcdir}/kuten.awk | ||
| 137 | |||
| 138 | ## Short aliases, eg VSCII.map = ${charsetdir}/VSCII.map | ||
| 139 | define map_template | ||
| 140 | .PHONY: $(notdir ${1}) | ||
| 141 | $(notdir ${1}): ${1} | ||
| 142 | endef | ||
| 143 | |||
| 144 | $(foreach mfile,${CHARSETS} ${TRANS_TABLE},$(eval $(call map_template,$(mfile)))) | ||
| 145 | |||
| 146 | ${charsetdir}/VSCII.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz ${mapconv} ${compact} | ||
| 147 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[0-9a-f].[ ]/' GLIBC-1 ${compact} > $@ | ||
| 148 | |||
| 149 | ${charsetdir}/VSCII-2.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz ${mapconv} ${compact} | ||
| 150 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[2-7a-f].[ ]/' GLIBC-1 ${compact} \ | ||
| 151 | | sed 's/0x20-0x7F.*/0x00-0x7F 0x0000/' > $@ | ||
| 152 | |||
| 153 | ${charsetdir}/ALTERNATIVNYJ.map: ${charsetdir}/IBM866.map | ||
| 154 | ${AM_V_GEN}(echo "# Modified from $(notdir $<) according to the chart at" && \ | ||
| 155 | echo "# http://www.cyrillic.com/ref/cyrillic/koi-8alt.html," && \ | ||
| 156 | echo "# with guesses for the Unicodes of the glyphs." && \ | ||
| 157 | sed -e '1 d' \ | ||
| 158 | -e '/0xF2/ s/ .*/ 0x2019/' \ | ||
| 159 | -e '/0xF3/ s/ .*/ 0x2018/' \ | ||
| 160 | -e '/0xF4/ s/ .*/ 0x0301/' \ | ||
| 161 | -e '/0xF5/ s/ .*/ 0x0300/' \ | ||
| 162 | -e '/0xF6/ s/ .*/ 0x203A/' \ | ||
| 163 | -e '/0xF7/ s/ .*/ 0x2039/' \ | ||
| 164 | -e '/0xF8/ s/ .*/ 0x2191/' \ | ||
| 165 | -e '/0xF9/ s/ .*/ 0x2193/' \ | ||
| 166 | -e '/0xFA/ s/ .*/ 0x00B1/' \ | ||
| 167 | -e '/0xFB/ s/ .*/ 0x00F7/' < $< ) > $@ | ||
| 168 | |||
| 169 | ${charsetdir}/MIK.map: ${mapfiledir}/bulgarian-mik.txt ${mapconv} ${compact} | ||
| 170 | ${AM_V_GEN}${run_mapconv} $< '1,$$' CZYBORRA ${compact} > $@ | ||
| 171 | |||
| 172 | ${charsetdir}/PTCP154.map: ${mapfiledir}/PTCP154 ${mapconv} ${compact} | ||
| 173 | ${AM_V_GEN}${run_mapconv} $< '/^0x/' IANA ${compact} > $@ | ||
| 174 | |||
| 175 | ${charsetdir}/stdenc.map: ${mapfiledir}/stdenc.txt ${mapconv} ${compact} | ||
| 176 | ${AM_V_GEN}${run_mapconv} $< '/^[0-9A-Fa-f]/' UNICODE ${compact} > $@ | ||
| 177 | |||
| 178 | ${charsetdir}/symbol.map: ${mapfiledir}/symbol.txt ${mapconv} ${compact} | ||
| 179 | ${AM_V_GEN}${run_mapconv} $< '/^[0-9A-Fa-f]/' UNICODE ${compact} > $@ | ||
| 180 | |||
| 181 | ${charsetdir}/CP720.map: ${mapfiledir}/CP720.map | ||
| 182 | ${AM_V_GEN}cp $< $@ | ||
| 183 | |||
| 184 | ${charsetdir}/CP858.map: ${mapfiledir}/CP858.map | ||
| 185 | ${AM_V_GEN}cp $< $@ | ||
| 186 | |||
| 187 | ${charsetdir}/CP949-2BYTE.map: ${GLIBC_CHARMAPS}/CP949.gz ${mapconv} ${compact} | ||
| 188 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 ${compact} > $@ | ||
| 189 | |||
| 190 | ${charsetdir}/GB2312.map: ${GLIBC_CHARMAPS}/GB2312.gz ${mapconv} ${compact} | ||
| 191 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 ${compact} > $@ | ||
| 192 | |||
| 193 | ${charsetdir}/GBK.map: ${GLIBC_CHARMAPS}/GBK.gz ${mapconv} ${compact} | ||
| 194 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 ${compact} > $@ | ||
| 195 | |||
| 196 | ${charsetdir}/GB180302.map: ${GLIBC_CHARMAPS}/GB18030.gz ${mapconv} ${gb180302} | ||
| 197 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x..\/x..[ ]/' GLIBC-2 ${gb180302} > $@ | ||
| 198 | |||
| 199 | ${charsetdir}/GB180304.map: ${charsetdir}/GB180302.map ${gb180304} | ||
| 200 | ${AM_V_GEN}$(AWK) -f ${gb180304} < $< > $@ | ||
| 201 | |||
| 202 | ${charsetdir}/JISX0201.map: ${GLIBC_CHARMAPS}/JIS_X0201.gz ${mapconv} ${compact} | ||
| 203 | ${AM_V_GEN}(${mapconv} $< '/^<.*[ ]\/x[0-9]/' GLIBC-1 ${compact} && \ | ||
| 204 | echo "# Generated by hand" && \ | ||
| 205 | echo "0xA1-0xDF 0xFF61" ) > $@ | ||
| 206 | |||
| 207 | ${charsetdir}/JISX0208.map: ${GLIBC_CHARMAPS}/EUC-JP.gz ${mapconv} | ||
| 208 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \ | ||
| 209 | | sed 's/0x2015/0x2014/' > $@ | ||
| 210 | |||
| 211 | ${charsetdir}/JISX0212.map: ${GLIBC_CHARMAPS}/EUC-JP.gz ${mapconv} ${compact} | ||
| 212 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 ${compact} > $@ | ||
| 213 | |||
| 214 | jisx2131-filter: ${mapfiledir}/JISX213A.map | ||
| 215 | ${AM_V_at}sed -n -e '/^#/d' -e 's,.*0x\([0-9A-Z]*\)$$,/0x0*\1$$/d,p' < $< > $@ | ||
| 216 | |||
| 217 | ${charsetdir}/JISX2131.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz ${mapconv} jisx2131-filter | ||
| 218 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \ | ||
| 219 | | sed -f jisx2131-filter \ | ||
| 220 | | sed -e 's/0x2015/0x2014/' -e 's/0x2299/0x29BF/' > $@ | ||
| 221 | |||
| 222 | ${charsetdir}/JISX2132.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz ${mapconv} | ||
| 223 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 > $@ | ||
| 224 | |||
| 225 | ${charsetdir}/JISX213A.map: ${mapfiledir}/JISX213A.map | ||
| 226 | ${AM_V_GEN}cp $< $@ | ||
| 227 | |||
| 228 | ${charsetdir}/CP932-2BYTE.map: ${mapfiledir}/CP932.TXT ${mapconv} ${cp932} | ||
| 229 | ${AM_V_GEN}${run_mapconv} $< '/^0x[89A-F][0-9A-F][0-9A-F]/' UNICODE2 ${cp932} > $@ | ||
| 230 | |||
| 231 | ${lispintdir}/cp51932.el: ${charsetdir}/CP932-2BYTE.map ${cp51932} | ||
| 232 | ${AM_V_GEN}$(AWK) -f ${cp51932} < $< > $@ | ||
| 233 | |||
| 234 | ${lispintdir}/eucjp-ms.el: ${GLIBC_CHARMAPS}/EUC-JP-MS.gz ${eucjp_ms} | ||
| 235 | ${AM_V_GEN}gunzip -c $< | $(AWK) -f ${eucjp_ms} > $@ | ||
| 236 | |||
| 237 | # As Uni2JIS doesn't contain mappings of characters added to Unicode | ||
| 238 | # recently, we add them manually here (including one correction for | ||
| 239 | # U+005C vs U+FF3C). These changes are based on bogytech's blog at | ||
| 240 | # http://bogytech.blogspot.jp/search/label/emacs. | ||
| 241 | ${charsetdir}/JISC6226.map: ${mapfiledir}/Uni2JIS ${mapconv} ${kuten} | ||
| 242 | ${AM_V_GEN}(${run_mapconv} $< '/^[^#].*0-/' YASUOKA ${kuten} \ | ||
| 243 | | sed -e '/0x2140/s/005C/FF3C/' && \ | ||
| 244 | echo '0x3442 0x3D4E' && echo '0x374E 0x25874' && \ | ||
| 245 | echo '0x3764 0x28EF6' && echo '0x513D 0x2F80F' && \ | ||
| 246 | echo '0x7045 0x9724' ) > $@ | ||
| 247 | |||
| 248 | ${charsetdir}/KSC5601.map: ${GLIBC_CHARMAPS}/EUC-KR.gz ${mapconv} ${compact} | ||
| 249 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 ${compact} > $@ | ||
| 250 | |||
| 251 | ${charsetdir}/BIG5.map: ${GLIBC_CHARMAPS}/BIG5.gz ${mapconv} ${compact} | ||
| 252 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2 > $@ | ||
| 253 | |||
| 254 | ${charsetdir}/BIG5-1.map: ${charsetdir}/BIG5.map ${mapconv} ${big5} | ||
| 255 | ${AM_V_GEN}(echo "# Generated from $(notdir $<)" && \ | ||
| 256 | sed -n -e '/0xa140/,/0xc8fe/p' < $< | $(AWK) -f ${big5} ) > $@ | ||
| 257 | |||
| 258 | ${charsetdir}/BIG5-2.map: ${charsetdir}/BIG5.map ${mapconv} ${big5} | ||
| 259 | ${AM_V_GEN}(echo "# Generated from $(notdir $<)" && \ | ||
| 260 | sed -n -e '/0xc940/,$$ p' < $< | $(AWK) -f ${big5} ) > $@ | ||
| 261 | |||
| 262 | ${charsetdir}/BIG5-HKSCS.map: ${GLIBC_CHARMAPS}/BIG5-HKSCS.gz ${mapconv} ${compact} | ||
| 263 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[89a-f].\//' GLIBC-2 ${compact} > $@ | ||
| 264 | |||
| 265 | ${charsetdir}/JOHAB.map: ${GLIBC_CHARMAPS}/JOHAB.gz ${mapconv} ${compact} | ||
| 266 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 ${compact} > $@ | ||
| 267 | |||
| 268 | ${charsetdir}/CNS-1.map: ${GLIBC_CHARMAPS}/EUC-TW.gz ${mapconv} ${compact} | ||
| 269 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 ${compact} > $@ | ||
| 270 | |||
| 271 | # ${charsetdir}/CNS-1.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact} | ||
| 272 | # ${AM_V_GEN}${run_mapconv} $< '/^C1/' KANJI-DATABASE ${compact} > $@ | ||
| 273 | |||
| 274 | ${charsetdir}/CNS-2.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact} | ||
| 275 | ${AM_V_GEN}${run_mapconv} $< '/^C2/' KANJI-DATABASE ${compact} > $@ | ||
| 276 | |||
| 277 | ${charsetdir}/CNS-3.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact} | ||
| 278 | ${AM_V_GEN}${run_mapconv} $< '/^C3/' KANJI-DATABASE ${compact} > $@ | ||
| 279 | |||
| 280 | ${charsetdir}/CNS-4.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact} | ||
| 281 | ${AM_V_GEN}${run_mapconv} $< '/^C4/' KANJI-DATABASE ${compact} > $@ | ||
| 282 | |||
| 283 | ${charsetdir}/CNS-5.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact} | ||
| 284 | ${AM_V_GEN}${run_mapconv} $< '/^C5/' KANJI-DATABASE ${compact} > $@ | ||
| 285 | |||
| 286 | ${charsetdir}/CNS-6.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact} | ||
| 287 | ${AM_V_GEN}${run_mapconv} $< '/^C6/' KANJI-DATABASE ${compact} > $@ | ||
| 288 | |||
| 289 | ${charsetdir}/CNS-7.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact} | ||
| 290 | ${AM_V_GEN}${run_mapconv} $< '/^C7/' KANJI-DATABASE ${compact} > $@ | ||
| 291 | |||
| 292 | ${charsetdir}/CNS-F.map: ${GLIBC_CHARMAPS}/EUC-TW.gz ${mapconv} ${compact} | ||
| 293 | ${AM_V_GEN}${run_mapconv} $< '/^<.*\/x8e\/xaf/ s,/x8e/xaf,,' GLIBC-2-7 ${compact} > $@ | ||
| 294 | |||
| 295 | # General target to produce map files for mule charsets. | ||
| 296 | ${charsetdir}/MULE-%.map: ${mapfiledir}/MULE-%.map | ||
| 297 | ${AM_V_GEN}cp $< $@ | ||
| 298 | |||
| 299 | # General target to produce map files for ISO-8859, GEORGIAN, and | ||
| 300 | # EBCDIC charsets. We can not use the original file name because of | ||
| 301 | # file name limit on DOS. "KA" is ISO 639 language code for Georgian. | ||
| 302 | |||
| 303 | ${charsetdir}/8859-%.map: ${GLIBC_CHARMAPS}/ISO-8859-%.gz ${mapconv} ${compact} | ||
| 304 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x/' GLIBC-1 ${compact} > $@ | ||
| 305 | |||
| 306 | ${charsetdir}/KA-%.map: ${GLIBC_CHARMAPS}/GEORGIAN-%.gz ${mapconv} ${compact} | ||
| 307 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x/' GLIBC-1 ${compact} > $@ | ||
| 308 | |||
| 309 | ${charsetdir}/EBCDIC%.map: ${GLIBC_CHARMAPS}/EBCDIC-%.gz ${mapconv} ${compact} | ||
| 310 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x/' GLIBC-1 ${compact} > $@ | ||
| 311 | |||
| 312 | # General target to produce map files for single-byte charsets. | ||
| 313 | |||
| 314 | ${charsetdir}/%.map: ${GLIBC_CHARMAPS}/%.gz ${mapconv} ${compact} | ||
| 315 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x/' GLIBC-1 ${compact} > $@ | ||
| 316 | |||
| 317 | |||
| 318 | .PHONY: clean bootstrap-clean distclean maintainer-clean extraclean totalclean | ||
| 319 | |||
| 320 | clean: | ||
| 321 | rm -f ${SED_SCRIPT} | ||
| 322 | |||
| 323 | bootstrap-clean: clean | ||
| 324 | |||
| 325 | distclean: clean | ||
| 326 | rm -f Makefile | ||
| 327 | |||
| 328 | maintainer-clean: distclean | ||
| 329 | |||
| 330 | ## Do not remove these files, even in a bootstrap. They rarely change. | ||
| 331 | extraclean: | ||
| 332 | rm -f ${LOCAL} ${TRANS_TABLE} | ||
| 333 | |||
| 334 | totalclean: extraclean | ||
| 335 | rm -f ${CHARSETS} | ||
diff --git a/admin/charsets/mapconv b/admin/charsets/mapconv index 8433d222b8d..245dce114a0 100755 --- a/admin/charsets/mapconv +++ b/admin/charsets/mapconv | |||
| @@ -1,5 +1,7 @@ | |||
| 1 | #!/bin/sh | 1 | #!/bin/sh |
| 2 | 2 | ||
| 3 | # Copyright (C) 2015 Free Software Foundation, Inc. | ||
| 4 | |||
| 3 | # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 | 5 | # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 |
| 4 | # National Institute of Advanced Industrial Science and Technology (AIST) | 6 | # National Institute of Advanced Industrial Science and Technology (AIST) |
| 5 | # Registration Number H13PRO009 | 7 | # Registration Number H13PRO009 |
| @@ -33,8 +35,15 @@ | |||
| 33 | # GLIBC-1 GLIBC-2 GLIBC-2-7 CZYBORRA IANA UNICODE UNICODE2 YASUOKA | 35 | # GLIBC-1 GLIBC-2 GLIBC-2-7 CZYBORRA IANA UNICODE UNICODE2 YASUOKA |
| 34 | # $4: awk script | 36 | # $4: awk script |
| 35 | 37 | ||
| 36 | FILE="admin/charsets/$1" | 38 | ## So that eg [A-F] as used by KANJI-DATABASE branch below works as expected. |
| 37 | BASE=`basename $1 .gz` | 39 | ## Otherwise with LANG=en_US.utf8, CNS-6.map was generated with a |
| 40 | ## bogus entry. By experiment, LC_COLLATE=C was not enough. | ||
| 41 | export LC_ALL=C | ||
| 42 | |||
| 43 | BASE=`expr "$1" : '.*/\(.*\)' '|' "$1"` # basename | ||
| 44 | FILE="admin/charsets/mapfiles/$BASE" | ||
| 45 | BASE=`expr "$BASE" : '\(.*\)\.gz$' '|' "$BASE"` # remove any .gz suffix | ||
| 46 | AWK=${AWK:-awk} | ||
| 38 | 47 | ||
| 39 | case "$3" in | 48 | case "$3" in |
| 40 | GLIBC*) | 49 | GLIBC*) |
| @@ -69,7 +78,7 @@ fi | |||
| 69 | 78 | ||
| 70 | if [ -n "$4" ] ; then | 79 | if [ -n "$4" ] ; then |
| 71 | if [ -f "$4" ] ; then | 80 | if [ -f "$4" ] ; then |
| 72 | AWKPROG="gawk -f $4" | 81 | AWKPROG="$AWK -f $4" |
| 73 | else | 82 | else |
| 74 | echo "Awk program does not exist: $4" | 83 | echo "Awk program does not exist: $4" |
| 75 | exit 1 | 84 | exit 1 |
| @@ -81,20 +90,20 @@ fi | |||
| 81 | if [ "$3" = "GLIBC-1" ] ; then | 90 | if [ "$3" = "GLIBC-1" ] ; then |
| 82 | # Source format is: | 91 | # Source format is: |
| 83 | # <UYYYY> /xXX | 92 | # <UYYYY> /xXX |
| 84 | zcat $1 | sed -n -e "$2 p" \ | 93 | gunzip -c $1 | sed -n -e "${2}p" \ |
| 85 | | sed -e 's,<U\([^>]*\)>[ ]*/x\(..\).*,0x\2 0x\1,' \ | 94 | | sed -e 's,<U\([^>]*\)>[ ]*/x\(..\).*,0x\2 0x\1,' \ |
| 86 | | sort | ${AWKPROG} | 95 | | sort | ${AWKPROG} |
| 87 | elif [ "$3" = "GLIBC-2" ] ; then | 96 | elif [ "$3" = "GLIBC-2" ] ; then |
| 88 | # Source format is: | 97 | # Source format is: |
| 89 | # <UYYYY> /xXX/xZZ | 98 | # <UYYYY> /xXX/xZZ |
| 90 | zcat $1 | sed -n -e "$2 p" \ | 99 | gunzip -c $1 | sed -n -e "${2}p" \ |
| 91 | | sed -e 's,<U\([^>]*\)>[ ]*/x\(..\)/x\(..\).*,0x\2\3 0x\1,' \ | 100 | | sed -e 's,<U\([^>]*\)>[ ]*/x\(..\)/x\(..\).*,0x\2\3 0x\1,' \ |
| 92 | | sort | ${AWKPROG} | 101 | | sort | ${AWKPROG} |
| 93 | elif [ "$3" = "GLIBC-2-7" ] ; then | 102 | elif [ "$3" = "GLIBC-2-7" ] ; then |
| 94 | # Source format is: | 103 | # Source format is: |
| 95 | # <UYYYY> /xXX/xZZ | 104 | # <UYYYY> /xXX/xZZ |
| 96 | # We must drop MSBs of XX and ZZ | 105 | # We must drop MSBs of XX and ZZ |
| 97 | zcat $1 | sed -n -e "$2 p" \ | 106 | gunzip -c $1 | sed -n -e "${2}p" \ |
| 98 | | sed -e 's/xa/x2/g' -e 's/xb/x3/g' -e 's/xc/x4/g' \ | 107 | | sed -e 's/xa/x2/g' -e 's/xb/x3/g' -e 's/xc/x4/g' \ |
| 99 | -e 's/xd/x5/g' -e 's/xe/x6/g' -e 's/xf/x7/g' \ | 108 | -e 's/xd/x5/g' -e 's/xe/x6/g' -e 's/xf/x7/g' \ |
| 100 | -e 's,<U\([^>]*\)>[ ]*/x\(..\)/x\(..\).*,0x\2\3 0x\1,' \ | 109 | -e 's,<U\([^>]*\)>[ ]*/x\(..\)/x\(..\).*,0x\2\3 0x\1,' \ |
| @@ -102,13 +111,13 @@ elif [ "$3" = "GLIBC-2-7" ] ; then | |||
| 102 | elif [ "$3" = "CZYBORRA" ] ; then | 111 | elif [ "$3" = "CZYBORRA" ] ; then |
| 103 | # Source format is: | 112 | # Source format is: |
| 104 | # =XX U+YYYY | 113 | # =XX U+YYYY |
| 105 | sed -n -e "$2 p" < $1 \ | 114 | sed -n -e "${2}p" < $1 \ |
| 106 | | sed -e 's/=\(..\)[^U]*U+\([0-9A-F]*\).*/0x\1 0x\2/' \ | 115 | | sed -e 's/=\(..\)[^U]*U+\([0-9A-F]*\).*/0x\1 0x\2/' \ |
| 107 | | sort | ${AWKPROG} | 116 | | sort | ${AWKPROG} |
| 108 | elif [ "$3" = "IANA" ] ; then | 117 | elif [ "$3" = "IANA" ] ; then |
| 109 | # Source format is: | 118 | # Source format is: |
| 110 | # 0xXX 0xYYYY | 119 | # 0xXX 0xYYYY |
| 111 | sed -n -e "$2 p" < $1 \ | 120 | sed -n -e "${2}p" < $1 \ |
| 112 | | sed -e 's/\(0x[0-9A-Fa-f]*\)[^0]*\(0x[0-9A-Fa-f]*\).*/\1 \2/' \ | 121 | | sed -e 's/\(0x[0-9A-Fa-f]*\)[^0]*\(0x[0-9A-Fa-f]*\).*/\1 \2/' \ |
| 113 | | sort | ${AWKPROG} | 122 | | sort | ${AWKPROG} |
| 114 | elif [ "$3" = "UNICODE" ] ; then | 123 | elif [ "$3" = "UNICODE" ] ; then |
| @@ -116,25 +125,25 @@ elif [ "$3" = "UNICODE" ] ; then | |||
| 116 | # YYYY XX | 125 | # YYYY XX |
| 117 | # We perform reverse sort to prefer the first one in the | 126 | # We perform reverse sort to prefer the first one in the |
| 118 | # duplicated mappings (e.g. 0x20->U+0020, 0x20->U+00A0). | 127 | # duplicated mappings (e.g. 0x20->U+0020, 0x20->U+00A0). |
| 119 | sed -n -e "$2 p" < $1 \ | 128 | sed -n -e "${2}p" < $1 \ |
| 120 | | sed -e 's/\([0-9A-F]*\)[^0-9A-F]*\([0-9A-F]*\).*/0x\2 0x\1/' \ | 129 | | sed -e 's/\([0-9A-F]*\)[^0-9A-F]*\([0-9A-F]*\).*/0x\2 0x\1/' \ |
| 121 | | sort -r | 130 | | sort -r |
| 122 | elif [ "$3" = "UNICODE2" ] ; then | 131 | elif [ "$3" = "UNICODE2" ] ; then |
| 123 | # Source format is: | 132 | # Source format is: |
| 124 | # 0xXXXX 0xYYYY # ... | 133 | # 0xXXXX 0xYYYY # ... |
| 125 | sed -n -e "$2 p" < $1 \ | 134 | sed -n -e "${2}p" < $1 \ |
| 126 | | sed -e 's/\([0-9A-Fx]*\)[^0]*\([0-9A-Fx]*\).*/\1 \2/' \ | 135 | | sed -e 's/\([0-9A-Fx]*\)[^0]*\([0-9A-Fx]*\).*/\1 \2/' \ |
| 127 | | ${AWKPROG} | sort -n -k 4,4 | 136 | | ${AWKPROG} | sort -n -k 4,4 |
| 128 | elif [ "$3" = "YASUOKA" ] ; then | 137 | elif [ "$3" = "YASUOKA" ] ; then |
| 129 | # Source format is: | 138 | # Source format is: |
| 130 | # YYYY 0-XXXX (XXXX is a Kuten code) | 139 | # YYYY 0-XXXX (XXXX is a Kuten code) |
| 131 | sed -n -e "$2 p" < $1 \ | 140 | sed -n -e "${2}p" < $1 \ |
| 132 | | sed -e 's/\([0-9A-F]*\)[^0]*0-\([0-9]*\).*/0x\2 0x\1/' \ | 141 | | sed -e 's/\([0-9A-F]*\)[^0]*0-\([0-9]*\).*/0x\2 0x\1/' \ |
| 133 | | sort | ${AWKPROG} | 142 | | sort | ${AWKPROG} |
| 134 | elif [ "$3" = "KANJI-DATABASE" ] ; then | 143 | elif [ "$3" = "KANJI-DATABASE" ] ; then |
| 135 | # Source format is: | 144 | # Source format is: |
| 136 | # C?-XXXX U+YYYYY ..... | 145 | # C?-XXXX U+YYYYY ..... |
| 137 | sed -n -e "$2 p" < $1 \ | 146 | sed -n -e "${2}p" < $1 \ |
| 138 | | sed -e 's/...\(....\) U+\([0-9A-F]*\).*/0x\1 0x\2/' \ | 147 | | sed -e 's/...\(....\) U+\([0-9A-F]*\).*/0x\1 0x\2/' \ |
| 139 | | sort | ${AWKPROG} | 148 | | sort | ${AWKPROG} |
| 140 | else | 149 | else |
diff --git a/admin/charsets/mapfiles/PTCP154 b/admin/charsets/mapfiles/PTCP154 index 1d76058db84..ab493e577dd 100644 --- a/admin/charsets/mapfiles/PTCP154 +++ b/admin/charsets/mapfiles/PTCP154 | |||
| @@ -288,4 +288,4 @@ e-mail: auskov&idc.kz | |||
| 288 | Intended usage: | 288 | Intended usage: |
| 289 | COMMON | 289 | COMMON |
| 290 | 290 | ||
| 291 | (record created 2002-09-27) \ No newline at end of file | 291 | (record created 2002-09-27) |
diff --git a/admin/notes/unicode b/admin/notes/unicode index 028bcc187af..ebec417193f 100644 --- a/admin/notes/unicode +++ b/admin/notes/unicode | |||
| @@ -245,6 +245,25 @@ nontrivial changes to the build process. | |||
| 245 | lisp/leim/quail/ethiopic.el | 245 | lisp/leim/quail/ethiopic.el |
| 246 | lisp/leim/quail/tibetan.el | 246 | lisp/leim/quail/tibetan.el |
| 247 | 247 | ||
| 248 | * binary files | ||
| 249 | |||
| 250 | These files contain binary data, and are not text files. | ||
| 251 | Some of the entries in this list are patterns, and stand for any | ||
| 252 | files with the listed extension. | ||
| 253 | |||
| 254 | *.gz | ||
| 255 | *.icns | ||
| 256 | *.ico | ||
| 257 | *.pbm | ||
| 258 | |||
| 259 | *.png | ||
| 260 | *.sig | ||
| 261 | etc/e/eterm-color | ||
| 262 | etc/package-keyring.gpg | ||
| 263 | msdos/emacs.pif | ||
| 264 | nextstep/GNUstep/Emacs.base/Resources/emacs.tiff | ||
| 265 | nt/icons/hand.cur | ||
| 266 | |||
| 248 | 267 | ||
| 249 | This file is part of GNU Emacs. | 268 | This file is part of GNU Emacs. |
| 250 | 269 | ||
diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog index ad7c2739cbc..9abb693dabe 100755 --- a/build-aux/gitlog-to-changelog +++ b/build-aux/gitlog-to-changelog | |||
| @@ -3,7 +3,7 @@ eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}' | |||
| 3 | if 0; | 3 | if 0; |
| 4 | # Convert git log output to ChangeLog format. | 4 | # Convert git log output to ChangeLog format. |
| 5 | 5 | ||
| 6 | my $VERSION = '2015-05-08 06:05'; # UTC | 6 | my $VERSION = '2015-05-19 01:37'; # UTC |
| 7 | # The definition above must lie within the first 8 lines in order | 7 | # The definition above must lie within the first 8 lines in order |
| 8 | # for the Emacs time-stamp write hook (at end) to update it. | 8 | # for the Emacs time-stamp write hook (at end) to update it. |
| 9 | # If you change this file with Emacs, please let the write hook | 9 | # If you change this file with Emacs, please let the write hook |
| @@ -74,6 +74,7 @@ OPTIONS: | |||
| 74 | the default is to convert all log entries. | 74 | the default is to convert all log entries. |
| 75 | --until=DATE convert only the logs older than DATE. | 75 | --until=DATE convert only the logs older than DATE. |
| 76 | --ignore-matching=PAT ignore commit messages whose first lines match PAT. | 76 | --ignore-matching=PAT ignore commit messages whose first lines match PAT. |
| 77 | --ignore-line=PAT ignore lines of commit messages that match PAT. | ||
| 77 | --format=FMT set format string for commit subject and body; | 78 | --format=FMT set format string for commit subject and body; |
| 78 | see 'man git-log' for the list of format metacharacters; | 79 | see 'man git-log' for the list of format metacharacters; |
| 79 | the default is '%s%n%b%n' | 80 | the default is '%s%n%b%n' |
| @@ -228,6 +229,7 @@ sub git_dir_option($) | |||
| 228 | my $append_dot = 0; | 229 | my $append_dot = 0; |
| 229 | my $cluster = 1; | 230 | my $cluster = 1; |
| 230 | my $ignore_matching; | 231 | my $ignore_matching; |
| 232 | my $ignore_line; | ||
| 231 | my $strip_tab = 0; | 233 | my $strip_tab = 0; |
| 232 | my $strip_cherry_pick = 0; | 234 | my $strip_cherry_pick = 0; |
| 233 | my $srcdir; | 235 | my $srcdir; |
| @@ -242,6 +244,7 @@ sub git_dir_option($) | |||
| 242 | 'append-dot' => \$append_dot, | 244 | 'append-dot' => \$append_dot, |
| 243 | 'cluster!' => \$cluster, | 245 | 'cluster!' => \$cluster, |
| 244 | 'ignore-matching=s' => \$ignore_matching, | 246 | 'ignore-matching=s' => \$ignore_matching, |
| 247 | 'ignore-line=s' => \$ignore_line, | ||
| 245 | 'strip-tab' => \$strip_tab, | 248 | 'strip-tab' => \$strip_tab, |
| 246 | 'strip-cherry-pick' => \$strip_cherry_pick, | 249 | 'strip-cherry-pick' => \$strip_cherry_pick, |
| 247 | 'srcdir=s' => \$srcdir, | 250 | 'srcdir=s' => \$srcdir, |
| @@ -349,6 +352,12 @@ sub git_dir_option($) | |||
| 349 | if (! (defined $ignore_matching | 352 | if (! (defined $ignore_matching |
| 350 | && @line && $line[0] =~ /$ignore_matching/)) | 353 | && @line && $line[0] =~ /$ignore_matching/)) |
| 351 | { | 354 | { |
| 355 | if (defined $ignore_line && @line) | ||
| 356 | { | ||
| 357 | @line = grep ! /$ignore_line/, @line; | ||
| 358 | while ($line[$#line] =~ /^\s*$/) { pop @line; } | ||
| 359 | } | ||
| 360 | |||
| 352 | # Record whether there are two or more paragraphs. | 361 | # Record whether there are two or more paragraphs. |
| 353 | my $multi_paragraph = grep /^\s*$/, @line; | 362 | my $multi_paragraph = grep /^\s*$/, @line; |
| 354 | 363 | ||
diff --git a/build-aux/gitlog-to-emacslog b/build-aux/gitlog-to-emacslog index e38f8969bfe..d1b1af9b538 100755 --- a/build-aux/gitlog-to-emacslog +++ b/build-aux/gitlog-to-emacslog | |||
| @@ -23,7 +23,7 @@ LC_ALL=C | |||
| 23 | export LC_ALL | 23 | export LC_ALL |
| 24 | 24 | ||
| 25 | # The newest revision that should not appear in the generated ChangeLog. | 25 | # The newest revision that should not appear in the generated ChangeLog. |
| 26 | gen_origin=d2c7e14ac3bd2b517d35a86255c28d5b6d779451 | 26 | gen_origin=f89080d18dd64e0c92c5f3d206182d65f23eafeb |
| 27 | force= | 27 | force= |
| 28 | output=ChangeLog | 28 | output=ChangeLog |
| 29 | nmax=2 | 29 | nmax=2 |
| @@ -58,7 +58,7 @@ test -d .git || { | |||
| 58 | 58 | ||
| 59 | # Use Gnulib's packaged ChangeLog generator. | 59 | # Use Gnulib's packaged ChangeLog generator. |
| 60 | ./build-aux/gitlog-to-changelog --ignore-matching='^; ' \ | 60 | ./build-aux/gitlog-to-changelog --ignore-matching='^; ' \ |
| 61 | --format='%B' \ | 61 | --ignore-line='^; ' --format='%B' \ |
| 62 | "$gen_origin.." >"ChangeLog.tmp" || exit | 62 | "$gen_origin.." >"ChangeLog.tmp" || exit |
| 63 | 63 | ||
| 64 | if test -s "ChangeLog.tmp"; then | 64 | if test -s "ChangeLog.tmp"; then |
diff --git a/configure.ac b/configure.ac index fff3db90e50..a9fe0952b16 100644 --- a/configure.ac +++ b/configure.ac | |||
| @@ -5271,7 +5271,8 @@ fi | |||
| 5271 | 5271 | ||
| 5272 | dnl The admin/ directory used to be excluded from tarfiles. | 5272 | dnl The admin/ directory used to be excluded from tarfiles. |
| 5273 | if test -d $srcdir/admin; then | 5273 | if test -d $srcdir/admin; then |
| 5274 | SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES admin/unidata/Makefile admin/grammars/Makefile" | 5274 | SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES admin/charsets/Makefile admin/unidata/Makefile admin/grammars/Makefile" |
| 5275 | AC_CONFIG_FILES([admin/charsets/Makefile]) | ||
| 5275 | AC_CONFIG_FILES([admin/unidata/Makefile]) | 5276 | AC_CONFIG_FILES([admin/unidata/Makefile]) |
| 5276 | AC_CONFIG_FILES([admin/grammars/Makefile]) | 5277 | AC_CONFIG_FILES([admin/grammars/Makefile]) |
| 5277 | fi dnl -d admin | 5278 | fi dnl -d admin |
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index d5d9bb5f66d..b12995be6ed 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi | |||
| @@ -3304,6 +3304,9 @@ fontset, whose short name is @samp{fontset-default}. | |||
| 3304 | @var{character} may be a script name. In that case, use | 3304 | @var{character} may be a script name. In that case, use |
| 3305 | @var{font-spec} for all character in the charsets. | 3305 | @var{font-spec} for all character in the charsets. |
| 3306 | 3306 | ||
| 3307 | @var{font-spec} may be a font-spec object created by the function | ||
| 3308 | @code{font-spec} (@pxref{Low-Level Font}). | ||
| 3309 | |||
| 3307 | @var{font-spec} may be a cons; @code{(@var{family} . @var{registry})}, | 3310 | @var{font-spec} may be a cons; @code{(@var{family} . @var{registry})}, |
| 3308 | where @var{family} is a family name of a font (possibly including a | 3311 | where @var{family} is a family name of a font (possibly including a |
| 3309 | foundry name at the head), @var{registry} is a registry name of a font | 3312 | foundry name at the head), @var{registry} is a registry name of a font |
| @@ -3311,6 +3314,12 @@ foundry name at the head), @var{registry} is a registry name of a font | |||
| 3311 | 3314 | ||
| 3312 | @var{font-spec} may be a font name string. | 3315 | @var{font-spec} may be a font name string. |
| 3313 | 3316 | ||
| 3317 | @var{font-spec} may be @code{nil}, which explicitly specifies that | ||
| 3318 | there's no font for the specified @var{character}. This is useful, | ||
| 3319 | for example, to avoid expensive system-wide search for fonts for | ||
| 3320 | characters that have no glyphs, like those from the Unicode Private | ||
| 3321 | Use Area (PUA). | ||
| 3322 | |||
| 3314 | The optional argument @var{add}, if non-@code{nil}, specifies how to | 3323 | The optional argument @var{add}, if non-@code{nil}, specifies how to |
| 3315 | add @var{font-spec} to the font specifications previously set. If it | 3324 | add @var{font-spec} to the font specifications previously set. If it |
| 3316 | is @code{prepend}, @var{font-spec} is prepended. If it is | 3325 | is @code{prepend}, @var{font-spec} is prepended. If it is |
| @@ -6614,7 +6623,8 @@ Display a box containing the Unicode codepoint of the character, in | |||
| 6614 | hexadecimal notation. | 6623 | hexadecimal notation. |
| 6615 | 6624 | ||
| 6616 | @item an @acronym{ASCII} string | 6625 | @item an @acronym{ASCII} string |
| 6617 | Display a box containing that string. | 6626 | Display a box containing that string. The string should contain at |
| 6627 | most 6 @acronym{ASCII} characters. | ||
| 6618 | 6628 | ||
| 6619 | @item a cons cell @code{(@var{graphical} . @var{text})} | 6629 | @item a cons cell @code{(@var{graphical} . @var{text})} |
| 6620 | Display with @var{graphical} on graphical displays, and with | 6630 | Display with @var{graphical} on graphical displays, and with |
| @@ -6625,7 +6635,8 @@ must be one of the display methods described above. | |||
| 6625 | @noindent | 6635 | @noindent |
| 6626 | The @code{thin-space}, @code{empty-box}, @code{hex-code}, and | 6636 | The @code{thin-space}, @code{empty-box}, @code{hex-code}, and |
| 6627 | @acronym{ASCII} string display methods are drawn with the | 6637 | @acronym{ASCII} string display methods are drawn with the |
| 6628 | @code{glyphless-char} face. | 6638 | @code{glyphless-char} face. On text terminals, a box is emulated by |
| 6639 | square brackets, @samp{[]}. | ||
| 6629 | 6640 | ||
| 6630 | The char-table has one extra slot, which determines how to display any | 6641 | The char-table has one extra slot, which determines how to display any |
| 6631 | character that cannot be displayed with any available font, or cannot | 6642 | character that cannot be displayed with any available font, or cannot |
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi index e19472e3ca3..ddf81f3e805 100644 --- a/doc/lispref/frames.texi +++ b/doc/lispref/frames.texi | |||
| @@ -659,6 +659,16 @@ Some window managers ignore program-specified positions. If you want to | |||
| 659 | be sure the position you specify is not ignored, specify a | 659 | be sure the position you specify is not ignored, specify a |
| 660 | non-@code{nil} value for the @code{user-position} parameter as well. | 660 | non-@code{nil} value for the @code{user-position} parameter as well. |
| 661 | 661 | ||
| 662 | If the window manager refuses to align a frame at the left or top screen | ||
| 663 | edge, combining position notation and @code{user-position} as in | ||
| 664 | |||
| 665 | @example | ||
| 666 | (modify-frame-parameters | ||
| 667 | nil '((user-position . t) (left . (+ -4)))) | ||
| 668 | @end example | ||
| 669 | |||
| 670 | may help to override that. | ||
| 671 | |||
| 662 | @vindex top, a frame parameter | 672 | @vindex top, a frame parameter |
| 663 | @item top | 673 | @item top |
| 664 | The screen position of the top (or bottom) edge, in pixels, with respect | 674 | The screen position of the top (or bottom) edge, in pixels, with respect |
| @@ -1624,7 +1634,8 @@ tooltip, it first runs the hook @code{delete-frame-functions} (each | |||
| 1624 | function gets one argument, @var{frame}). By default, @var{frame} is | 1634 | function gets one argument, @var{frame}). By default, @var{frame} is |
| 1625 | the selected frame. | 1635 | the selected frame. |
| 1626 | 1636 | ||
| 1627 | A frame cannot be deleted if its minibuffer is used by other frames. | 1637 | A frame cannot be deleted as long as its minibuffer serves as surrogate |
| 1638 | minibuffer for another frame (@pxref{Minibuffers and Frames}). | ||
| 1628 | Normally, you cannot delete a frame if all other frames are invisible, | 1639 | Normally, you cannot delete a frame if all other frames are invisible, |
| 1629 | but if @var{force} is non-@code{nil}, then you are allowed to do so. | 1640 | but if @var{force} is non-@code{nil}, then you are allowed to do so. |
| 1630 | @end deffn | 1641 | @end deffn |
| @@ -1700,12 +1711,18 @@ you can get it with @code{minibuffer-window} (@pxref{Definition of | |||
| 1700 | minibuffer-window}). | 1711 | minibuffer-window}). |
| 1701 | 1712 | ||
| 1702 | @cindex frame without a minibuffer | 1713 | @cindex frame without a minibuffer |
| 1703 | However, you can also create a frame with no minibuffer. Such a frame | 1714 | @cindex surrogate minibuffer frame |
| 1704 | must use the minibuffer window of some other frame. When you create the | 1715 | However, you can also create a frame without a minibuffer. Such a frame |
| 1705 | frame, you can explicitly specify the minibuffer window to use (in some | 1716 | must use the minibuffer window of some other frame. That other frame |
| 1706 | other frame). If you don't, then the minibuffer is found in the frame | 1717 | will serve as @dfn{surrogate minibuffer frame} for this frame and cannot |
| 1707 | which is the value of the variable @code{default-minibuffer-frame}. Its | 1718 | be deleted via @code{delete-frame} (@pxref{Deleting Frames}) as long as |
| 1708 | value should be a frame that does have a minibuffer. | 1719 | this frame is live. |
| 1720 | |||
| 1721 | When you create the frame, you can explicitly specify the minibuffer | ||
| 1722 | window to use (in some other frame). If you don't, then the minibuffer | ||
| 1723 | is found in the frame which is the value of the variable | ||
| 1724 | @code{default-minibuffer-frame}. Its value should be a frame that does | ||
| 1725 | have a minibuffer. | ||
| 1709 | 1726 | ||
| 1710 | If you use a minibuffer-only frame, you might want that frame to raise | 1727 | If you use a minibuffer-only frame, you might want that frame to raise |
| 1711 | when you enter the minibuffer. If so, set the variable | 1728 | when you enter the minibuffer. If so, set the variable |
diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi index 28f90d9567a..f16018417de 100644 --- a/doc/lispref/nonascii.texi +++ b/doc/lispref/nonascii.texi | |||
| @@ -540,8 +540,8 @@ property is used for bidirectional display. | |||
| 540 | 540 | ||
| 541 | @item old-name | 541 | @item old-name |
| 542 | Corresponds to the Unicode @code{Unicode_1_Name} property. The value | 542 | Corresponds to the Unicode @code{Unicode_1_Name} property. The value |
| 543 | is a string. Unassigned codepoints, and characters that have no value | 543 | is a string. For unassigned codepoints, and characters that have no |
| 544 | for this property, the value is @code{nil}. | 544 | value for this property, the value is @code{nil}. |
| 545 | 545 | ||
| 546 | @item iso-10646-comment | 546 | @item iso-10646-comment |
| 547 | Corresponds to the Unicode @code{ISO_Comment} property. The value is | 547 | Corresponds to the Unicode @code{ISO_Comment} property. The value is |
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi index e7c79d58241..c972bbb2e43 100644 --- a/doc/lispref/positions.texi +++ b/doc/lispref/positions.texi | |||
| @@ -350,10 +350,11 @@ would move to. | |||
| 350 | @deffn Command forward-line &optional count | 350 | @deffn Command forward-line &optional count |
| 351 | @cindex beginning of line | 351 | @cindex beginning of line |
| 352 | This function moves point forward @var{count} lines, to the beginning of | 352 | This function moves point forward @var{count} lines, to the beginning of |
| 353 | the line. If @var{count} is negative, it moves point | 353 | the line following that. If @var{count} is negative, it moves point |
| 354 | @minus{}@var{count} lines backward, to the beginning of a line. If | 354 | @minus{}@var{count} lines backward, to the beginning of a line |
| 355 | @var{count} is zero, it moves point to the beginning of the current | 355 | preceding that. If @var{count} is zero, it moves point to the |
| 356 | line. If @var{count} is @code{nil}, that means 1. | 356 | beginning of the current line. If @var{count} is @code{nil}, that |
| 357 | means 1. | ||
| 357 | 358 | ||
| 358 | If @code{forward-line} encounters the beginning or end of the buffer (or | 359 | If @code{forward-line} encounters the beginning or end of the buffer (or |
| 359 | of the accessible portion) before finding that many lines, it sets point | 360 | of the accessible portion) before finding that many lines, it sets point |
| @@ -362,7 +363,11 @@ there. No error is signaled. | |||
| 362 | @code{forward-line} returns the difference between @var{count} and the | 363 | @code{forward-line} returns the difference between @var{count} and the |
| 363 | number of lines actually moved. If you attempt to move down five lines | 364 | number of lines actually moved. If you attempt to move down five lines |
| 364 | from the beginning of a buffer that has only three lines, point stops at | 365 | from the beginning of a buffer that has only three lines, point stops at |
| 365 | the end of the last line, and the value will be 2. | 366 | the end of the last line, and the value will be 2. As an explicit |
| 367 | exception, if the last accessible line is non-empty, but has no | ||
| 368 | newline (e.g., if the buffer ends without a newline), the function | ||
| 369 | sets point to the end of that line, and the value returned by the | ||
| 370 | function counts that line as one line successfully moved. | ||
| 366 | 371 | ||
| 367 | In an interactive call, @var{count} is the numeric prefix argument. | 372 | In an interactive call, @var{count} is the numeric prefix argument. |
| 368 | @end deffn | 373 | @end deffn |
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 6da3582ddd1..b2bc6378008 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi | |||
| @@ -2005,16 +2005,49 @@ list---both the global buffer list and the selected frame's buffer | |||
| 2005 | list (@pxref{Buffer List}). However, this is not done if the | 2005 | list (@pxref{Buffer List}). However, this is not done if the |
| 2006 | optional argument @var{norecord} is non-@code{nil}. | 2006 | optional argument @var{norecord} is non-@code{nil}. |
| 2007 | 2007 | ||
| 2008 | Sometimes, @code{switch-to-buffer} may be unable to display the buffer | 2008 | Sometimes, the selected window may not be suitable for displaying the |
| 2009 | in the selected window. This happens if the selected window is a | 2009 | buffer. This happens if the selected window is a minibuffer window, or |
| 2010 | minibuffer window, or if the selected window is strongly dedicated to | 2010 | if the selected window is strongly dedicated to its buffer |
| 2011 | its buffer (@pxref{Dedicated Windows}). In that case, the command | 2011 | (@pxref{Dedicated Windows}). In such cases, the command normally tries |
| 2012 | normally tries to display the buffer in some other window, by invoking | 2012 | to display the buffer in some other window, by invoking |
| 2013 | @code{pop-to-buffer} (see below). However, if the optional argument | 2013 | @code{pop-to-buffer} (see below). |
| 2014 | @var{force-same-window} is non-@code{nil}, it signals an error | 2014 | |
| 2015 | instead. | 2015 | If the optional argument @var{force-same-window} is non-@code{nil} and |
| 2016 | the selected window is not suitable for displaying the buffer, this | ||
| 2017 | function always signals an error when called non-interactively. In | ||
| 2018 | interactive use, if the selected window is a minibuffer window, this | ||
| 2019 | function will try to use some other window instead. If the selected | ||
| 2020 | window is strongly dedicated to its buffer, the option | ||
| 2021 | @code{switch-to-buffer-in-dedicated-window} described next can be used | ||
| 2022 | to proceed. | ||
| 2016 | @end deffn | 2023 | @end deffn |
| 2017 | 2024 | ||
| 2025 | @defopt switch-to-buffer-in-dedicated-window | ||
| 2026 | This option, if non-@code{nil}, allows @code{switch-to-buffer} to | ||
| 2027 | proceed when called interactively and the selected window is strongly | ||
| 2028 | dedicated to its buffer. | ||
| 2029 | |||
| 2030 | The following values are respected: | ||
| 2031 | |||
| 2032 | @table @code | ||
| 2033 | @item nil | ||
| 2034 | Disallows switching and signals an error as in non-interactive use. | ||
| 2035 | |||
| 2036 | @item prompt | ||
| 2037 | Prompts the user whether to allow switching. | ||
| 2038 | |||
| 2039 | @item pop | ||
| 2040 | Invokes @code{pop-to-buffer} to proceed. | ||
| 2041 | |||
| 2042 | @item t | ||
| 2043 | Marks the selected window as non-dedicated and proceeds. | ||
| 2044 | @end table | ||
| 2045 | |||
| 2046 | When called non-interactively, @code{switch-to-buffer} always signals an | ||
| 2047 | error when the selected window is dedicated to its buffer and | ||
| 2048 | @var{force-same-window} is non-@code{nil}. | ||
| 2049 | @end defopt | ||
| 2050 | |||
| 2018 | By default, @code{switch-to-buffer} shows the buffer at its position of | 2051 | By default, @code{switch-to-buffer} shows the buffer at its position of |
| 2019 | @code{point}. This behavior can be tuned using the following option. | 2052 | @code{point}. This behavior can be tuned using the following option. |
| 2020 | 2053 | ||
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi index 9e570da3d1d..56aea0c3184 100644 --- a/doc/misc/erc.texi +++ b/doc/misc/erc.texi | |||
| @@ -753,6 +753,26 @@ If non, @code{nil}, this is a list of IRC message types to hide, e.g.: | |||
| 753 | @end example | 753 | @end example |
| 754 | @end defopt | 754 | @end defopt |
| 755 | 755 | ||
| 756 | @defopt erc-network-hide-list | ||
| 757 | If non, @code{nil}, this is a list of IRC networks and message types | ||
| 758 | to hide, e.g.: | ||
| 759 | |||
| 760 | @example | ||
| 761 | (setq erc-network-hide-list (("freenode" "JOIN" "PART" "QUIT") | ||
| 762 | ("OFTC" "JOIN" "PART"")) | ||
| 763 | @end example | ||
| 764 | @end defopt | ||
| 765 | |||
| 766 | @defopt erc-channel-hide-list | ||
| 767 | If non, @code{nil}, this is a list of IRC channels and message types | ||
| 768 | to hide, e.g.: | ||
| 769 | |||
| 770 | @example | ||
| 771 | (setq erc-channel-hide-list (("#erc" "JOIN" "PART" "QUIT") | ||
| 772 | ("#emacs" "NICK")) | ||
| 773 | @end example | ||
| 774 | @end defopt | ||
| 775 | |||
| 756 | @defopt erc-lurker-hide-list | 776 | @defopt erc-lurker-hide-list |
| 757 | Like @code{erc-hide-list}, but only applies to messages sent by | 777 | Like @code{erc-hide-list}, but only applies to messages sent by |
| 758 | lurkers. The function @code{erc-lurker-p} determines whether a given | 778 | lurkers. The function @code{erc-lurker-p} determines whether a given |
| @@ -165,7 +165,7 @@ buffers to allow certain parts of the text to be writable. | |||
| 165 | ** A new function `directory-files-recursively' returns all matching | 165 | ** A new function `directory-files-recursively' returns all matching |
| 166 | files (recursively) under a directory. | 166 | files (recursively) under a directory. |
| 167 | 167 | ||
| 168 | ** The new `directory-name-p' can be used to check whether a file | 168 | ** The new function `directory-name-p' can be used to check whether a file |
| 169 | name (as returned from, for instance, `file-name-all-completions' is | 169 | name (as returned from, for instance, `file-name-all-completions' is |
| 170 | a directory file name. It returns non-nil if the last character in | 170 | a directory file name. It returns non-nil if the last character in |
| 171 | the name is a forward slash. | 171 | the name is a forward slash. |
| @@ -249,6 +249,13 @@ Unicode standards. | |||
| 249 | 249 | ||
| 250 | ** The `save-place' variable is replaced by a `save-place-mode'. | 250 | ** The `save-place' variable is replaced by a `save-place-mode'. |
| 251 | 251 | ||
| 252 | ** ERC | ||
| 253 | |||
| 254 | *** Hide message types by network or channel. `erc-hide-list' will | ||
| 255 | hide all messages of the specified type, where `erc-network-hide-list' | ||
| 256 | and `erc-channel-hide-list' will only hide the specified message types | ||
| 257 | for the respective specified targets. | ||
| 258 | |||
| 252 | ** Midnight-mode | 259 | ** Midnight-mode |
| 253 | *** `midnight-mode' is a proper minor mode. | 260 | *** `midnight-mode' is a proper minor mode. |
| 254 | *** clean-buffer-*-regexps can now specify buffers via predicate functions. | 261 | *** clean-buffer-*-regexps can now specify buffers via predicate functions. |
| @@ -585,8 +592,8 @@ nil to disable this. | |||
| 585 | fitting for use in money calculations; factorial works with | 592 | fitting for use in money calculations; factorial works with |
| 586 | non-integer inputs. | 593 | non-integer inputs. |
| 587 | 594 | ||
| 588 | ** HideIfDef mode now support full C/C++ expressions, argumented macro expansions | 595 | ** HideIfDef mode now support full C/C++ expressions, argumented macro expansions, |
| 589 | , interactive macro evaluation and automatic scanning of #defined symbols. | 596 | interactive macro evaluation and automatic scanning of #defined symbols. |
| 590 | 597 | ||
| 591 | *** New custom variable `hide-ifdef-header-regexp' to define C/C++ header file | 598 | *** New custom variable `hide-ifdef-header-regexp' to define C/C++ header file |
| 592 | name patterns. Default case-insensitive .h, .hh, .hpp and .hxx. | 599 | name patterns. Default case-insensitive .h, .hh, .hpp and .hxx. |
| @@ -675,6 +682,20 @@ command line's password prompt. | |||
| 675 | *** The new built-in command `clear' can scroll window contents out of sight. | 682 | *** The new built-in command `clear' can scroll window contents out of sight. |
| 676 | If provided with an optional non-nil argument, the scrollback contents will be cleared. | 683 | If provided with an optional non-nil argument, the scrollback contents will be cleared. |
| 677 | 684 | ||
| 685 | *** New buffer syntax '#<buffer-name>', which is equivalent to | ||
| 686 | '#<buffer buffer-name>'. This shorthand makes interacting with | ||
| 687 | buffers from eshell more convenient. Custom variable | ||
| 688 | `eshell-buffer-shorthand', which has been broken for a while, has been | ||
| 689 | removed. | ||
| 690 | |||
| 691 | *** By default, eshell "visual" program buffers (created by | ||
| 692 | `eshell-visual-commands' and similar custom vars) are no longer killed | ||
| 693 | when their processes die. This fixes issues with short-lived commands | ||
| 694 | and makes visual programs more useful in general. For example, if | ||
| 695 | "git log" is a visual command, it will always show the visual command | ||
| 696 | buffer, even if the "git log" process dies. For the old behavior, | ||
| 697 | make the new option `eshell-destroy-buffer-when-process-dies' non-nil. | ||
| 698 | |||
| 678 | ** Browse-url | 699 | ** Browse-url |
| 679 | 700 | ||
| 680 | *** Support for the Conkeror web browser. | 701 | *** Support for the Conkeror web browser. |
| @@ -720,6 +741,10 @@ a typographically-correct documents. | |||
| 720 | 741 | ||
| 721 | * Incompatible Lisp Changes in Emacs 25.1 | 742 | * Incompatible Lisp Changes in Emacs 25.1 |
| 722 | 743 | ||
| 744 | ** The optional `predicate' argument of `lisp-complete-symbol' no longer | ||
| 745 | has any effect. (This change was made in Emacs 24.4 but was not | ||
| 746 | advertised at the time.) | ||
| 747 | |||
| 723 | ** `indirect-function' does not signal `void-function' any more. | 748 | ** `indirect-function' does not signal `void-function' any more. |
| 724 | This is mostly a bug-fix, since this change was missed back in 24.4 when | 749 | This is mostly a bug-fix, since this change was missed back in 24.4 when |
| 725 | symbol-function was changed not to signal `void-function' any more. | 750 | symbol-function was changed not to signal `void-function' any more. |
| @@ -737,7 +762,7 @@ If you want the old behavior of calling the function in the buffer | |||
| 737 | from which the minibuffer was entered, call it with the new argument | 762 | from which the minibuffer was entered, call it with the new argument |
| 738 | `switch-buffer'. | 763 | `switch-buffer'. |
| 739 | 764 | ||
| 740 | ** window-configurations no longer record the buffers's marks. | 765 | ** window-configurations no longer record the buffers' marks. |
| 741 | 766 | ||
| 742 | ** inhibit-modification-hooks now also inhibits lock-file checks, as well as | 767 | ** inhibit-modification-hooks now also inhibits lock-file checks, as well as |
| 743 | active region handling. | 768 | active region handling. |
| @@ -942,6 +967,11 @@ fullwidth frames, the behavior may depend on the toolkit used. | |||
| 942 | windows without "fixing" it. It's supported by `fit-window-to-buffer', | 967 | windows without "fixing" it. It's supported by `fit-window-to-buffer', |
| 943 | `temp-buffer-resize-mode' and `display-buffer'. | 968 | `temp-buffer-resize-mode' and `display-buffer'. |
| 944 | 969 | ||
| 970 | +++ | ||
| 971 | ** New option `switch-to-buffer-in-dedicated-window' allows to customize | ||
| 972 | how `switch-to-buffer' proceeds interactively when the selected window | ||
| 973 | is strongly dedicated to its buffer. | ||
| 974 | |||
| 945 | ** Tearoff menus and detachable toolbars for Gtk+ has been removed. | 975 | ** Tearoff menus and detachable toolbars for Gtk+ has been removed. |
| 946 | Those features have been deprecated in Gtk+ for a long time. | 976 | Those features have been deprecated in Gtk+ for a long time. |
| 947 | 977 | ||
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index 806275f5b1d..357ebc736ab 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c | |||
| @@ -107,13 +107,13 @@ char *w32_getenv (char *); | |||
| 107 | /* Name used to invoke this program. */ | 107 | /* Name used to invoke this program. */ |
| 108 | const char *progname; | 108 | const char *progname; |
| 109 | 109 | ||
| 110 | /* The second argument to main. */ | 110 | /* The second argument to main. */ |
| 111 | char **main_argv; | 111 | char **main_argv; |
| 112 | 112 | ||
| 113 | /* Nonzero means don't wait for a response from Emacs. --no-wait. */ | 113 | /* Nonzero means don't wait for a response from Emacs. --no-wait. */ |
| 114 | int nowait = 0; | 114 | int nowait = 0; |
| 115 | 115 | ||
| 116 | /* Nonzero means don't print messages for successful operations. --quiet. */ | 116 | /* Nonzero means don't print messages for successful operations. --quiet. */ |
| 117 | int quiet = 0; | 117 | int quiet = 0; |
| 118 | 118 | ||
| 119 | /* Nonzero means args are expressions to be evaluated. --eval. */ | 119 | /* Nonzero means args are expressions to be evaluated. --eval. */ |
| @@ -131,7 +131,7 @@ const char *alt_display = NULL; | |||
| 131 | /* The parent window ID, if we are opening a frame via XEmbed. */ | 131 | /* The parent window ID, if we are opening a frame via XEmbed. */ |
| 132 | char *parent_id = NULL; | 132 | char *parent_id = NULL; |
| 133 | 133 | ||
| 134 | /* Nonzero means open a new Emacs frame on the current terminal. */ | 134 | /* Nonzero means open a new Emacs frame on the current terminal. */ |
| 135 | int tty = 0; | 135 | int tty = 0; |
| 136 | 136 | ||
| 137 | /* If non-NULL, the name of an editor to fallback to if the server | 137 | /* If non-NULL, the name of an editor to fallback to if the server |
| @@ -148,7 +148,7 @@ const char *server_file = NULL; | |||
| 148 | int emacs_pid = 0; | 148 | int emacs_pid = 0; |
| 149 | 149 | ||
| 150 | /* If non-NULL, a string that should form a frame parameter alist to | 150 | /* If non-NULL, a string that should form a frame parameter alist to |
| 151 | be used for the new frame */ | 151 | be used for the new frame. */ |
| 152 | const char *frame_parameters = NULL; | 152 | const char *frame_parameters = NULL; |
| 153 | 153 | ||
| 154 | static _Noreturn void print_help_and_exit (void); | 154 | static _Noreturn void print_help_and_exit (void); |
diff --git a/lib-src/etags.c b/lib-src/etags.c index 7bacbd3e619..28729da8720 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c | |||
| @@ -116,6 +116,7 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4"; | |||
| 116 | # undef HAVE_NTGUI | 116 | # undef HAVE_NTGUI |
| 117 | # undef DOS_NT | 117 | # undef DOS_NT |
| 118 | # define DOS_NT | 118 | # define DOS_NT |
| 119 | # define O_CLOEXEC O_NOINHERIT | ||
| 119 | #endif /* WINDOWSNT */ | 120 | #endif /* WINDOWSNT */ |
| 120 | 121 | ||
| 121 | #include <unistd.h> | 122 | #include <unistd.h> |
| @@ -125,6 +126,7 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4"; | |||
| 125 | #include <sysstdio.h> | 126 | #include <sysstdio.h> |
| 126 | #include <ctype.h> | 127 | #include <ctype.h> |
| 127 | #include <errno.h> | 128 | #include <errno.h> |
| 129 | #include <fcntl.h> | ||
| 128 | #include <sys/types.h> | 130 | #include <sys/types.h> |
| 129 | #include <sys/stat.h> | 131 | #include <sys/stat.h> |
| 130 | #include <binary-io.h> | 132 | #include <binary-io.h> |
| @@ -336,6 +338,7 @@ static char *absolute_filename (char *, char *); | |||
| 336 | static char *absolute_dirname (char *, char *); | 338 | static char *absolute_dirname (char *, char *); |
| 337 | static bool filename_is_absolute (char *f); | 339 | static bool filename_is_absolute (char *f); |
| 338 | static void canonicalize_filename (char *); | 340 | static void canonicalize_filename (char *); |
| 341 | static char *etags_mktmp (void); | ||
| 339 | static void linebuffer_init (linebuffer *); | 342 | static void linebuffer_init (linebuffer *); |
| 340 | static void linebuffer_setlen (linebuffer *, int); | 343 | static void linebuffer_setlen (linebuffer *, int); |
| 341 | static void *xmalloc (size_t); | 344 | static void *xmalloc (size_t); |
| @@ -1437,7 +1440,7 @@ process_file_name (char *file, language *lang) | |||
| 1437 | fdesc *fdp; | 1440 | fdesc *fdp; |
| 1438 | compressor *compr; | 1441 | compressor *compr; |
| 1439 | char *compressed_name, *uncompressed_name; | 1442 | char *compressed_name, *uncompressed_name; |
| 1440 | char *ext, *real_name; | 1443 | char *ext, *real_name, *tmp_name; |
| 1441 | int retval; | 1444 | int retval; |
| 1442 | 1445 | ||
| 1443 | canonicalize_filename (file); | 1446 | canonicalize_filename (file); |
| @@ -1522,9 +1525,20 @@ process_file_name (char *file, language *lang) | |||
| 1522 | } | 1525 | } |
| 1523 | if (real_name == compressed_name) | 1526 | if (real_name == compressed_name) |
| 1524 | { | 1527 | { |
| 1525 | char *cmd = concat (compr->command, " ", real_name); | 1528 | tmp_name = etags_mktmp (); |
| 1526 | inf = popen (cmd, "r" FOPEN_BINARY); | 1529 | if (!tmp_name) |
| 1527 | free (cmd); | 1530 | inf = NULL; |
| 1531 | else | ||
| 1532 | { | ||
| 1533 | char *cmd1 = concat (compr->command, " ", real_name); | ||
| 1534 | char *cmd = concat (cmd1, " > ", tmp_name); | ||
| 1535 | free (cmd1); | ||
| 1536 | if (system (cmd) == -1) | ||
| 1537 | inf = NULL; | ||
| 1538 | else | ||
| 1539 | inf = fopen (tmp_name, "r" FOPEN_BINARY); | ||
| 1540 | free (cmd); | ||
| 1541 | } | ||
| 1528 | } | 1542 | } |
| 1529 | else | 1543 | else |
| 1530 | inf = fopen (real_name, "r" FOPEN_BINARY); | 1544 | inf = fopen (real_name, "r" FOPEN_BINARY); |
| @@ -1536,10 +1550,12 @@ process_file_name (char *file, language *lang) | |||
| 1536 | 1550 | ||
| 1537 | process_file (inf, uncompressed_name, lang); | 1551 | process_file (inf, uncompressed_name, lang); |
| 1538 | 1552 | ||
| 1553 | retval = fclose (inf); | ||
| 1539 | if (real_name == compressed_name) | 1554 | if (real_name == compressed_name) |
| 1540 | retval = pclose (inf); | 1555 | { |
| 1541 | else | 1556 | remove (tmp_name); |
| 1542 | retval = fclose (inf); | 1557 | free (tmp_name); |
| 1558 | } | ||
| 1543 | if (retval < 0) | 1559 | if (retval < 0) |
| 1544 | pfatal (file); | 1560 | pfatal (file); |
| 1545 | 1561 | ||
| @@ -1707,9 +1723,6 @@ find_entries (FILE *inf) | |||
| 1707 | } | 1723 | } |
| 1708 | } | 1724 | } |
| 1709 | 1725 | ||
| 1710 | /* We rewind here, even if inf may be a pipe. We fail if the | ||
| 1711 | length of the first line is longer than the pipe block size, | ||
| 1712 | which is unlikely. */ | ||
| 1713 | rewind (inf); | 1726 | rewind (inf); |
| 1714 | 1727 | ||
| 1715 | /* Else try to guess the language given the case insensitive file name. */ | 1728 | /* Else try to guess the language given the case insensitive file name. */ |
| @@ -1734,8 +1747,6 @@ find_entries (FILE *inf) | |||
| 1734 | if (old_last_node == last_node) | 1747 | if (old_last_node == last_node) |
| 1735 | /* No Fortran entries found. Try C. */ | 1748 | /* No Fortran entries found. Try C. */ |
| 1736 | { | 1749 | { |
| 1737 | /* We do not tag if rewind fails. | ||
| 1738 | Only the file name will be recorded in the tags file. */ | ||
| 1739 | rewind (inf); | 1750 | rewind (inf); |
| 1740 | curfdp->lang = get_language_from_langname (cplusplus ? "c++" : "c"); | 1751 | curfdp->lang = get_language_from_langname (cplusplus ? "c++" : "c"); |
| 1741 | find_entries (inf); | 1752 | find_entries (inf); |
| @@ -5015,8 +5026,6 @@ TEX_mode (FILE *inf) | |||
| 5015 | TEX_opgrp = '<'; | 5026 | TEX_opgrp = '<'; |
| 5016 | TEX_clgrp = '>'; | 5027 | TEX_clgrp = '>'; |
| 5017 | } | 5028 | } |
| 5018 | /* If the input file is compressed, inf is a pipe, and rewind may fail. | ||
| 5019 | No attempt is made to correct the situation. */ | ||
| 5020 | rewind (inf); | 5029 | rewind (inf); |
| 5021 | } | 5030 | } |
| 5022 | 5031 | ||
| @@ -6344,6 +6353,51 @@ etags_getcwd (void) | |||
| 6344 | return path; | 6353 | return path; |
| 6345 | } | 6354 | } |
| 6346 | 6355 | ||
| 6356 | /* Return a newly allocated string containing a name of a temporary file. */ | ||
| 6357 | static char * | ||
| 6358 | etags_mktmp (void) | ||
| 6359 | { | ||
| 6360 | const char *tmpdir = getenv ("TMPDIR"); | ||
| 6361 | const char *slash = "/"; | ||
| 6362 | |||
| 6363 | #if MSDOS || defined (DOS_NT) | ||
| 6364 | if (!tmpdir) | ||
| 6365 | tmpdir = getenv ("TEMP"); | ||
| 6366 | if (!tmpdir) | ||
| 6367 | tmpdir = getenv ("TMP"); | ||
| 6368 | if (!tmpdir) | ||
| 6369 | tmpdir = "."; | ||
| 6370 | if (tmpdir[strlen (tmpdir) - 1] == '/' | ||
| 6371 | || tmpdir[strlen (tmpdir) - 1] == '\\') | ||
| 6372 | slash = ""; | ||
| 6373 | #else | ||
| 6374 | if (!tmpdir) | ||
| 6375 | tmpdir = "/tmp"; | ||
| 6376 | if (tmpdir[strlen (tmpdir) - 1] == '/') | ||
| 6377 | slash = ""; | ||
| 6378 | #endif | ||
| 6379 | |||
| 6380 | char *templt = concat (tmpdir, slash, "etXXXXXX"); | ||
| 6381 | int fd = mkostemp (templt, O_CLOEXEC); | ||
| 6382 | if (fd < 0) | ||
| 6383 | { | ||
| 6384 | free (templt); | ||
| 6385 | templt = NULL; | ||
| 6386 | } | ||
| 6387 | else | ||
| 6388 | close (fd); | ||
| 6389 | |||
| 6390 | #if defined (DOS_NT) | ||
| 6391 | /* The file name will be used in shell redirection, so it needs to have | ||
| 6392 | DOS-style backslashes, or else the Windows shell will barf. */ | ||
| 6393 | char *p; | ||
| 6394 | for (p = templt; *p; p++) | ||
| 6395 | if (*p == '/') | ||
| 6396 | *p = '\\'; | ||
| 6397 | #endif | ||
| 6398 | return templt; | ||
| 6399 | } | ||
| 6400 | |||
| 6347 | /* Return a newly allocated string containing the file name of FILE | 6401 | /* Return a newly allocated string containing the file name of FILE |
| 6348 | relative to the absolute directory DIR (which should end with a slash). */ | 6402 | relative to the absolute directory DIR (which should end with a slash). */ |
| 6349 | static char * | 6403 | static char * |
| @@ -6484,7 +6538,6 @@ static void | |||
| 6484 | canonicalize_filename (register char *fn) | 6538 | canonicalize_filename (register char *fn) |
| 6485 | { | 6539 | { |
| 6486 | register char* cp; | 6540 | register char* cp; |
| 6487 | char sep = '/'; | ||
| 6488 | 6541 | ||
| 6489 | #ifdef DOS_NT | 6542 | #ifdef DOS_NT |
| 6490 | /* Canonicalize drive letter case. */ | 6543 | /* Canonicalize drive letter case. */ |
| @@ -6492,19 +6545,33 @@ canonicalize_filename (register char *fn) | |||
| 6492 | if (fn[0] != '\0' && fn[1] == ':' && ISUPPER (fn[0])) | 6545 | if (fn[0] != '\0' && fn[1] == ':' && ISUPPER (fn[0])) |
| 6493 | fn[0] = lowcase (fn[0]); | 6546 | fn[0] = lowcase (fn[0]); |
| 6494 | 6547 | ||
| 6495 | sep = '\\'; | 6548 | /* Collapse multiple forward- and back-slashes into a single forward |
| 6496 | #endif | 6549 | slash. */ |
| 6550 | for (cp = fn; *cp != '\0'; cp++, fn++) | ||
| 6551 | if (*cp == '/' || *cp == '\\') | ||
| 6552 | { | ||
| 6553 | *fn = '/'; | ||
| 6554 | while (cp[1] == '/' || cp[1] == '\\') | ||
| 6555 | cp++; | ||
| 6556 | } | ||
| 6557 | else | ||
| 6558 | *fn = *cp; | ||
| 6497 | 6559 | ||
| 6498 | /* Collapse multiple separators into a single slash. */ | 6560 | #else /* !DOS_NT */ |
| 6561 | |||
| 6562 | /* Collapse multiple slashes into a single slash. */ | ||
| 6499 | for (cp = fn; *cp != '\0'; cp++, fn++) | 6563 | for (cp = fn; *cp != '\0'; cp++, fn++) |
| 6500 | if (*cp == sep) | 6564 | if (*cp == '/') |
| 6501 | { | 6565 | { |
| 6502 | *fn = '/'; | 6566 | *fn = '/'; |
| 6503 | while (cp[1] == sep) | 6567 | while (cp[1] == '/') |
| 6504 | cp++; | 6568 | cp++; |
| 6505 | } | 6569 | } |
| 6506 | else | 6570 | else |
| 6507 | *fn = *cp; | 6571 | *fn = *cp; |
| 6572 | |||
| 6573 | #endif /* !DOS_NT */ | ||
| 6574 | |||
| 6508 | *fn = '\0'; | 6575 | *fn = '\0'; |
| 6509 | } | 6576 | } |
| 6510 | 6577 | ||
diff --git a/lisp/ChangeLog.16 b/lisp/ChangeLog.16 index 457c1511af8..bc5267aadba 100644 --- a/lisp/ChangeLog.16 +++ b/lisp/ChangeLog.16 | |||
| @@ -5030,8 +5030,7 @@ | |||
| 5030 | * mouse.el (mouse-yank-primarY): Look for frame-type w32, not | 5030 | * mouse.el (mouse-yank-primarY): Look for frame-type w32, not |
| 5031 | system-type windows-nt. | 5031 | system-type windows-nt. |
| 5032 | 5032 | ||
| 5033 | * server.el (server-create-window-system-frame): Look for window | 5033 | * server.el (server-create-window-system-frame): Look for window type. |
| 5034 | type. | ||
| 5035 | (server-proces-filter): Only force a window system when windows-nt | 5034 | (server-proces-filter): Only force a window system when windows-nt |
| 5036 | _and_ w32. Explain why. | 5035 | _and_ w32. Explain why. |
| 5037 | 5036 | ||
diff --git a/lisp/allout-widgets.el b/lisp/allout-widgets.el index 164cd3192ac..3c71a810bfb 100644 --- a/lisp/allout-widgets.el +++ b/lisp/allout-widgets.el | |||
| @@ -348,7 +348,7 @@ to `allout-body-modification-handler', and is always reset by | |||
| 348 | images with lists containing the name of the icon directory (as | 348 | images with lists containing the name of the icon directory (as |
| 349 | found on the `load-path') and the icon name. | 349 | found on the `load-path') and the icon name. |
| 350 | 350 | ||
| 351 | Set this variable to `nil' to empty the cache, and have it replenish from the | 351 | Set this variable to nil to empty the cache, and have it replenish from the |
| 352 | filesystem.") | 352 | filesystem.") |
| 353 | ;;;_ = allout-widgets-unset-inhibit-read-only | 353 | ;;;_ = allout-widgets-unset-inhibit-read-only |
| 354 | (defvar allout-widgets-unset-inhibit-read-only nil | 354 | (defvar allout-widgets-unset-inhibit-read-only nil |
diff --git a/lisp/allout.el b/lisp/allout.el index 2cdac99f90a..dcdd35eb488 100644 --- a/lisp/allout.el +++ b/lisp/allout.el | |||
| @@ -322,7 +322,7 @@ With value nil, inhibit any automatic allout-mode activation." | |||
| 322 | "Default allout outline layout specification. | 322 | "Default allout outline layout specification. |
| 323 | 323 | ||
| 324 | This setting specifies the outline exposure to use when | 324 | This setting specifies the outline exposure to use when |
| 325 | `allout-layout' has the local value `t'. This docstring describes the | 325 | `allout-layout' has the local value t. This docstring describes the |
| 326 | layout specifications. | 326 | layout specifications. |
| 327 | 327 | ||
| 328 | A list value specifies a default layout for the current buffer, | 328 | A list value specifies a default layout for the current buffer, |
| @@ -933,7 +933,7 @@ followed by the equivalent of `(allout-expose-topic 0 : -1 -1 0)'. | |||
| 933 | \(This is the layout used for the allout.el source file.) | 933 | \(This is the layout used for the allout.el source file.) |
| 934 | 934 | ||
| 935 | `allout-default-layout' describes the specification format. | 935 | `allout-default-layout' describes the specification format. |
| 936 | `allout-layout' can additionally have the value `t', in which | 936 | `allout-layout' can additionally have the value t, in which |
| 937 | case the value of `allout-default-layout' is used.") | 937 | case the value of `allout-default-layout' is used.") |
| 938 | (make-variable-buffer-local 'allout-layout) | 938 | (make-variable-buffer-local 'allout-layout) |
| 939 | ;;;###autoload | 939 | ;;;###autoload |
diff --git a/lisp/autorevert.el b/lisp/autorevert.el index 357916c6b4d..2ff7c0115f3 100644 --- a/lisp/autorevert.el +++ b/lisp/autorevert.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;;; autorevert.el --- revert buffers when files on disk change | 1 | ;;; autorevert.el --- revert buffers when files on disk change -*- lexical-binding:t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1997-1999, 2001-2015 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1997-1999, 2001-2015 Free Software Foundation, Inc. |
| 4 | 4 | ||
| @@ -95,7 +95,7 @@ | |||
| 95 | ;; mode. For example, the following line will activate Auto-Revert | 95 | ;; mode. For example, the following line will activate Auto-Revert |
| 96 | ;; Mode in all C mode buffers: | 96 | ;; Mode in all C mode buffers: |
| 97 | ;; | 97 | ;; |
| 98 | ;; (add-hook 'c-mode-hook 'turn-on-auto-revert-mode) | 98 | ;; (add-hook 'c-mode-hook #'turn-on-auto-revert-mode) |
| 99 | 99 | ||
| 100 | ;;; Code: | 100 | ;;; Code: |
| 101 | 101 | ||
| @@ -260,10 +260,9 @@ buffers. CPU usage depends on the version control system." | |||
| 260 | :type 'boolean | 260 | :type 'boolean |
| 261 | :version "22.1") | 261 | :version "22.1") |
| 262 | 262 | ||
| 263 | (defvar global-auto-revert-ignore-buffer nil | 263 | (defvar-local global-auto-revert-ignore-buffer nil |
| 264 | "When non-nil, Global Auto-Revert Mode will not revert this buffer. | 264 | "When non-nil, Global Auto-Revert Mode will not revert this buffer. |
| 265 | This variable becomes buffer local when set in any fashion.") | 265 | This variable becomes buffer local when set in any fashion.") |
| 266 | (make-variable-buffer-local 'global-auto-revert-ignore-buffer) | ||
| 267 | 266 | ||
| 268 | (defcustom auto-revert-remote-files nil | 267 | (defcustom auto-revert-remote-files nil |
| 269 | "If non-nil remote files are also reverted." | 268 | "If non-nil remote files are also reverted." |
| @@ -315,9 +314,9 @@ the list of old buffers.") | |||
| 315 | "Position of last known end of file.") | 314 | "Position of last known end of file.") |
| 316 | 315 | ||
| 317 | (add-hook 'find-file-hook | 316 | (add-hook 'find-file-hook |
| 318 | (lambda () | 317 | (lambda () |
| 319 | (set (make-local-variable 'auto-revert-tail-pos) | 318 | (setq-local auto-revert-tail-pos |
| 320 | (nth 7 (file-attributes buffer-file-name))))) | 319 | (nth 7 (file-attributes buffer-file-name))))) |
| 321 | 320 | ||
| 322 | (defvar auto-revert-notify-watch-descriptor-hash-list | 321 | (defvar auto-revert-notify-watch-descriptor-hash-list |
| 323 | (make-hash-table :test 'equal) | 322 | (make-hash-table :test 'equal) |
| @@ -326,15 +325,13 @@ Hash key is a watch descriptor, hash value is a list of buffers | |||
| 326 | which are related to files being watched and carrying the same | 325 | which are related to files being watched and carrying the same |
| 327 | default directory.") | 326 | default directory.") |
| 328 | 327 | ||
| 329 | (defvar auto-revert-notify-watch-descriptor nil | 328 | (defvar-local auto-revert-notify-watch-descriptor nil |
| 330 | "The file watch descriptor active for the current buffer.") | 329 | "The file watch descriptor active for the current buffer.") |
| 331 | (make-variable-buffer-local 'auto-revert-notify-watch-descriptor) | ||
| 332 | (put 'auto-revert-notify-watch-descriptor 'permanent-local t) | 330 | (put 'auto-revert-notify-watch-descriptor 'permanent-local t) |
| 333 | 331 | ||
| 334 | (defvar auto-revert-notify-modified-p nil | 332 | (defvar-local auto-revert-notify-modified-p nil |
| 335 | "Non-nil when file has been modified on the file system. | 333 | "Non-nil when file has been modified on the file system. |
| 336 | This has been reported by a file notification event.") | 334 | This has been reported by a file notification event.") |
| 337 | (make-variable-buffer-local 'auto-revert-notify-modified-p) | ||
| 338 | 335 | ||
| 339 | ;; Functions: | 336 | ;; Functions: |
| 340 | 337 | ||
| @@ -370,7 +367,7 @@ without being changed in the part that is already in the buffer." | |||
| 370 | "Turn on Auto-Revert Mode. | 367 | "Turn on Auto-Revert Mode. |
| 371 | 368 | ||
| 372 | This function is designed to be added to hooks, for example: | 369 | This function is designed to be added to hooks, for example: |
| 373 | (add-hook 'c-mode-hook 'turn-on-auto-revert-mode)" | 370 | (add-hook 'c-mode-hook #'turn-on-auto-revert-mode)" |
| 374 | (auto-revert-mode 1)) | 371 | (auto-revert-mode 1)) |
| 375 | 372 | ||
| 376 | 373 | ||
| @@ -420,8 +417,8 @@ Perform a full revert? ") | |||
| 420 | ;; else we might reappend our own end when we save | 417 | ;; else we might reappend our own end when we save |
| 421 | (add-hook 'before-save-hook (lambda () (auto-revert-tail-mode 0)) nil t) | 418 | (add-hook 'before-save-hook (lambda () (auto-revert-tail-mode 0)) nil t) |
| 422 | (or (local-variable-p 'auto-revert-tail-pos) ; don't lose prior position | 419 | (or (local-variable-p 'auto-revert-tail-pos) ; don't lose prior position |
| 423 | (set (make-local-variable 'auto-revert-tail-pos) | 420 | (setq-local auto-revert-tail-pos |
| 424 | (nth 7 (file-attributes buffer-file-name)))) | 421 | (nth 7 (file-attributes buffer-file-name)))) |
| 425 | ;; let auto-revert-mode set up the mechanism for us if it isn't already | 422 | ;; let auto-revert-mode set up the mechanism for us if it isn't already |
| 426 | (or auto-revert-mode | 423 | (or auto-revert-mode |
| 427 | (let ((auto-revert-tail-mode t)) | 424 | (let ((auto-revert-tail-mode t)) |
| @@ -434,7 +431,7 @@ Perform a full revert? ") | |||
| 434 | "Turn on Auto-Revert Tail mode. | 431 | "Turn on Auto-Revert Tail mode. |
| 435 | 432 | ||
| 436 | This function is designed to be added to hooks, for example: | 433 | This function is designed to be added to hooks, for example: |
| 437 | (add-hook 'my-logfile-mode-hook 'turn-on-auto-revert-tail-mode)" | 434 | (add-hook 'my-logfile-mode-hook #'turn-on-auto-revert-tail-mode)" |
| 438 | (auto-revert-tail-mode 1)) | 435 | (auto-revert-tail-mode 1)) |
| 439 | 436 | ||
| 440 | 437 | ||
| @@ -495,7 +492,7 @@ will use an up-to-date value of `auto-revert-interval'" | |||
| 495 | (ignore-errors | 492 | (ignore-errors |
| 496 | (file-notify-rm-watch auto-revert-notify-watch-descriptor))))) | 493 | (file-notify-rm-watch auto-revert-notify-watch-descriptor))))) |
| 497 | auto-revert-notify-watch-descriptor-hash-list) | 494 | auto-revert-notify-watch-descriptor-hash-list) |
| 498 | (remove-hook 'kill-buffer-hook 'auto-revert-notify-rm-watch)) | 495 | (remove-hook 'kill-buffer-hook #'auto-revert-notify-rm-watch)) |
| 499 | (setq auto-revert-notify-watch-descriptor nil | 496 | (setq auto-revert-notify-watch-descriptor nil |
| 500 | auto-revert-notify-modified-p nil)) | 497 | auto-revert-notify-modified-p nil)) |
| 501 | 498 | ||
| @@ -508,7 +505,7 @@ will use an up-to-date value of `auto-revert-interval'" | |||
| 508 | (file-symlink-p (or buffer-file-name default-directory))) | 505 | (file-symlink-p (or buffer-file-name default-directory))) |
| 509 | 506 | ||
| 510 | ;; Fallback to file checks. | 507 | ;; Fallback to file checks. |
| 511 | (set (make-local-variable 'auto-revert-use-notify) nil) | 508 | (setq-local auto-revert-use-notify nil) |
| 512 | 509 | ||
| 513 | (when (not auto-revert-notify-watch-descriptor) | 510 | (when (not auto-revert-notify-watch-descriptor) |
| 514 | (setq auto-revert-notify-watch-descriptor | 511 | (setq auto-revert-notify-watch-descriptor |
| @@ -530,10 +527,10 @@ will use an up-to-date value of `auto-revert-interval'" | |||
| 530 | (gethash auto-revert-notify-watch-descriptor | 527 | (gethash auto-revert-notify-watch-descriptor |
| 531 | auto-revert-notify-watch-descriptor-hash-list)) | 528 | auto-revert-notify-watch-descriptor-hash-list)) |
| 532 | auto-revert-notify-watch-descriptor-hash-list) | 529 | auto-revert-notify-watch-descriptor-hash-list) |
| 533 | (add-hook (make-local-variable 'kill-buffer-hook) | 530 | (add-hook 'kill-buffer-hook |
| 534 | 'auto-revert-notify-rm-watch)) | 531 | #'auto-revert-notify-rm-watch nil t)) |
| 535 | ;; Fallback to file checks. | 532 | ;; Fallback to file checks. |
| 536 | (set (make-local-variable 'auto-revert-use-notify) nil))))) | 533 | (setq-local auto-revert-use-notify nil))))) |
| 537 | 534 | ||
| 538 | ;; If we have file notifications, we want to update the auto-revert buffers | 535 | ;; If we have file notifications, we want to update the auto-revert buffers |
| 539 | ;; immediately when a notification occurs. Since file updates can happen very | 536 | ;; immediately when a notification occurs. Since file updates can happen very |
diff --git a/lisp/calc/calc-aent.el b/lisp/calc/calc-aent.el index 23de53e0f0c..cc048ebc223 100644 --- a/lisp/calc/calc-aent.el +++ b/lisp/calc/calc-aent.el | |||
| @@ -1034,7 +1034,7 @@ in Calc algebraic input.") | |||
| 1034 | 1034 | ||
| 1035 | (defun math-restore-placeholders (x) | 1035 | (defun math-restore-placeholders (x) |
| 1036 | "Replace placeholders by the proper characters in the symbol x. | 1036 | "Replace placeholders by the proper characters in the symbol x. |
| 1037 | This includes `#' for `_' and `'' for `%'. | 1037 | This includes ‘#’ for ‘_’ and ‘'’ for ‘%’. |
| 1038 | If the current Calc language does not use placeholders, return nil." | 1038 | If the current Calc language does not use placeholders, return nil." |
| 1039 | (if (or (memq calc-language calc-lang-allow-underscores) | 1039 | (if (or (memq calc-language calc-lang-allow-underscores) |
| 1040 | (memq calc-language calc-lang-allow-percentsigns)) | 1040 | (memq calc-language calc-lang-allow-percentsigns)) |
diff --git a/lisp/calc/calc-yank.el b/lisp/calc/calc-yank.el index 726a7202a8a..923df5d577f 100644 --- a/lisp/calc/calc-yank.el +++ b/lisp/calc/calc-yank.el | |||
| @@ -149,7 +149,7 @@ as well as set the contents of the Emacs register REGISTER to TEXT." | |||
| 149 | "Return the CALCVAL portion of the contents of the Calc register REG, | 149 | "Return the CALCVAL portion of the contents of the Calc register REG, |
| 150 | unless the TEXT portion doesn't match the contents of the Emacs register REG, | 150 | unless the TEXT portion doesn't match the contents of the Emacs register REG, |
| 151 | in which case either return the contents of the Emacs register (if it is | 151 | in which case either return the contents of the Emacs register (if it is |
| 152 | text) or `nil'." | 152 | text) or nil." |
| 153 | (let ((cval (cdr (assq reg calc-register-alist))) | 153 | (let ((cval (cdr (assq reg calc-register-alist))) |
| 154 | (val (cdr (assq reg register-alist)))) | 154 | (val (cdr (assq reg register-alist)))) |
| 155 | (if (stringp val) | 155 | (if (stringp val) |
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el index 1cc11b48ac3..52ed5d7eb3d 100644 --- a/lisp/calc/calc.el +++ b/lisp/calc/calc.el | |||
| @@ -2034,7 +2034,7 @@ See calc-keypad for details." | |||
| 2034 | ;; (YEAR MONTH DAY math-date-from-gregorian-dt(YEAR MONTH DAY)) for speed. | 2034 | ;; (YEAR MONTH DAY math-date-from-gregorian-dt(YEAR MONTH DAY)) for speed. |
| 2035 | (defcustom calc-gregorian-switch nil | 2035 | (defcustom calc-gregorian-switch nil |
| 2036 | "The first day the Gregorian calendar is used by Calc's date forms. | 2036 | "The first day the Gregorian calendar is used by Calc's date forms. |
| 2037 | This is `nil' (the default) if the Gregorian calendar is the only one used. | 2037 | This is nil (the default) if the Gregorian calendar is the only one used. |
| 2038 | Otherwise, it should be a list `(YEAR MONTH DAY)' when Calc begins to use | 2038 | Otherwise, it should be a list `(YEAR MONTH DAY)' when Calc begins to use |
| 2039 | the Gregorian calendar; Calc will use the Julian calendar for earlier dates. | 2039 | the Gregorian calendar; Calc will use the Julian calendar for earlier dates. |
| 2040 | The dates in which different regions of the world began to use the | 2040 | The dates in which different regions of the world began to use the |
diff --git a/lisp/calculator.el b/lisp/calculator.el index 0aef07b1750..4027887fb07 100644 --- a/lisp/calculator.el +++ b/lisp/calculator.el | |||
| @@ -1203,10 +1203,10 @@ arguments." | |||
| 1203 | ;; f is an expression | 1203 | ;; f is an expression |
| 1204 | (let ((TX (and X (calculator-truncate X))) | 1204 | (let ((TX (and X (calculator-truncate X))) |
| 1205 | (TY (and Y (calculator-truncate Y))) | 1205 | (TY (and Y (calculator-truncate Y))) |
| 1206 | (DX (if (and X calculator-deg) (/ (* X pi) 180) X)) | 1206 | (DX (if (and X calculator-deg) (degrees-to-radians X) X)) |
| 1207 | (L calculator-saved-list) | 1207 | (L calculator-saved-list) |
| 1208 | (fF `(calculator-funcall ',f x y)) | 1208 | (fF `(calculator-funcall ',f x y)) |
| 1209 | (fD `(if calculator-deg (/ (* x 180) float-pi) x))) | 1209 | (fD `(if calculator-deg (* radians-to-degrees x) x))) |
| 1210 | (eval `(cl-flet ((F (&optional x y) ,fF) (D (x) ,fD)) | 1210 | (eval `(cl-flet ((F (&optional x y) ,fF) (D (x) ,fD)) |
| 1211 | (let ((X ,X) (Y ,Y) (DX ,DX) (TX ,TX) (TY ,TY) (L ',L)) | 1211 | (let ((X ,X) (Y ,Y) (DX ,DX) (TX ,TX) (TY ,TY) (L ',L)) |
| 1212 | ,f)) | 1212 | ,f)) |
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el index e42a0100696..1612f48a019 100644 --- a/lisp/calendar/calendar.el +++ b/lisp/calendar/calendar.el | |||
| @@ -2182,7 +2182,7 @@ in `calendar-month-name-array'. These abbreviations are used in | |||
| 2182 | the calendar menu entries, and can also be used in the diary | 2182 | the calendar menu entries, and can also be used in the diary |
| 2183 | file. Do not include a trailing `.' in the strings specified in | 2183 | file. Do not include a trailing `.' in the strings specified in |
| 2184 | this variable, though you may use such in the diary file. By | 2184 | this variable, though you may use such in the diary file. By |
| 2185 | default, each string is the first ``calendar-abbrev-length' | 2185 | default, each string is the first `calendar-abbrev-length' |
| 2186 | characters of the corresponding full name." | 2186 | characters of the corresponding full name." |
| 2187 | :group 'calendar | 2187 | :group 'calendar |
| 2188 | :set-after '(calendar-abbrev-length calendar-month-name-array) | 2188 | :set-after '(calendar-abbrev-length calendar-month-name-array) |
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el index 29364b55b6c..d5bd26a9277 100644 --- a/lisp/calendar/diary-lib.el +++ b/lisp/calendar/diary-lib.el | |||
| @@ -104,9 +104,9 @@ are: `string', `symbol', `int', `tnil', `stringtnil.'" | |||
| 104 | (choice (const string :tag "A string") | 104 | (choice (const string :tag "A string") |
| 105 | (const symbol :tag "A symbol") | 105 | (const symbol :tag "A symbol") |
| 106 | (const int :tag "An integer") | 106 | (const int :tag "An integer") |
| 107 | (const tnil :tag "`t' or `nil'") | 107 | (const tnil :tag "t or nil") |
| 108 | (const stringtnil | 108 | (const stringtnil |
| 109 | :tag "A string, `t', or `nil'")))) | 109 | :tag "A string, t, or nil")))) |
| 110 | :group 'diary) | 110 | :group 'diary) |
| 111 | 111 | ||
| 112 | (defcustom diary-glob-file-regexp-prefix "^\\#" | 112 | (defcustom diary-glob-file-regexp-prefix "^\\#" |
| @@ -1671,7 +1671,7 @@ DAY MONTH YEAR in the European style). | |||
| 1671 | 1671 | ||
| 1672 | %%(diary-date MONTH DAY YEAR &optional MARK) text | 1672 | %%(diary-date MONTH DAY YEAR &optional MARK) text |
| 1673 | Entry applies if date is MONTH, DAY, YEAR. DAY, MONTH, and YEAR can | 1673 | Entry applies if date is MONTH, DAY, YEAR. DAY, MONTH, and YEAR can |
| 1674 | be a list of integers, `t' (meaning all values), or an integer. | 1674 | be a list of integers, t (meaning all values), or an integer. |
| 1675 | 1675 | ||
| 1676 | %%(diary-float MONTH DAYNAME N &optional DAY MARK) text | 1676 | %%(diary-float MONTH DAYNAME N &optional DAY MARK) text |
| 1677 | Entry will appear on the Nth DAYNAME after/before MONTH DAY. | 1677 | Entry will appear on the Nth DAYNAME after/before MONTH DAY. |
| @@ -1679,7 +1679,7 @@ DAY MONTH YEAR in the European style). | |||
| 1679 | If N>0, use the Nth DAYNAME after MONTH DAY. | 1679 | If N>0, use the Nth DAYNAME after MONTH DAY. |
| 1680 | If N<0, use the Nth DAYNAME before MONTH DAY. | 1680 | If N<0, use the Nth DAYNAME before MONTH DAY. |
| 1681 | DAY defaults to 1 if N>0, and MONTH's last day otherwise. | 1681 | DAY defaults to 1 if N>0, and MONTH's last day otherwise. |
| 1682 | MONTH can be a list of months, a single month, or `t' to | 1682 | MONTH can be a list of months, a single month, or t to |
| 1683 | specify all months. | 1683 | specify all months. |
| 1684 | 1684 | ||
| 1685 | %%(diary-block M1 D1 Y1 M2 D2 Y2 &optional MARK) text | 1685 | %%(diary-block M1 D1 Y1 M2 D2 Y2 &optional MARK) text |
| @@ -1814,7 +1814,7 @@ form used internally by the calendar and diary." | |||
| 1814 | (defun diary-date (month day year &optional mark) | 1814 | (defun diary-date (month day year &optional mark) |
| 1815 | "Specific date(s) diary entry. | 1815 | "Specific date(s) diary entry. |
| 1816 | Entry applies if date is MONTH, DAY, YEAR. Each parameter can be a | 1816 | Entry applies if date is MONTH, DAY, YEAR. Each parameter can be a |
| 1817 | list of integers, `t' (meaning all values), or an integer. The order | 1817 | list of integers, t (meaning all values), or an integer. The order |
| 1818 | of the input parameters changes according to `calendar-date-style' | 1818 | of the input parameters changes according to `calendar-date-style' |
| 1819 | \(e.g. to DAY MONTH YEAR in the European style). | 1819 | \(e.g. to DAY MONTH YEAR in the European style). |
| 1820 | 1820 | ||
| @@ -1863,7 +1863,7 @@ DAYNAME=0 means Sunday, DAYNAME=1 means Monday, and so on. | |||
| 1863 | If N>0, use the Nth DAYNAME after MONTH DAY. | 1863 | If N>0, use the Nth DAYNAME after MONTH DAY. |
| 1864 | If N<0, use the Nth DAYNAME before MONTH DAY. | 1864 | If N<0, use the Nth DAYNAME before MONTH DAY. |
| 1865 | DAY defaults to 1 if N>0, and MONTH's last day otherwise. | 1865 | DAY defaults to 1 if N>0, and MONTH's last day otherwise. |
| 1866 | MONTH can be a list of months, an integer, or `t' (meaning all months). | 1866 | MONTH can be a list of months, an integer, or t (meaning all months). |
| 1867 | Optional MARK specifies a face or single-character string to use when | 1867 | Optional MARK specifies a face or single-character string to use when |
| 1868 | highlighting the day in the calendar." | 1868 | highlighting the day in the calendar." |
| 1869 | ;; This is messy because the diary entry may apply, but the date on which it | 1869 | ;; This is messy because the diary entry may apply, but the date on which it |
diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el index 25a24eeffeb..a2f9d58585a 100644 --- a/lisp/calendar/solar.el +++ b/lisp/calendar/solar.el | |||
| @@ -346,7 +346,7 @@ If SUNRISE-FLAG is non-nil, only calculate longitude and inclination." | |||
| 346 | (solar-cosine-degrees (* 2 l))) | 346 | (solar-cosine-degrees (* 2 l))) |
| 347 | (* -0.5 y y (solar-sin-degrees (* 4 l))) | 347 | (* -0.5 y y (solar-sin-degrees (* 4 l))) |
| 348 | (* -1.25 ecc ecc (solar-sin-degrees (* 2 m))))) | 348 | (* -1.25 ecc ecc (solar-sin-degrees (* 2 m))))) |
| 349 | 3.1415926535)))) | 349 | float-pi)))) |
| 350 | (list app i time-eq nut))) | 350 | (list app i time-eq nut))) |
| 351 | 351 | ||
| 352 | (defun solar-ephemeris-correction (year) | 352 | (defun solar-ephemeris-correction (year) |
diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el index bb9316c81d7..7369ec28c29 100644 --- a/lisp/calendar/todo-mode.el +++ b/lisp/calendar/todo-mode.el | |||
| @@ -5443,7 +5443,7 @@ dynamically create item insertion commands.") | |||
| 5443 | The list consists of item insertion parameters that can be passed | 5443 | The list consists of item insertion parameters that can be passed |
| 5444 | as insertion command arguments in fixed positions. If a position | 5444 | as insertion command arguments in fixed positions. If a position |
| 5445 | in the list is not occupied by the corresponding parameter, it is | 5445 | in the list is not occupied by the corresponding parameter, it is |
| 5446 | occupied by `nil'." | 5446 | occupied by nil." |
| 5447 | (let* ((arg (list (car todo-insert-item--args))) | 5447 | (let* ((arg (list (car todo-insert-item--args))) |
| 5448 | (args (nconc (cdr todo-insert-item--args) | 5448 | (args (nconc (cdr todo-insert-item--args) |
| 5449 | (list (car (todo-insert-item--argsleft | 5449 | (list (car (todo-insert-item--argsleft |
diff --git a/lisp/cedet/ede/auto.el b/lisp/cedet/ede/auto.el index 7e8df6b89af..482632f294a 100644 --- a/lisp/cedet/ede/auto.el +++ b/lisp/cedet/ede/auto.el | |||
| @@ -86,7 +86,7 @@ into memory.") | |||
| 86 | ;; If the thing to match is stored in a config file. | 86 | ;; If the thing to match is stored in a config file. |
| 87 | ((stringp fc) | 87 | ((stringp fc) |
| 88 | (when (file-exists-p fc) | 88 | (when (file-exists-p fc) |
| 89 | (let ((matchstring | 89 | (let ((matchstring |
| 90 | (if (slot-boundp dirmatch 'configdatastash) | 90 | (if (slot-boundp dirmatch 'configdatastash) |
| 91 | (oref dirmatch configdatastash) | 91 | (oref dirmatch configdatastash) |
| 92 | nil))) | 92 | nil))) |
| @@ -123,7 +123,7 @@ into memory.") | |||
| 123 | (not (= (match-end 0) (length file)))) | 123 | (not (= (match-end 0) (length file)))) |
| 124 | ) | 124 | ) |
| 125 | ))) | 125 | ))) |
| 126 | 126 | ||
| 127 | ;; Add new matches here | 127 | ;; Add new matches here |
| 128 | ;; ((stringp somenewslot ...) | 128 | ;; ((stringp somenewslot ...) |
| 129 | ;; ) | 129 | ;; ) |
| @@ -155,9 +155,9 @@ into memory.") | |||
| 155 | Specifying this matcher object will allow EDE to perform a complex | 155 | Specifying this matcher object will allow EDE to perform a complex |
| 156 | check without loading the project. | 156 | check without loading the project. |
| 157 | 157 | ||
| 158 | NOTE: If you use dirmatch, you may need to set :root-only to `nil'. | 158 | NOTE: If you use dirmatch, you may need to set :root-only to nil. |
| 159 | While it may be a root based project, all subdirs will happen to return | 159 | While it may be a root based project, all subdirs will happen to return |
| 160 | true for the dirmatch, so for scanning purposes, set it to `nil'.") | 160 | true for the dirmatch, so for scanning purposes, set it to nil.") |
| 161 | (proj-root :initarg :proj-root | 161 | (proj-root :initarg :proj-root |
| 162 | :type function | 162 | :type function |
| 163 | :documentation "A function symbol to call for the project root. | 163 | :documentation "A function symbol to call for the project root. |
| @@ -280,7 +280,7 @@ added. Possible values are: | |||
| 280 | (if f | 280 | (if f |
| 281 | (and f (file-exists-p f)) | 281 | (and f (file-exists-p f)) |
| 282 | (let ((dirmatch (oref this proj-root-dirmatch))) | 282 | (let ((dirmatch (oref this proj-root-dirmatch))) |
| 283 | (cond | 283 | (cond |
| 284 | ((stringp dirmatch) | 284 | ((stringp dirmatch) |
| 285 | nil) ; <- do something here - maybe obsolete the option? | 285 | nil) ; <- do something here - maybe obsolete the option? |
| 286 | ((ede-project-autoload-dirmatch-p dirmatch) | 286 | ((ede-project-autoload-dirmatch-p dirmatch) |
| @@ -312,7 +312,7 @@ NOTE: Do not call this - it should only be called from `ede-load-project-file'." | |||
| 312 | 312 | ||
| 313 | 313 | ||
| 314 | 314 | ||
| 315 | ;;; -------- Old Methods | 315 | ;;; -------- Old Methods |
| 316 | ;; See if we can do without them. | 316 | ;; See if we can do without them. |
| 317 | 317 | ||
| 318 | ;; @FIXME - delete from loaddefs to remove this. | 318 | ;; @FIXME - delete from loaddefs to remove this. |
diff --git a/lisp/cedet/ede/files.el b/lisp/cedet/ede/files.el index 1922337feb0..4ba823adeee 100644 --- a/lisp/cedet/ede/files.el +++ b/lisp/cedet/ede/files.el | |||
| @@ -41,7 +41,7 @@ | |||
| 41 | (declare-function ede-locate-flush-hash "ede/locate") | 41 | (declare-function ede-locate-flush-hash "ede/locate") |
| 42 | 42 | ||
| 43 | (defvar ede--disable-inode nil | 43 | (defvar ede--disable-inode nil |
| 44 | "Set to 't' to simulate systems w/out inode support.") | 44 | "Set to t to simulate systems w/out inode support.") |
| 45 | 45 | ||
| 46 | ;;; Code: | 46 | ;;; Code: |
| 47 | ;;;###autoload | 47 | ;;;###autoload |
diff --git a/lisp/cedet/semantic/mru-bookmark.el b/lisp/cedet/semantic/mru-bookmark.el index b75408f6a9d..b2a2c8c7619 100644 --- a/lisp/cedet/semantic/mru-bookmark.el +++ b/lisp/cedet/semantic/mru-bookmark.el | |||
| @@ -207,7 +207,7 @@ The resulting bookmark is then sorted within the ring." | |||
| 207 | ))) | 207 | ))) |
| 208 | 208 | ||
| 209 | (defun semantic-mrub-cache-flush-fcn () | 209 | (defun semantic-mrub-cache-flush-fcn () |
| 210 | "Function called in the `semantic-before-toplevel-cache-flush-hook`. | 210 | "Function called in the `semantic-before-toplevel-cache-flush-hook'. |
| 211 | Cause tags in the ring to become unlinked." | 211 | Cause tags in the ring to become unlinked." |
| 212 | (let* ((ring (oref semantic-mru-bookmark-ring ring)) | 212 | (let* ((ring (oref semantic-mru-bookmark-ring ring)) |
| 213 | (len (ring-length ring)) | 213 | (len (ring-length ring)) |
diff --git a/lisp/cedet/semantic/symref.el b/lisp/cedet/semantic/symref.el index 2c5e3ba1805..ca5dd7dd073 100644 --- a/lisp/cedet/semantic/symref.el +++ b/lisp/cedet/semantic/symref.el | |||
| @@ -351,7 +351,7 @@ until the next command is executed." | |||
| 351 | (setq semantic-symref-recently-opened-buffers nil) | 351 | (setq semantic-symref-recently-opened-buffers nil) |
| 352 | (remove-hook 'post-command-hook 'semantic-symref-cleanup-recent-buffers-fcn) | 352 | (remove-hook 'post-command-hook 'semantic-symref-cleanup-recent-buffers-fcn) |
| 353 | ) | 353 | ) |
| 354 | 354 | ||
| 355 | (cl-defmethod semantic-symref-result-get-tags ((result semantic-symref-result) | 355 | (cl-defmethod semantic-symref-result-get-tags ((result semantic-symref-result) |
| 356 | &optional open-buffers) | 356 | &optional open-buffers) |
| 357 | "Get the list of tags from the symref result RESULT. | 357 | "Get the list of tags from the symref result RESULT. |
| @@ -512,7 +512,7 @@ buffers that were opened." | |||
| 512 | (searchtype :initarg :searchtype | 512 | (searchtype :initarg :searchtype |
| 513 | :type symbol | 513 | :type symbol |
| 514 | :documentation "The type of search to do. | 514 | :documentation "The type of search to do. |
| 515 | Values could be `symbol, `regexp, 'tagname, or 'completion.") | 515 | Values could be 'symbol, 'regexp, 'tagname, or 'completion.") |
| 516 | (searchscope :initarg :searchscope | 516 | (searchscope :initarg :searchscope |
| 517 | :type symbol | 517 | :type symbol |
| 518 | :documentation | 518 | :documentation |
diff --git a/lisp/cedet/semantic/tag.el b/lisp/cedet/semantic/tag.el index 3ad192b8b8f..545ca914d19 100644 --- a/lisp/cedet/semantic/tag.el +++ b/lisp/cedet/semantic/tag.el | |||
| @@ -621,7 +621,7 @@ buffer, the originating buffer file name is kept in the `:filename' | |||
| 621 | property of the copied tag. | 621 | property of the copied tag. |
| 622 | If KEEP-FILE is a string, and the originating buffer is NOT available, | 622 | If KEEP-FILE is a string, and the originating buffer is NOT available, |
| 623 | then KEEP-FILE is stored on the `:filename' property. | 623 | then KEEP-FILE is stored on the `:filename' property. |
| 624 | This runs the tag hook `unlink-copy-hook`." | 624 | This runs the tag hook `unlink-copy-hook'." |
| 625 | ;; Right now, TAG is a list. | 625 | ;; Right now, TAG is a list. |
| 626 | (let ((copy (semantic-tag-clone tag name))) | 626 | (let ((copy (semantic-tag-clone tag name))) |
| 627 | 627 | ||
| @@ -958,7 +958,7 @@ Return nil if TAG is not of class 'alias." | |||
| 958 | "Return a list of components for TAG. | 958 | "Return a list of components for TAG. |
| 959 | A Component is a part of TAG which itself may be a TAG. | 959 | A Component is a part of TAG which itself may be a TAG. |
| 960 | Examples include the elements of a structure in a | 960 | Examples include the elements of a structure in a |
| 961 | tag of class `type, or the list of arguments to a | 961 | tag of class 'type, or the list of arguments to a |
| 962 | tag of class 'function." | 962 | tag of class 'function." |
| 963 | ) | 963 | ) |
| 964 | 964 | ||
diff --git a/lisp/cedet/srecode/cpp.el b/lisp/cedet/srecode/cpp.el index ec92ae30ba6..e77e05c40b9 100644 --- a/lisp/cedet/srecode/cpp.el +++ b/lisp/cedet/srecode/cpp.el | |||
| @@ -84,7 +84,7 @@ HEADER - Shown section if in a header file." | |||
| 84 | ;;;###autoload | 84 | ;;;###autoload |
| 85 | (defun srecode-semantic-handle-:cpp (dict) | 85 | (defun srecode-semantic-handle-:cpp (dict) |
| 86 | "Add macros into the dictionary DICT based on the current c file. | 86 | "Add macros into the dictionary DICT based on the current c file. |
| 87 | Calls `srecode-semantic-handle-:c. | 87 | Calls `srecode-semantic-handle-:c'. |
| 88 | Also adds the following: | 88 | Also adds the following: |
| 89 | - nothing -" | 89 | - nothing -" |
| 90 | (srecode-semantic-handle-:c dict) | 90 | (srecode-semantic-handle-:c dict) |
diff --git a/lisp/cedet/srecode/texi.el b/lisp/cedet/srecode/texi.el index 5c3f21c32a2..be75f3765c1 100644 --- a/lisp/cedet/srecode/texi.el +++ b/lisp/cedet/srecode/texi.el | |||
| @@ -241,11 +241,11 @@ This is to take advantage of TeXinfo's markup symbols." | |||
| 241 | For instances where CLASS is the class being referenced, do not Xref | 241 | For instances where CLASS is the class being referenced, do not Xref |
| 242 | that class. | 242 | that class. |
| 243 | 243 | ||
| 244 | `function' => @dfn{function} | 244 | function => @dfn{function} |
| 245 | `variable' => @code{variable} | 245 | variable => @code{variable} |
| 246 | `class' => @code{class} @xref{class} | 246 | class => @code{class} @xref{class} |
| 247 | `unknown' => @code{unknown} | 247 | unknown => @code{unknown} |
| 248 | \"text\" => ``text'' | 248 | \" text \" => `` text '' |
| 249 | 'quoteme => @code{quoteme} | 249 | 'quoteme => @code{quoteme} |
| 250 | non-nil => non-@code{nil} | 250 | non-nil => non-@code{nil} |
| 251 | t => @code{t} | 251 | t => @code{t} |
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index 9f57d0da24a..1d9a9d6d426 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el | |||
| @@ -1965,7 +1965,7 @@ Each entry is of the form (STATE MAGIC FACE ITEM-DESC [ GROUP-DESC ]), where | |||
| 1965 | 1965 | ||
| 1966 | STATE is one of the following symbols: | 1966 | STATE is one of the following symbols: |
| 1967 | 1967 | ||
| 1968 | `nil' | 1968 | nil |
| 1969 | For internal use, should never occur. | 1969 | For internal use, should never occur. |
| 1970 | `unknown' | 1970 | `unknown' |
| 1971 | For internal use, should never occur. | 1971 | For internal use, should never occur. |
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 4dcb519b039..18a3c887aad 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el | |||
| @@ -2257,7 +2257,7 @@ of marked files. If KILL-ROOT is non-nil, kill DIRNAME as well." | |||
| 2257 | ;; components are string-lessp. | 2257 | ;; components are string-lessp. |
| 2258 | ;; Thus ("/usr/" "/usr/bin") and ("/usr/a/" "/usr/b/") are tree-lessp. | 2258 | ;; Thus ("/usr/" "/usr/bin") and ("/usr/a/" "/usr/b/") are tree-lessp. |
| 2259 | ;; string-lessp could arguably be replaced by file-newer-than-file-p | 2259 | ;; string-lessp could arguably be replaced by file-newer-than-file-p |
| 2260 | ;; if dired-actual-switches contained `t'. | 2260 | ;; if dired-actual-switches contained t. |
| 2261 | (setq dir1 (file-name-as-directory dir1) | 2261 | (setq dir1 (file-name-as-directory dir1) |
| 2262 | dir2 (file-name-as-directory dir2)) | 2262 | dir2 (file-name-as-directory dir2)) |
| 2263 | (let ((components-1 (dired-split "/" dir1)) | 2263 | (let ((components-1 (dired-split "/" dir1)) |
diff --git a/lisp/dired.el b/lisp/dired.el index ca13900f681..e523b941295 100644 --- a/lisp/dired.el +++ b/lisp/dired.el | |||
| @@ -3889,7 +3889,7 @@ Ask means pop up a menu for the user to select one of copy, move or link." | |||
| 3889 | 3889 | ||
| 3890 | ;;; Start of automatically extracted autoloads. | 3890 | ;;; Start of automatically extracted autoloads. |
| 3891 | 3891 | ||
| 3892 | ;;;### (autoloads nil "dired-aux" "dired-aux.el" "8820677763cb69eef827e38b86d35f47") | 3892 | ;;;### (autoloads nil "dired-aux" "dired-aux.el" "45867cb96abef86d29a9850ee2113cf2") |
| 3893 | ;;; Generated autoloads from dired-aux.el | 3893 | ;;; Generated autoloads from dired-aux.el |
| 3894 | 3894 | ||
| 3895 | (autoload 'dired-diff "dired-aux" "\ | 3895 | (autoload 'dired-diff "dired-aux" "\ |
diff --git a/lisp/dirtrack.el b/lisp/dirtrack.el index d1957a259b1..d1c46dd8550 100644 --- a/lisp/dirtrack.el +++ b/lisp/dirtrack.el | |||
| @@ -51,7 +51,7 @@ | |||
| 51 | ;; which matches your prompt up to and including the pathname part. | 51 | ;; which matches your prompt up to and including the pathname part. |
| 52 | ;; The second is a number which tells which regular expression group to | 52 | ;; The second is a number which tells which regular expression group to |
| 53 | ;; match to extract only the pathname. If you use a multi-line prompt, | 53 | ;; match to extract only the pathname. If you use a multi-line prompt, |
| 54 | ;; add 't' as a third element. Note that some of the functions in | 54 | ;; add t as a third element. Note that some of the functions in |
| 55 | ;; 'comint.el' assume a single-line prompt (eg, comint-bol). | 55 | ;; 'comint.el' assume a single-line prompt (eg, comint-bol). |
| 56 | ;; | 56 | ;; |
| 57 | ;; Determining this information may take some experimentation. Using | 57 | ;; Determining this information may take some experimentation. Using |
diff --git a/lisp/emacs-lisp/advice.el b/lisp/emacs-lisp/advice.el index 212ae909866..907f03bde45 100644 --- a/lisp/emacs-lisp/advice.el +++ b/lisp/emacs-lisp/advice.el | |||
| @@ -2149,7 +2149,6 @@ the cache-id will clear the cache." | |||
| 2149 | 2149 | ||
| 2150 | (defun ad-arglist (definition) | 2150 | (defun ad-arglist (definition) |
| 2151 | "Return the argument list of DEFINITION." | 2151 | "Return the argument list of DEFINITION." |
| 2152 | (require 'help-fns) | ||
| 2153 | (help-function-arglist | 2152 | (help-function-arglist |
| 2154 | (if (or (macrop definition) (ad-advice-p definition)) | 2153 | (if (or (macrop definition) (ad-advice-p definition)) |
| 2155 | (cdr definition) | 2154 | (cdr definition) |
| @@ -2474,8 +2473,6 @@ Example: `(ad-map-arglists '(a &rest args) '(w x y z))' will return | |||
| 2474 | (capitalize (symbol-name class)) | 2473 | (capitalize (symbol-name class)) |
| 2475 | (ad-advice-name advice))))))) | 2474 | (ad-advice-name advice))))))) |
| 2476 | 2475 | ||
| 2477 | (require 'help-fns) ;For help-split-fundoc and help-add-fundoc-usage. | ||
| 2478 | |||
| 2479 | (defun ad--make-advised-docstring (function &optional style) | 2476 | (defun ad--make-advised-docstring (function &optional style) |
| 2480 | "Construct a documentation string for the advised FUNCTION. | 2477 | "Construct a documentation string for the advised FUNCTION. |
| 2481 | Concatenate the original documentation with the documentation | 2478 | Concatenate the original documentation with the documentation |
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el index 206d5bb4434..a6fefebf3f5 100644 --- a/lisp/emacs-lisp/autoload.el +++ b/lisp/emacs-lisp/autoload.el | |||
| @@ -32,7 +32,6 @@ | |||
| 32 | 32 | ||
| 33 | (require 'lisp-mode) ;for `doc-string-elt' properties. | 33 | (require 'lisp-mode) ;for `doc-string-elt' properties. |
| 34 | (require 'lisp-mnt) | 34 | (require 'lisp-mnt) |
| 35 | (require 'help-fns) ;for help-add-fundoc-usage. | ||
| 36 | (eval-when-compile (require 'cl-lib)) | 35 | (eval-when-compile (require 'cl-lib)) |
| 37 | 36 | ||
| 38 | (defvar generated-autoload-file nil | 37 | (defvar generated-autoload-file nil |
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el index 06a11063025..30147931adc 100644 --- a/lisp/emacs-lisp/byte-opt.el +++ b/lisp/emacs-lisp/byte-opt.el | |||
| @@ -566,7 +566,7 @@ | |||
| 566 | (cons fn args))))))) | 566 | (cons fn args))))))) |
| 567 | 567 | ||
| 568 | (defun byte-optimize-all-constp (list) | 568 | (defun byte-optimize-all-constp (list) |
| 569 | "Non-nil if all elements of LIST satisfy `macroexp-const-p" | 569 | "Non-nil if all elements of LIST satisfy `macroexp-const-p'." |
| 570 | (let ((constant t)) | 570 | (let ((constant t)) |
| 571 | (while (and list constant) | 571 | (while (and list constant) |
| 572 | (unless (macroexp-const-p (car list)) | 572 | (unless (macroexp-const-p (car list)) |
| @@ -1225,7 +1225,7 @@ | |||
| 1225 | window-left-child window-left-column window-margins window-minibuffer-p | 1225 | window-left-child window-left-column window-margins window-minibuffer-p |
| 1226 | window-next-buffers window-next-sibling window-new-normal | 1226 | window-next-buffers window-next-sibling window-new-normal |
| 1227 | window-new-total window-normal-size window-parameter window-parameters | 1227 | window-new-total window-normal-size window-parameter window-parameters |
| 1228 | window-parent window-pixel-edges window-point window-prev-buffers | 1228 | window-parent window-pixel-edges window-point window-prev-buffers |
| 1229 | window-prev-sibling window-redisplay-end-trigger window-scroll-bars | 1229 | window-prev-sibling window-redisplay-end-trigger window-scroll-bars |
| 1230 | window-start window-text-height window-top-child window-top-line | 1230 | window-start window-text-height window-top-child window-top-line |
| 1231 | window-total-height window-total-width window-use-time window-vscroll | 1231 | window-total-height window-total-width window-use-time window-vscroll |
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 67744c69b14..efd43898b60 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el | |||
| @@ -348,7 +348,7 @@ else the global value will be modified." | |||
| 348 | ;;;###autoload | 348 | ;;;###autoload |
| 349 | (defun byte-compile-enable-warning (warning) | 349 | (defun byte-compile-enable-warning (warning) |
| 350 | "Change `byte-compile-warnings' to enable WARNING. | 350 | "Change `byte-compile-warnings' to enable WARNING. |
| 351 | If `byte-compile-warnings' is `t', do nothing. Otherwise, if the | 351 | If `byte-compile-warnings' is t, do nothing. Otherwise, if the |
| 352 | first element is `not', remove WARNING, else add it. | 352 | first element is `not', remove WARNING, else add it. |
| 353 | Normally you should let-bind `byte-compile-warnings' before calling this, | 353 | Normally you should let-bind `byte-compile-warnings' before calling this, |
| 354 | else the global value will be modified." | 354 | else the global value will be modified." |
diff --git a/lisp/emacs-lisp/check-declare.el b/lisp/emacs-lisp/check-declare.el index 7269b83b619..ecdb6d8983c 100644 --- a/lisp/emacs-lisp/check-declare.el +++ b/lisp/emacs-lisp/check-declare.el | |||
| @@ -98,7 +98,7 @@ don't know how to recognize (e.g. some macros)." | |||
| 98 | (stringp (setq fnfile (nth 2 form))) | 98 | (stringp (setq fnfile (nth 2 form))) |
| 99 | (setq fnfile (check-declare-locate fnfile | 99 | (setq fnfile (check-declare-locate fnfile |
| 100 | (expand-file-name file))) | 100 | (expand-file-name file))) |
| 101 | ;; Use `t' to distinguish unspecified arglist from empty one. | 101 | ;; Use t to distinguish unspecified arglist from empty one. |
| 102 | (or (eq t (setq arglist (if (> len 3) | 102 | (or (eq t (setq arglist (if (> len 3) |
| 103 | (nth 3 form) | 103 | (nth 3 form) |
| 104 | t))) | 104 | t))) |
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el index 777fed082d9..18361c8888f 100644 --- a/lisp/emacs-lisp/checkdoc.el +++ b/lisp/emacs-lisp/checkdoc.el | |||
| @@ -1615,8 +1615,8 @@ function,command,variable,option or symbol." ms1)))))) | |||
| 1615 | (or | 1615 | (or |
| 1616 | ;; * The documentation string for a variable that is a | 1616 | ;; * The documentation string for a variable that is a |
| 1617 | ;; yes-or-no flag should start with words such as Non-nil | 1617 | ;; yes-or-no flag should start with words such as Non-nil |
| 1618 | ;; means..., to make it clear that all non-`nil' values are | 1618 | ;; means..., to make it clear that all non-nil values are |
| 1619 | ;; equivalent and indicate explicitly what `nil' and non-`nil' | 1619 | ;; equivalent and indicate explicitly what nil and non-nil |
| 1620 | ;; mean. | 1620 | ;; mean. |
| 1621 | ;; * If a user option variable records a true-or-false | 1621 | ;; * If a user option variable records a true-or-false |
| 1622 | ;; condition, give it a name that ends in `-flag'. | 1622 | ;; condition, give it a name that ends in `-flag'. |
| @@ -2405,7 +2405,7 @@ Argument END is the maximum bounds to search in." | |||
| 2405 | According to the documentation for the function `error', the error list | 2405 | According to the documentation for the function `error', the error list |
| 2406 | should not end with a period, and should start with a capital letter. | 2406 | should not end with a period, and should start with a capital letter. |
| 2407 | The function `y-or-n-p' has similar constraints. | 2407 | The function `y-or-n-p' has similar constraints. |
| 2408 | Argument TYPE specifies the type of question, such as `error or `y-or-n-p." | 2408 | Argument TYPE specifies the type of question, such as `error' or `y-or-n-p'." |
| 2409 | ;; If type is nil, then attempt to derive it. | 2409 | ;; If type is nil, then attempt to derive it. |
| 2410 | (if (not type) | 2410 | (if (not type) |
| 2411 | (save-excursion | 2411 | (save-excursion |
| @@ -2613,9 +2613,12 @@ function called to create the messages." | |||
| 2613 | (count-lines (point-min) (or point (point-min)))) | 2613 | (count-lines (point-min) (or point (point-min)))) |
| 2614 | ": " msg))) | 2614 | ": " msg))) |
| 2615 | (with-current-buffer (get-buffer checkdoc-diagnostic-buffer) | 2615 | (with-current-buffer (get-buffer checkdoc-diagnostic-buffer) |
| 2616 | (goto-char (point-max)) | 2616 | (let ((inhibit-read-only t) |
| 2617 | (let ((inhibit-read-only t)) | 2617 | (pt (point-max))) |
| 2618 | (apply #'insert text))))) | 2618 | (goto-char pt) |
| 2619 | (apply #'insert text) | ||
| 2620 | (when noninteractive | ||
| 2621 | (warn (buffer-substring pt (point-max)))))))) | ||
| 2619 | 2622 | ||
| 2620 | (defun checkdoc-show-diagnostics () | 2623 | (defun checkdoc-show-diagnostics () |
| 2621 | "Display the checkdoc diagnostic buffer in a temporary window." | 2624 | "Display the checkdoc diagnostic buffer in a temporary window." |
diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el index a2716ef87ee..b3c127f48f7 100644 --- a/lisp/emacs-lisp/cl-generic.el +++ b/lisp/emacs-lisp/cl-generic.el | |||
| @@ -237,14 +237,19 @@ BODY, if present, is used as the body of a default method. | |||
| 237 | (`(,spec-args . ,_) (cl--generic-split-args args)) | 237 | (`(,spec-args . ,_) (cl--generic-split-args args)) |
| 238 | (mandatory (mapcar #'car spec-args)) | 238 | (mandatory (mapcar #'car spec-args)) |
| 239 | (apo (assq :argument-precedence-order options))) | 239 | (apo (assq :argument-precedence-order options))) |
| 240 | (setf (cl--generic-dispatches generic) nil) | 240 | (unless (fboundp name) |
| 241 | ;; If the generic function was fmakunbound, throw away previous methods. | ||
| 242 | (setf (cl--generic-dispatches generic) nil) | ||
| 243 | (setf (cl--generic-method-table generic) nil)) | ||
| 241 | (when apo | 244 | (when apo |
| 242 | (dolist (arg (cdr apo)) | 245 | (dolist (arg (cdr apo)) |
| 243 | (let ((pos (memq arg mandatory))) | 246 | (let ((pos (memq arg mandatory))) |
| 244 | (unless pos (error "%S is not a mandatory argument" arg)) | 247 | (unless pos (error "%S is not a mandatory argument" arg)) |
| 245 | (push (list (- (length mandatory) (length pos))) | 248 | (let* ((argno (- (length mandatory) (length pos))) |
| 246 | (cl--generic-dispatches generic))))) | 249 | (dispatches (cl--generic-dispatches generic)) |
| 247 | (setf (cl--generic-method-table generic) nil) | 250 | (dispatch (or (assq argno dispatches) (list argno)))) |
| 251 | (setf (cl--generic-dispatches generic) | ||
| 252 | (cons dispatch (delq dispatch dispatches))))))) | ||
| 248 | (setf (cl--generic-options generic) options) | 253 | (setf (cl--generic-options generic) options) |
| 249 | (cl--generic-make-function generic))) | 254 | (cl--generic-make-function generic))) |
| 250 | 255 | ||
| @@ -438,16 +443,14 @@ which case this method will be invoked when the argument is `eql' to VAL. | |||
| 438 | ;; the generic function. | 443 | ;; the generic function. |
| 439 | current-load-list) | 444 | current-load-list) |
| 440 | ;; For aliases, cl--generic-name gives us the actual name. | 445 | ;; For aliases, cl--generic-name gives us the actual name. |
| 441 | (funcall | 446 | (let ((purify-flag |
| 442 | (if purify-flag | 447 | ;; BEWARE! Don't purify this function definition, since that leads |
| 443 | ;; BEWARE! Don't purify this function definition, since that leads | 448 | ;; to memory corruption if the hash-tables it holds are modified |
| 444 | ;; to memory corruption if the hash-tables it holds are modified | 449 | ;; (the GC doesn't trace those pointers). |
| 445 | ;; (the GC doesn't trace those pointers). | 450 | nil)) |
| 446 | #'fset | 451 | ;; But do use `defalias', so that it interacts properly with nadvice, |
| 447 | ;; But do use `defalias' in the normal case, so that it interacts | 452 | ;; e.g. for tracing/debug-on-entry. |
| 448 | ;; properly with nadvice, e.g. for tracing/debug-on-entry. | 453 | (defalias (cl--generic-name generic) gfun))))) |
| 449 | #'defalias) | ||
| 450 | (cl--generic-name generic) gfun)))) | ||
| 451 | 454 | ||
| 452 | (defmacro cl--generic-with-memoization (place &rest code) | 455 | (defmacro cl--generic-with-memoization (place &rest code) |
| 453 | (declare (indent 1) (debug t)) | 456 | (declare (indent 1) (debug t)) |
| @@ -525,7 +528,7 @@ which case this method will be invoked when the argument is `eql' to VAL. | |||
| 525 | (progn | 528 | (progn |
| 526 | (while (and dispatches | 529 | (while (and dispatches |
| 527 | (let ((x (nth 1 (car dispatches)))) | 530 | (let ((x (nth 1 (car dispatches)))) |
| 528 | ;; No need to dispatch for `t' specializers. | 531 | ;; No need to dispatch for t specializers. |
| 529 | (or (null x) (equal x cl--generic-t-generalizer)))) | 532 | (or (null x) (equal x cl--generic-t-generalizer)))) |
| 530 | (setq dispatches (cdr dispatches))) | 533 | (setq dispatches (cdr dispatches))) |
| 531 | (pop dispatches)))) | 534 | (pop dispatches)))) |
| @@ -701,10 +704,15 @@ methods.") | |||
| 701 | #'cl--generic-standard-method-combination) | 704 | #'cl--generic-standard-method-combination) |
| 702 | 705 | ||
| 703 | (cl-defmethod cl-generic-generalizers (specializer) | 706 | (cl-defmethod cl-generic-generalizers (specializer) |
| 704 | "Support for the catch-all `t' specializer." | 707 | "Support for the catch-all t specializer." |
| 705 | (if (eq specializer t) (list cl--generic-t-generalizer) | 708 | (if (eq specializer t) (list cl--generic-t-generalizer) |
| 706 | (error "Unknown specializer %S" specializer))) | 709 | (error "Unknown specializer %S" specializer))) |
| 707 | 710 | ||
| 711 | (eval-when-compile | ||
| 712 | ;; This macro is brittle and only really important in order to be | ||
| 713 | ;; able to preload cl-generic without also preloading the byte-compiler, | ||
| 714 | ;; So we use `eval-when-compile' so as not keep it available longer than | ||
| 715 | ;; strictly needed. | ||
| 708 | (defmacro cl--generic-prefill-dispatchers (arg-or-context specializer) | 716 | (defmacro cl--generic-prefill-dispatchers (arg-or-context specializer) |
| 709 | (unless (integerp arg-or-context) | 717 | (unless (integerp arg-or-context) |
| 710 | (setq arg-or-context `(&context . ,arg-or-context))) | 718 | (setq arg-or-context `(&context . ,arg-or-context))) |
| @@ -722,7 +730,7 @@ methods.") | |||
| 722 | ,@(cl-generic-generalizers ',specializer) | 730 | ,@(cl-generic-generalizers ',specializer) |
| 723 | ,cl--generic-t-generalizer))) | 731 | ,cl--generic-t-generalizer))) |
| 724 | ;; (message "Prefilling for %S with \n%S" dispatch ',fun) | 732 | ;; (message "Prefilling for %S with \n%S" dispatch ',fun) |
| 725 | (puthash dispatch ',fun cl--generic-dispatchers)))) | 733 | (puthash dispatch ',fun cl--generic-dispatchers))))) |
| 726 | 734 | ||
| 727 | (cl-defmethod cl-generic-combine-methods (generic methods) | 735 | (cl-defmethod cl-generic-combine-methods (generic methods) |
| 728 | "Standard support for :after, :before, :around, and `:extra NAME' qualifiers." | 736 | "Standard support for :after, :before, :around, and `:extra NAME' qualifiers." |
| @@ -796,8 +804,6 @@ Can only be used from within the lexical body of a primary or around method." | |||
| 796 | specializers qualifiers | 804 | specializers qualifiers |
| 797 | (cl--generic-method-table (cl--generic generic))))) | 805 | (cl--generic-method-table (cl--generic generic))))) |
| 798 | 806 | ||
| 799 | (defalias 'cl-method-qualifiers 'cl--generic-method-qualifiers) | ||
| 800 | |||
| 801 | ;;; Add support for describe-function | 807 | ;;; Add support for describe-function |
| 802 | 808 | ||
| 803 | (defun cl--generic-search-method (met-name) | 809 | (defun cl--generic-search-method (met-name) |
| @@ -850,6 +856,9 @@ Can only be used from within the lexical body of a primary or around method." | |||
| 850 | 856 | ||
| 851 | (add-hook 'help-fns-describe-function-functions #'cl--generic-describe) | 857 | (add-hook 'help-fns-describe-function-functions #'cl--generic-describe) |
| 852 | (defun cl--generic-describe (function) | 858 | (defun cl--generic-describe (function) |
| 859 | ;; Supposedly this is called from help-fns, so help-fns should be loaded at | ||
| 860 | ;; this point. | ||
| 861 | (declare-function help-fns-short-filename "help-fns" (filename)) | ||
| 853 | (let ((generic (if (symbolp function) (cl--generic function)))) | 862 | (let ((generic (if (symbolp function) (cl--generic function)))) |
| 854 | (when generic | 863 | (when generic |
| 855 | (require 'help-mode) ;Needed for `help-function-def' button! | 864 | (require 'help-mode) ;Needed for `help-function-def' button! |
diff --git a/lisp/emacs-lisp/cl-indent.el b/lisp/emacs-lisp/cl-indent.el index 5e75406cf22..57da7159d5c 100644 --- a/lisp/emacs-lisp/cl-indent.el +++ b/lisp/emacs-lisp/cl-indent.el | |||
| @@ -140,13 +140,13 @@ If non-nil, alignment is done with the first parameter | |||
| 140 | 140 | ||
| 141 | (defcustom lisp-indent-backquote-substitution-mode t | 141 | (defcustom lisp-indent-backquote-substitution-mode t |
| 142 | "How to indent substitutions in backquotes. | 142 | "How to indent substitutions in backquotes. |
| 143 | If `t', the default, indent substituted forms normally. | 143 | If t, the default, indent substituted forms normally. |
| 144 | If `nil', do not apply special indentation rule to substituted | 144 | If nil, do not apply special indentation rule to substituted |
| 145 | forms. If `corrected', subtract the `,' or `,@' from the form | 145 | forms. If `corrected', subtract the `,' or `,@' from the form |
| 146 | column, indenting as if this character sequence were not present. | 146 | column, indenting as if this character sequence were not present. |
| 147 | In any case, do not backtrack beyond a backquote substitution. | 147 | In any case, do not backtrack beyond a backquote substitution. |
| 148 | 148 | ||
| 149 | Until Emacs 25.1, the `nil' behavior was hard-wired." | 149 | Until Emacs 25.1, the nil behavior was hard-wired." |
| 150 | :version "25.1" | 150 | :version "25.1" |
| 151 | :type '(choice (const corrected) (const nil) (const t)) | 151 | :type '(choice (const corrected) (const nil) (const t)) |
| 152 | :group 'lisp-indent) | 152 | :group 'lisp-indent) |
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 5bab84ed312..27d3da3dca4 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el | |||
| @@ -294,7 +294,6 @@ FORM is of the form (ARGS . BODY)." | |||
| 294 | ;; apparently harmless computation, so it should not | 294 | ;; apparently harmless computation, so it should not |
| 295 | ;; touch the match-data. | 295 | ;; touch the match-data. |
| 296 | (save-match-data | 296 | (save-match-data |
| 297 | (require 'help-fns) | ||
| 298 | (cons (help-add-fundoc-usage | 297 | (cons (help-add-fundoc-usage |
| 299 | (if (stringp (car header)) (pop header)) | 298 | (if (stringp (car header)) (pop header)) |
| 300 | ;; Be careful with make-symbol and (back)quote, | 299 | ;; Be careful with make-symbol and (back)quote, |
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index 9d32ba241de..77d6332feee 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el | |||
| @@ -54,7 +54,7 @@ the middle is discarded, and just the beginning and end are displayed." | |||
| 54 | The value affects the behavior of operations on any window | 54 | The value affects the behavior of operations on any window |
| 55 | previously showing the debugger buffer. | 55 | previously showing the debugger buffer. |
| 56 | 56 | ||
| 57 | `nil' means that if its window is not deleted when exiting the | 57 | nil means that if its window is not deleted when exiting the |
| 58 | debugger, invoking `switch-to-prev-buffer' will usually show | 58 | debugger, invoking `switch-to-prev-buffer' will usually show |
| 59 | the debugger buffer again. | 59 | the debugger buffer again. |
| 60 | 60 | ||
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index 98fb7e9888c..b5da3cc2174 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el | |||
| @@ -600,7 +600,7 @@ list of a symbol.") | |||
| 600 | (defun edebug-get-form-data-entry (pnt &optional end-point) | 600 | (defun edebug-get-form-data-entry (pnt &optional end-point) |
| 601 | ;; Find the edebug form data entry which is closest to PNT. | 601 | ;; Find the edebug form data entry which is closest to PNT. |
| 602 | ;; If END-POINT is supplied, match must be exact. | 602 | ;; If END-POINT is supplied, match must be exact. |
| 603 | ;; Return `nil' if none found. | 603 | ;; Return nil if none found. |
| 604 | (let ((rest edebug-form-data) | 604 | (let ((rest edebug-form-data) |
| 605 | closest-entry | 605 | closest-entry |
| 606 | (closest-dist 999999)) ;; Need maxint here. | 606 | (closest-dist 999999)) ;; Need maxint here. |
diff --git a/lisp/emacs-lisp/elint.el b/lisp/emacs-lisp/elint.el index 317e5a6fd3f..fc66c82c81d 100644 --- a/lisp/emacs-lisp/elint.el +++ b/lisp/emacs-lisp/elint.el | |||
| @@ -46,8 +46,6 @@ | |||
| 46 | 46 | ||
| 47 | ;;; Code: | 47 | ;;; Code: |
| 48 | 48 | ||
| 49 | (require 'help-fns) | ||
| 50 | |||
| 51 | (defgroup elint nil | 49 | (defgroup elint nil |
| 52 | "Linting for Emacs Lisp." | 50 | "Linting for Emacs Lisp." |
| 53 | :prefix "elint-" | 51 | :prefix "elint-" |
diff --git a/lisp/emacs-lisp/generator.el b/lisp/emacs-lisp/generator.el index 8251682590e..08e1b7c27a9 100644 --- a/lisp/emacs-lisp/generator.el +++ b/lisp/emacs-lisp/generator.el | |||
| @@ -90,7 +90,7 @@ | |||
| 90 | ;; Change this function to use `cl-gensym' if you want the generated | 90 | ;; Change this function to use `cl-gensym' if you want the generated |
| 91 | ;; code to be easier to read and debug. | 91 | ;; code to be easier to read and debug. |
| 92 | ;; (cl-gensym (apply #'format fmt args)) | 92 | ;; (cl-gensym (apply #'format fmt args)) |
| 93 | `(make-symbol ,fmt)) | 93 | `(progn (ignore ,@args) (make-symbol ,fmt))) |
| 94 | 94 | ||
| 95 | (defvar cps--dynamic-wrappers '(identity) | 95 | (defvar cps--dynamic-wrappers '(identity) |
| 96 | "List of transformer functions to apply to atomic forms we | 96 | "List of transformer functions to apply to atomic forms we |
| @@ -308,14 +308,14 @@ don't yield.") | |||
| 308 | collect (if (symbolp binding) | 308 | collect (if (symbolp binding) |
| 309 | (list binding nil) | 309 | (list binding nil) |
| 310 | binding))) | 310 | binding))) |
| 311 | (temps (cl-loop for (var value-form) in bindings | 311 | (temps (cl-loop for (var _value-form) in bindings |
| 312 | collect (cps--add-binding var)))) | 312 | collect (cps--add-binding var)))) |
| 313 | (cps--transform-1 | 313 | (cps--transform-1 |
| 314 | `(let* ,(append | 314 | `(let* ,(append |
| 315 | (cl-loop for (var value-form) in bindings | 315 | (cl-loop for (_var value-form) in bindings |
| 316 | for temp in temps | 316 | for temp in temps |
| 317 | collect (list temp value-form)) | 317 | collect (list temp value-form)) |
| 318 | (cl-loop for (var binding) in bindings | 318 | (cl-loop for (var _binding) in bindings |
| 319 | for temp in temps | 319 | for temp in temps |
| 320 | collect (list var temp))) | 320 | collect (list var temp))) |
| 321 | ,@body) | 321 | ,@body) |
| @@ -704,7 +704,7 @@ of values. Callers can retrieve each value using `iter-next'." | |||
| 704 | 704 | ||
| 705 | (defun iter-next (iterator &optional yield-result) | 705 | (defun iter-next (iterator &optional yield-result) |
| 706 | "Extract a value from an iterator. | 706 | "Extract a value from an iterator. |
| 707 | YIELD-RESULT becomes the return value of `iter-yield` in the | 707 | YIELD-RESULT becomes the return value of `iter-yield' in the |
| 708 | context of the generator. | 708 | context of the generator. |
| 709 | 709 | ||
| 710 | This routine raises the `iter-end-of-sequence' condition if the | 710 | This routine raises the `iter-end-of-sequence' condition if the |
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index 108d5ccb0e3..6facf576055 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el | |||
| @@ -229,248 +229,246 @@ | |||
| 229 | (match-beginning 0))))) | 229 | (match-beginning 0))))) |
| 230 | (throw 'found t)))))) | 230 | (throw 'found t)))))) |
| 231 | 231 | ||
| 232 | (pcase-let | 232 | (let-when-compile |
| 233 | ((`(,vdefs ,tdefs | 233 | ((lisp-fdefs '("defmacro" "defsubst" "defun")) |
| 234 | ,el-defs-re ,cl-defs-re | 234 | (lisp-vdefs '("defvar")) |
| 235 | ,el-kws-re ,cl-kws-re | 235 | (lisp-kw '("cond" "if" "while" "let" "let*" "progn" "prog1" |
| 236 | ,el-errs-re ,cl-errs-re) | 236 | "prog2" "lambda" "unwind-protect" "condition-case" |
| 237 | (eval-when-compile | 237 | "when" "unless" "with-output-to-string" |
| 238 | (let ((lisp-fdefs '("defmacro" "defsubst" "defun")) | 238 | "ignore-errors" "dotimes" "dolist" "declare")) |
| 239 | (lisp-vdefs '("defvar")) | 239 | (lisp-errs '("warn" "error" "signal")) |
| 240 | (lisp-kw '("cond" "if" "while" "let" "let*" "progn" "prog1" | 240 | ;; Elisp constructs. Now they are update dynamically |
| 241 | "prog2" "lambda" "unwind-protect" "condition-case" | 241 | ;; from obarray but they are also used for setting up |
| 242 | "when" "unless" "with-output-to-string" | 242 | ;; the keywords for Common Lisp. |
| 243 | "ignore-errors" "dotimes" "dolist" "declare")) | 243 | (el-fdefs '("define-advice" "defadvice" "defalias" |
| 244 | (lisp-errs '("warn" "error" "signal")) | 244 | "define-derived-mode" "define-minor-mode" |
| 245 | ;; Elisp constructs. Now they are update dynamically | 245 | "define-generic-mode" "define-global-minor-mode" |
| 246 | ;; from obarray but they are also used for setting up | 246 | "define-globalized-minor-mode" "define-skeleton" |
| 247 | ;; the keywords for Common Lisp. | 247 | "define-widget")) |
| 248 | (el-fdefs '("define-advice" "defadvice" "defalias" | 248 | (el-vdefs '("defconst" "defcustom" "defvaralias" "defvar-local" |
| 249 | "define-derived-mode" "define-minor-mode" | 249 | "defface")) |
| 250 | "define-generic-mode" "define-global-minor-mode" | 250 | (el-tdefs '("defgroup" "deftheme")) |
| 251 | "define-globalized-minor-mode" "define-skeleton" | 251 | (el-kw '("while-no-input" "letrec" "pcase" "pcase-exhaustive" |
| 252 | "define-widget")) | 252 | "pcase-lambda" "pcase-let" "pcase-let*" "save-restriction" |
| 253 | (el-vdefs '("defconst" "defcustom" "defvaralias" "defvar-local" | 253 | "save-excursion" "save-selected-window" |
| 254 | "defface")) | 254 | ;; "eval-after-load" "eval-next-after-load" |
| 255 | (el-tdefs '("defgroup" "deftheme")) | 255 | "save-window-excursion" "save-current-buffer" |
| 256 | (el-kw '("while-no-input" "letrec" "pcase" "pcase-exhaustive" | 256 | "save-match-data" "combine-after-change-calls" |
| 257 | "pcase-lambda" "pcase-let" "pcase-let*" "save-restriction" | 257 | "condition-case-unless-debug" "track-mouse" |
| 258 | "save-excursion" "save-selected-window" | 258 | "eval-and-compile" "eval-when-compile" "with-case-table" |
| 259 | ;; "eval-after-load" "eval-next-after-load" | 259 | "with-category-table" "with-coding-priority" |
| 260 | "save-window-excursion" "save-current-buffer" | 260 | "with-current-buffer" "with-demoted-errors" |
| 261 | "save-match-data" "combine-after-change-calls" | 261 | "with-electric-help" "with-eval-after-load" |
| 262 | "condition-case-unless-debug" "track-mouse" | 262 | "with-file-modes" |
| 263 | "eval-and-compile" "eval-when-compile" "with-case-table" | 263 | "with-local-quit" "with-no-warnings" |
| 264 | "with-category-table" "with-coding-priority" | 264 | "with-output-to-temp-buffer" "with-selected-window" |
| 265 | "with-current-buffer" "with-demoted-errors" | 265 | "with-selected-frame" "with-silent-modifications" |
| 266 | "with-electric-help" "with-eval-after-load" | 266 | "with-syntax-table" "with-temp-buffer" "with-temp-file" |
| 267 | "with-file-modes" | 267 | "with-temp-message" "with-timeout" |
| 268 | "with-local-quit" "with-no-warnings" | 268 | "with-timeout-handler")) |
| 269 | "with-output-to-temp-buffer" "with-selected-window" | 269 | (el-errs '("user-error")) |
| 270 | "with-selected-frame" "with-silent-modifications" | 270 | ;; Common-Lisp constructs supported by EIEIO. FIXME: namespace. |
| 271 | "with-syntax-table" "with-temp-buffer" "with-temp-file" | 271 | (eieio-fdefs '("defgeneric" "defmethod")) |
| 272 | "with-temp-message" "with-timeout" | 272 | (eieio-tdefs '("defclass")) |
| 273 | "with-timeout-handler")) | 273 | (eieio-kw '("with-slots")) |
| 274 | (el-errs '("user-error")) | 274 | ;; Common-Lisp constructs supported by cl-lib. |
| 275 | ;; Common-Lisp constructs supported by EIEIO. FIXME: namespace. | 275 | (cl-lib-fdefs '("defmacro" "defsubst" "defun" "defmethod")) |
| 276 | (eieio-fdefs '("defgeneric" "defmethod")) | 276 | (cl-lib-tdefs '("defstruct" "deftype")) |
| 277 | (eieio-tdefs '("defclass")) | 277 | (cl-lib-kw '("progv" "eval-when" "case" "ecase" "typecase" |
| 278 | (eieio-kw '("with-slots")) | 278 | "etypecase" "ccase" "ctypecase" "loop" "do" "do*" |
| 279 | ;; Common-Lisp constructs supported by cl-lib. | 279 | "the" "locally" "proclaim" "declaim" "letf" "go" |
| 280 | (cl-lib-fdefs '("defmacro" "defsubst" "defun" "defmethod")) | 280 | ;; "lexical-let" "lexical-let*" |
| 281 | (cl-lib-tdefs '("defstruct" "deftype")) | 281 | "symbol-macrolet" "flet" "flet*" "destructuring-bind" |
| 282 | (cl-lib-kw '("progv" "eval-when" "case" "ecase" "typecase" | 282 | "labels" "macrolet" "tagbody" "multiple-value-bind" |
| 283 | "etypecase" "ccase" "ctypecase" "loop" "do" "do*" | 283 | "block" "return" "return-from")) |
| 284 | "the" "locally" "proclaim" "declaim" "letf" "go" | 284 | (cl-lib-errs '("assert" "check-type")) |
| 285 | ;; "lexical-let" "lexical-let*" | 285 | ;; Common-Lisp constructs not supported by cl-lib. |
| 286 | "symbol-macrolet" "flet" "flet*" "destructuring-bind" | 286 | (cl-fdefs '("defsetf" "define-method-combination" |
| 287 | "labels" "macrolet" "tagbody" "multiple-value-bind" | 287 | "define-condition" "define-setf-expander" |
| 288 | "block" "return" "return-from")) | 288 | ;; "define-function"?? |
| 289 | (cl-lib-errs '("assert" "check-type")) | 289 | "define-compiler-macro" "define-modify-macro")) |
| 290 | ;; Common-Lisp constructs not supported by cl-lib. | 290 | (cl-vdefs '("define-symbol-macro" "defconstant" "defparameter")) |
| 291 | (cl-fdefs '("defsetf" "define-method-combination" | 291 | (cl-tdefs '("defpackage" "defstruct" "deftype")) |
| 292 | "define-condition" "define-setf-expander" | 292 | (cl-kw '("prog" "prog*" "handler-case" "handler-bind" |
| 293 | ;; "define-function"?? | 293 | "in-package" "restart-case" ;; "inline" |
| 294 | "define-compiler-macro" "define-modify-macro")) | 294 | "restart-bind" "break" "multiple-value-prog1" |
| 295 | (cl-vdefs '("define-symbol-macro" "defconstant" "defparameter")) | 295 | "compiler-let" "with-accessors" "with-compilation-unit" |
| 296 | (cl-tdefs '("defpackage" "defstruct" "deftype")) | 296 | "with-condition-restarts" "with-hash-table-iterator" |
| 297 | (cl-kw '("prog" "prog*" "handler-case" "handler-bind" | 297 | "with-input-from-string" "with-open-file" |
| 298 | "in-package" "restart-case" ;; "inline" | 298 | "with-open-stream" "with-package-iterator" |
| 299 | "restart-bind" "break" "multiple-value-prog1" | 299 | "with-simple-restart" "with-standard-io-syntax")) |
| 300 | "compiler-let" "with-accessors" "with-compilation-unit" | 300 | (cl-errs '("abort" "cerror"))) |
| 301 | "with-condition-restarts" "with-hash-table-iterator" | 301 | (let ((vdefs (eval-when-compile |
| 302 | "with-input-from-string" "with-open-file" | 302 | (append lisp-vdefs el-vdefs cl-vdefs))) |
| 303 | "with-open-stream" "with-package-iterator" | 303 | (tdefs (eval-when-compile |
| 304 | "with-simple-restart" "with-standard-io-syntax")) | 304 | (append el-tdefs eieio-tdefs cl-tdefs cl-lib-tdefs |
| 305 | (cl-errs '("abort" "cerror"))) | 305 | (mapcar (lambda (s) (concat "cl-" s)) cl-lib-tdefs)))) |
| 306 | 306 | ;; Elisp and Common Lisp definers. | |
| 307 | (list (append lisp-vdefs el-vdefs cl-vdefs) | 307 | (el-defs-re (eval-when-compile |
| 308 | (append el-tdefs eieio-tdefs cl-tdefs cl-lib-tdefs | 308 | (regexp-opt (append lisp-fdefs lisp-vdefs |
| 309 | (mapcar (lambda (s) (concat "cl-" s)) cl-lib-tdefs)) | 309 | el-fdefs el-vdefs el-tdefs |
| 310 | 310 | (mapcar (lambda (s) (concat "cl-" s)) | |
| 311 | ;; Elisp and Common Lisp definers. | 311 | (append cl-lib-fdefs cl-lib-tdefs)) |
| 312 | (regexp-opt (append lisp-fdefs lisp-vdefs | 312 | eieio-fdefs eieio-tdefs) |
| 313 | el-fdefs el-vdefs el-tdefs | 313 | t))) |
| 314 | (mapcar (lambda (s) (concat "cl-" s)) | 314 | (cl-defs-re (eval-when-compile |
| 315 | (append cl-lib-fdefs cl-lib-tdefs)) | 315 | (regexp-opt (append lisp-fdefs lisp-vdefs |
| 316 | eieio-fdefs eieio-tdefs) | 316 | cl-lib-fdefs cl-lib-tdefs |
| 317 | t) | 317 | eieio-fdefs eieio-tdefs |
| 318 | (regexp-opt (append lisp-fdefs lisp-vdefs | 318 | cl-fdefs cl-vdefs cl-tdefs) |
| 319 | cl-lib-fdefs cl-lib-tdefs | 319 | t))) |
| 320 | eieio-fdefs eieio-tdefs | 320 | ;; Elisp and Common Lisp keywords. |
| 321 | cl-fdefs cl-vdefs cl-tdefs) | 321 | ;; (el-kws-re (eval-when-compile |
| 322 | t) | 322 | ;; (regexp-opt (append |
| 323 | 323 | ;; lisp-kw el-kw eieio-kw | |
| 324 | ;; Elisp and Common Lisp keywords. | 324 | ;; (cons "go" (mapcar (lambda (s) (concat "cl-" s)) |
| 325 | (regexp-opt (append | 325 | ;; (remove "go" cl-lib-kw)))) |
| 326 | lisp-kw el-kw eieio-kw | 326 | ;; t))) |
| 327 | (cons "go" (mapcar (lambda (s) (concat "cl-" s)) | 327 | (cl-kws-re (eval-when-compile |
| 328 | (remove "go" cl-lib-kw)))) | 328 | (regexp-opt (append lisp-kw cl-kw eieio-kw cl-lib-kw) |
| 329 | t) | 329 | t))) |
| 330 | (regexp-opt (append lisp-kw cl-kw eieio-kw cl-lib-kw) | 330 | ;; Elisp and Common Lisp "errors". |
| 331 | t) | 331 | (el-errs-re (eval-when-compile |
| 332 | 332 | (regexp-opt (append (mapcar (lambda (s) (concat "cl-" s)) | |
| 333 | ;; Elisp and Common Lisp "errors". | 333 | cl-lib-errs) |
| 334 | (regexp-opt (append (mapcar (lambda (s) (concat "cl-" s)) | 334 | lisp-errs el-errs) |
| 335 | cl-lib-errs) | 335 | t))) |
| 336 | lisp-errs el-errs) | 336 | (cl-errs-re (eval-when-compile |
| 337 | t) | 337 | (regexp-opt (append lisp-errs cl-lib-errs cl-errs) t)))) |
| 338 | (regexp-opt (append lisp-errs cl-lib-errs cl-errs) t)))))) | 338 | (dolist (v vdefs) |
| 339 | 339 | (put (intern v) 'lisp-define-type 'var)) | |
| 340 | (dolist (v vdefs) | 340 | (dolist (v tdefs) |
| 341 | (put (intern v) 'lisp-define-type 'var)) | 341 | (put (intern v) 'lisp-define-type 'type)) |
| 342 | (dolist (v tdefs) | 342 | |
| 343 | (put (intern v) 'lisp-define-type 'type)) | 343 | (define-obsolete-variable-alias 'lisp-font-lock-keywords-1 |
| 344 | 344 | 'lisp-el-font-lock-keywords-1 "24.4") | |
| 345 | (define-obsolete-variable-alias 'lisp-font-lock-keywords-1 | 345 | (defconst lisp-el-font-lock-keywords-1 |
| 346 | 'lisp-el-font-lock-keywords-1 "24.4") | 346 | `( ;; Definitions. |
| 347 | (defconst lisp-el-font-lock-keywords-1 | 347 | (,(concat "(" el-defs-re "\\_>" |
| 348 | `( ;; Definitions. | 348 | ;; Any whitespace and defined object. |
| 349 | (,(concat "(" el-defs-re "\\_>" | 349 | "[ \t']*" |
| 350 | ;; Any whitespace and defined object. | 350 | "\\(([ \t']*\\)?" ;; An opening paren. |
| 351 | "[ \t']*" | 351 | "\\(\\(setf\\)[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?") |
| 352 | "\\(([ \t']*\\)?" ;; An opening paren. | 352 | (1 font-lock-keyword-face) |
| 353 | "\\(\\(setf\\)[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?") | 353 | (3 (let ((type (get (intern-soft (match-string 1)) 'lisp-define-type))) |
| 354 | (1 font-lock-keyword-face) | 354 | (cond ((eq type 'var) font-lock-variable-name-face) |
| 355 | (3 (let ((type (get (intern-soft (match-string 1)) 'lisp-define-type))) | 355 | ((eq type 'type) font-lock-type-face) |
| 356 | (cond ((eq type 'var) font-lock-variable-name-face) | 356 | ;; If match-string 2 is non-nil, we encountered a |
| 357 | ((eq type 'type) font-lock-type-face) | 357 | ;; form like (defalias (intern (concat s "-p"))), |
| 358 | ;; If match-string 2 is non-nil, we encountered a | 358 | ;; unless match-string 4 is also there. Then its a |
| 359 | ;; form like (defalias (intern (concat s "-p"))), | 359 | ;; defmethod with (setf foo) as name. |
| 360 | ;; unless match-string 4 is also there. Then its a | 360 | ((or (not (match-string 2)) ;; Normal defun. |
| 361 | ;; defmethod with (setf foo) as name. | 361 | (and (match-string 2) ;; Setf method. |
| 362 | ((or (not (match-string 2)) ;; Normal defun. | 362 | (match-string 4))) font-lock-function-name-face))) |
| 363 | (and (match-string 2) ;; Setf method. | 363 | nil t)) |
| 364 | (match-string 4))) font-lock-function-name-face))) | 364 | ;; Emacs Lisp autoload cookies. Supports the slightly different |
| 365 | nil t)) | 365 | ;; forms used by mh-e, calendar, etc. |
| 366 | ;; Emacs Lisp autoload cookies. Supports the slightly different | 366 | ("^;;;###\\([-a-z]*autoload\\)" 1 font-lock-warning-face prepend)) |
| 367 | ;; forms used by mh-e, calendar, etc. | 367 | "Subdued level highlighting for Emacs Lisp mode.") |
| 368 | ("^;;;###\\([-a-z]*autoload\\)" 1 font-lock-warning-face prepend)) | 368 | |
| 369 | "Subdued level highlighting for Emacs Lisp mode.") | 369 | (defconst lisp-cl-font-lock-keywords-1 |
| 370 | 370 | `( ;; Definitions. | |
| 371 | (defconst lisp-cl-font-lock-keywords-1 | 371 | (,(concat "(" cl-defs-re "\\_>" |
| 372 | `( ;; Definitions. | 372 | ;; Any whitespace and defined object. |
| 373 | (,(concat "(" cl-defs-re "\\_>" | 373 | "[ \t']*" |
| 374 | ;; Any whitespace and defined object. | 374 | "\\(([ \t']*\\)?" ;; An opening paren. |
| 375 | "[ \t']*" | 375 | "\\(\\(setf\\)[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?") |
| 376 | "\\(([ \t']*\\)?" ;; An opening paren. | 376 | (1 font-lock-keyword-face) |
| 377 | "\\(\\(setf\\)[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?") | 377 | (3 (let ((type (get (intern-soft (match-string 1)) 'lisp-define-type))) |
| 378 | (1 font-lock-keyword-face) | 378 | (cond ((eq type 'var) font-lock-variable-name-face) |
| 379 | (3 (let ((type (get (intern-soft (match-string 1)) 'lisp-define-type))) | 379 | ((eq type 'type) font-lock-type-face) |
| 380 | (cond ((eq type 'var) font-lock-variable-name-face) | 380 | ((or (not (match-string 2)) ;; Normal defun. |
| 381 | ((eq type 'type) font-lock-type-face) | 381 | (and (match-string 2) ;; Setf function. |
| 382 | ((or (not (match-string 2)) ;; Normal defun. | 382 | (match-string 4))) font-lock-function-name-face))) |
| 383 | (and (match-string 2) ;; Setf function. | 383 | nil t))) |
| 384 | (match-string 4))) font-lock-function-name-face))) | 384 | "Subdued level highlighting for Lisp modes.") |
| 385 | nil t))) | 385 | |
| 386 | "Subdued level highlighting for Lisp modes.") | 386 | (define-obsolete-variable-alias 'lisp-font-lock-keywords-2 |
| 387 | 387 | 'lisp-el-font-lock-keywords-2 "24.4") | |
| 388 | (define-obsolete-variable-alias 'lisp-font-lock-keywords-2 | 388 | (defconst lisp-el-font-lock-keywords-2 |
| 389 | 'lisp-el-font-lock-keywords-2 "24.4") | 389 | (append |
| 390 | (defconst lisp-el-font-lock-keywords-2 | 390 | lisp-el-font-lock-keywords-1 |
| 391 | (append | 391 | `( ;; Regexp negated char group. |
| 392 | lisp-el-font-lock-keywords-1 | 392 | ("\\[\\(\\^\\)" 1 font-lock-negation-char-face prepend) |
| 393 | `( ;; Regexp negated char group. | 393 | ;; Control structures. Common Lisp forms. |
| 394 | ("\\[\\(\\^\\)" 1 font-lock-negation-char-face prepend) | 394 | (lisp--el-match-keyword . 1) |
| 395 | ;; Control structures. Common Lisp forms. | 395 | ;; Exit/Feature symbols as constants. |
| 396 | (lisp--el-match-keyword . 1) | 396 | (,(concat "(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\_>" |
| 397 | ;; Exit/Feature symbols as constants. | 397 | "[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?") |
| 398 | (,(concat "(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\_>" | 398 | (1 font-lock-keyword-face) |
| 399 | "[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?") | 399 | (2 font-lock-constant-face nil t)) |
| 400 | (1 font-lock-keyword-face) | 400 | ;; Erroneous structures. |
| 401 | (2 font-lock-constant-face nil t)) | 401 | (,(concat "(" el-errs-re "\\_>") |
| 402 | ;; Erroneous structures. | 402 | (1 font-lock-warning-face)) |
| 403 | (,(concat "(" el-errs-re "\\_>") | 403 | ;; Words inside \\[] tend to be for `substitute-command-keys'. |
| 404 | (1 font-lock-warning-face)) | 404 | ("\\\\\\\\\\[\\(\\(?:\\sw\\|\\s_\\)+\\)\\]" |
| 405 | ;; Words inside \\[] tend to be for `substitute-command-keys'. | 405 | (1 font-lock-constant-face prepend)) |
| 406 | ("\\\\\\\\\\[\\(\\(?:\\sw\\|\\s_\\)+\\)\\]" | 406 | ;; Words inside `' tend to be symbol names. |
| 407 | (1 font-lock-constant-face prepend)) | 407 | ("`\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)'" |
| 408 | ;; Words inside `' tend to be symbol names. | 408 | (1 font-lock-constant-face prepend)) |
| 409 | ("`\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)'" | 409 | ;; Constant values. |
| 410 | (1 font-lock-constant-face prepend)) | 410 | ("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face) |
| 411 | ;; Constant values. | 411 | ;; ELisp and CLisp `&' keywords as types. |
| 412 | ("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face) | 412 | ("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face) |
| 413 | ;; ELisp and CLisp `&' keywords as types. | 413 | ;; ELisp regexp grouping constructs |
| 414 | ("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face) | 414 | (,(lambda (bound) |
| 415 | ;; ELisp regexp grouping constructs | 415 | (catch 'found |
| 416 | (,(lambda (bound) | 416 | ;; The following loop is needed to continue searching after matches |
| 417 | (catch 'found | 417 | ;; that do not occur in strings. The associated regexp matches one |
| 418 | ;; The following loop is needed to continue searching after matches | 418 | ;; of `\\\\' `\\(' `\\(?:' `\\|' `\\)'. `\\\\' has been included to |
| 419 | ;; that do not occur in strings. The associated regexp matches one | 419 | ;; avoid highlighting, for example, `\\(' in `\\\\('. |
| 420 | ;; of `\\\\' `\\(' `\\(?:' `\\|' `\\)'. `\\\\' has been included to | 420 | (while (re-search-forward "\\(\\\\\\\\\\)\\(?:\\(\\\\\\\\\\)\\|\\((\\(?:\\?[0-9]*:\\)?\\|[|)]\\)\\)" bound t) |
| 421 | ;; avoid highlighting, for example, `\\(' in `\\\\('. | 421 | (unless (match-beginning 2) |
| 422 | (while (re-search-forward "\\(\\\\\\\\\\)\\(?:\\(\\\\\\\\\\)\\|\\((\\(?:\\?[0-9]*:\\)?\\|[|)]\\)\\)" bound t) | 422 | (let ((face (get-text-property (1- (point)) 'face))) |
| 423 | (unless (match-beginning 2) | 423 | (when (or (and (listp face) |
| 424 | (let ((face (get-text-property (1- (point)) 'face))) | 424 | (memq 'font-lock-string-face face)) |
| 425 | (when (or (and (listp face) | 425 | (eq 'font-lock-string-face face)) |
| 426 | (memq 'font-lock-string-face face)) | 426 | (throw 'found t))))))) |
| 427 | (eq 'font-lock-string-face face)) | 427 | (1 'font-lock-regexp-grouping-backslash prepend) |
| 428 | (throw 'found t))))))) | 428 | (3 'font-lock-regexp-grouping-construct prepend)) |
| 429 | (1 'font-lock-regexp-grouping-backslash prepend) | 429 | ;; This is too general -- rms. |
| 430 | (3 'font-lock-regexp-grouping-construct prepend)) | 430 | ;; A user complained that he has functions whose names start with `do' |
| 431 | ;; This is too general -- rms. | 431 | ;; and that they get the wrong color. |
| 432 | ;; A user complained that he has functions whose names start with `do' | 432 | ;; ;; CL `with-' and `do-' constructs |
| 433 | ;; and that they get the wrong color. | 433 | ;;("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face) |
| 434 | ;; ;; CL `with-' and `do-' constructs | 434 | (lisp--match-hidden-arg |
| 435 | ;;("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face) | 435 | (0 '(face font-lock-warning-face |
| 436 | (lisp--match-hidden-arg | 436 | help-echo "Hidden behind deeper element; move to another line?"))) |
| 437 | (0 '(face font-lock-warning-face | 437 | )) |
| 438 | help-echo "Hidden behind deeper element; move to another line?"))) | 438 | "Gaudy level highlighting for Emacs Lisp mode.") |
| 439 | )) | 439 | |
| 440 | "Gaudy level highlighting for Emacs Lisp mode.") | 440 | (defconst lisp-cl-font-lock-keywords-2 |
| 441 | 441 | (append | |
| 442 | (defconst lisp-cl-font-lock-keywords-2 | 442 | lisp-cl-font-lock-keywords-1 |
| 443 | (append | 443 | `( ;; Regexp negated char group. |
| 444 | lisp-cl-font-lock-keywords-1 | 444 | ("\\[\\(\\^\\)" 1 font-lock-negation-char-face prepend) |
| 445 | `( ;; Regexp negated char group. | 445 | ;; Control structures. Common Lisp forms. |
| 446 | ("\\[\\(\\^\\)" 1 font-lock-negation-char-face prepend) | 446 | (,(concat "(" cl-kws-re "\\_>") . 1) |
| 447 | ;; Control structures. Common Lisp forms. | 447 | ;; Exit/Feature symbols as constants. |
| 448 | (,(concat "(" cl-kws-re "\\_>") . 1) | 448 | (,(concat "(\\(catch\\|throw\\|provide\\|require\\)\\_>" |
| 449 | ;; Exit/Feature symbols as constants. | 449 | "[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?") |
| 450 | (,(concat "(\\(catch\\|throw\\|provide\\|require\\)\\_>" | 450 | (1 font-lock-keyword-face) |
| 451 | "[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?") | 451 | (2 font-lock-constant-face nil t)) |
| 452 | (1 font-lock-keyword-face) | 452 | ;; Erroneous structures. |
| 453 | (2 font-lock-constant-face nil t)) | 453 | (,(concat "(" cl-errs-re "\\_>") |
| 454 | ;; Erroneous structures. | 454 | (1 font-lock-warning-face)) |
| 455 | (,(concat "(" cl-errs-re "\\_>") | 455 | ;; Words inside `' tend to be symbol names. |
| 456 | (1 font-lock-warning-face)) | 456 | ("`\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)'" |
| 457 | ;; Words inside `' tend to be symbol names. | 457 | (1 font-lock-constant-face prepend)) |
| 458 | ("`\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)'" | 458 | ;; Constant values. |
| 459 | (1 font-lock-constant-face prepend)) | 459 | ("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face) |
| 460 | ;; Constant values. | 460 | ;; ELisp and CLisp `&' keywords as types. |
| 461 | ("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face) | 461 | ("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face) |
| 462 | ;; ELisp and CLisp `&' keywords as types. | 462 | ;; This is too general -- rms. |
| 463 | ("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face) | 463 | ;; A user complained that he has functions whose names start with `do' |
| 464 | ;; This is too general -- rms. | 464 | ;; and that they get the wrong color. |
| 465 | ;; A user complained that he has functions whose names start with `do' | 465 | ;; ;; CL `with-' and `do-' constructs |
| 466 | ;; and that they get the wrong color. | 466 | ;;("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face) |
| 467 | ;; ;; CL `with-' and `do-' constructs | 467 | (lisp--match-hidden-arg |
| 468 | ;;("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face) | 468 | (0 '(face font-lock-warning-face |
| 469 | (lisp--match-hidden-arg | 469 | help-echo "Hidden behind deeper element; move to another line?"))) |
| 470 | (0 '(face font-lock-warning-face | 470 | )) |
| 471 | help-echo "Hidden behind deeper element; move to another line?"))) | 471 | "Gaudy level highlighting for Lisp modes."))) |
| 472 | )) | ||
| 473 | "Gaudy level highlighting for Lisp modes.")) | ||
| 474 | 472 | ||
| 475 | (define-obsolete-variable-alias 'lisp-font-lock-keywords | 473 | (define-obsolete-variable-alias 'lisp-font-lock-keywords |
| 476 | 'lisp-el-font-lock-keywords "24.4") | 474 | 'lisp-el-font-lock-keywords "24.4") |
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index d401b316719..7b7b48c66de 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el | |||
| @@ -746,9 +746,10 @@ The context determines which symbols are considered. If the | |||
| 746 | symbol starts just after an open-parenthesis, only symbols with | 746 | symbol starts just after an open-parenthesis, only symbols with |
| 747 | function definitions are considered. Otherwise, all symbols with | 747 | function definitions are considered. Otherwise, all symbols with |
| 748 | function definitions, values or properties are considered." | 748 | function definitions, values or properties are considered." |
| 749 | (declare (obsolete completion-at-point "24.4")) | 749 | (declare (obsolete completion-at-point "24.4") |
| 750 | (advertised-calling-convention () "25.1")) | ||
| 750 | (interactive) | 751 | (interactive) |
| 751 | (let* ((data (lisp-completion-at-point)) | 752 | (let* ((data (elisp-completion-at-point)) |
| 752 | (plist (nthcdr 3 data))) | 753 | (plist (nthcdr 3 data))) |
| 753 | (if (null data) | 754 | (if (null data) |
| 754 | (minibuffer-message "Nothing to complete") | 755 | (minibuffer-message "Nothing to complete") |
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 55fa962719d..b96518df502 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el | |||
| @@ -341,7 +341,7 @@ This variable is fed automatically by Emacs when installing a new package. | |||
| 341 | This variable is used by `package-autoremove' to decide | 341 | This variable is used by `package-autoremove' to decide |
| 342 | which packages are no longer needed. | 342 | which packages are no longer needed. |
| 343 | You can use it to (re)install packages on other machines | 343 | You can use it to (re)install packages on other machines |
| 344 | by running `package-user-selected-packages-install'. | 344 | by running `package-install-selected-packages'. |
| 345 | 345 | ||
| 346 | To check if a package is contained in this list here, use | 346 | To check if a package is contained in this list here, use |
| 347 | `package--user-selected-p', as it may populate the variable with | 347 | `package--user-selected-p', as it may populate the variable with |
| @@ -350,8 +350,9 @@ a sane initial value." | |||
| 350 | 350 | ||
| 351 | (defcustom package-menu-async t | 351 | (defcustom package-menu-async t |
| 352 | "If non-nil, package-menu will use async operations when possible. | 352 | "If non-nil, package-menu will use async operations when possible. |
| 353 | This includes refreshing archive contents as well as installing | 353 | Currently, only the refreshing of archive contents supports |
| 354 | packages." | 354 | asynchronous operations. Package transactions are still done |
| 355 | synchronously." | ||
| 355 | :type 'boolean | 356 | :type 'boolean |
| 356 | :version "25.1") | 357 | :version "25.1") |
| 357 | 358 | ||
| @@ -1646,21 +1647,25 @@ These are packages which are neither contained in | |||
| 1646 | unless (memq p needed) | 1647 | unless (memq p needed) |
| 1647 | collect p))) | 1648 | collect p))) |
| 1648 | 1649 | ||
| 1649 | (defun package--used-elsewhere-p (pkg-desc &optional pkg-list) | 1650 | (defun package--used-elsewhere-p (pkg-desc &optional pkg-list all) |
| 1650 | "Non-nil if PKG-DESC is a dependency of a package in PKG-LIST. | 1651 | "Non-nil if PKG-DESC is a dependency of a package in PKG-LIST. |
| 1651 | Return the first package found in PKG-LIST of which PKG is a | 1652 | Return the first package found in PKG-LIST of which PKG is a |
| 1652 | dependency. | 1653 | dependency. If ALL is non-nil, return all such packages instead. |
| 1653 | 1654 | ||
| 1654 | When not specified, PKG-LIST defaults to `package-alist' | 1655 | When not specified, PKG-LIST defaults to `package-alist' |
| 1655 | with PKG-DESC entry removed." | 1656 | with PKG-DESC entry removed." |
| 1656 | (unless (string= (package-desc-status pkg-desc) "obsolete") | 1657 | (unless (string= (package-desc-status pkg-desc) "obsolete") |
| 1657 | (let ((pkg (package-desc-name pkg-desc))) | 1658 | (let* ((pkg (package-desc-name pkg-desc)) |
| 1658 | (cl-loop with alist = (or pkg-list | 1659 | (alist (or pkg-list |
| 1659 | (remove (assq pkg package-alist) | 1660 | (remove (assq pkg package-alist) |
| 1660 | package-alist)) | 1661 | package-alist)))) |
| 1661 | for p in alist thereis | 1662 | (if all |
| 1662 | (and (memq pkg (mapcar #'car (package-desc-reqs (cadr p)))) | 1663 | (cl-loop for p in alist |
| 1663 | (car p)))))) | 1664 | if (assq pkg (package-desc-reqs (cadr p))) |
| 1665 | collect (cadr p)) | ||
| 1666 | (cl-loop for p in alist thereis | ||
| 1667 | (and (assq pkg (package-desc-reqs (cadr p))) | ||
| 1668 | (cadr p))))))) | ||
| 1664 | 1669 | ||
| 1665 | (defun package--sort-deps-in-alist (package only) | 1670 | (defun package--sort-deps-in-alist (package only) |
| 1666 | "Return a list of dependencies for PACKAGE sorted by dependency. | 1671 | "Return a list of dependencies for PACKAGE sorted by dependency. |
| @@ -1708,31 +1713,26 @@ if all the in-between dependencies are also in PACKAGE-LIST." | |||
| 1708 | "Return the archive containing the package NAME." | 1713 | "Return the archive containing the package NAME." |
| 1709 | (cdr (assoc (package-desc-archive desc) package-archives))) | 1714 | (cdr (assoc (package-desc-archive desc) package-archives))) |
| 1710 | 1715 | ||
| 1711 | (defun package-install-from-archive (pkg-desc &optional async callback) | 1716 | (defun package-install-from-archive (pkg-desc) |
| 1712 | "Download and install a tar package. | 1717 | "Download and install a tar package." |
| 1713 | If ASYNC is non-nil, perform the download asynchronously. | ||
| 1714 | If CALLBACK is non-nil, call it with no arguments once the | ||
| 1715 | operation is done." | ||
| 1716 | ;; This won't happen, unless the archive is doing something wrong. | 1718 | ;; This won't happen, unless the archive is doing something wrong. |
| 1717 | (when (eq (package-desc-kind pkg-desc) 'dir) | 1719 | (when (eq (package-desc-kind pkg-desc) 'dir) |
| 1718 | (error "Can't install directory package from archive")) | 1720 | (error "Can't install directory package from archive")) |
| 1719 | (let* ((location (package-archive-base pkg-desc)) | 1721 | (let* ((location (package-archive-base pkg-desc)) |
| 1720 | (file (concat (package-desc-full-name pkg-desc) | 1722 | (file (concat (package-desc-full-name pkg-desc) |
| 1721 | (package-desc-suffix pkg-desc)))) | 1723 | (package-desc-suffix pkg-desc)))) |
| 1722 | (package--with-work-buffer-async location file async | 1724 | (package--with-work-buffer location file |
| 1723 | (if (or (not package-check-signature) | 1725 | (if (or (not package-check-signature) |
| 1724 | (member (package-desc-archive pkg-desc) | 1726 | (member (package-desc-archive pkg-desc) |
| 1725 | package-unsigned-archives)) | 1727 | package-unsigned-archives)) |
| 1726 | ;; If we don't care about the signature, unpack and we're | 1728 | ;; If we don't care about the signature, unpack and we're |
| 1727 | ;; done. | 1729 | ;; done. |
| 1728 | (progn (let ((save-silently async) | 1730 | (let ((save-silently t)) |
| 1729 | (inhibit-message async)) | 1731 | (package-unpack pkg-desc)) |
| 1730 | (package-unpack pkg-desc)) | ||
| 1731 | (funcall callback)) | ||
| 1732 | ;; If we care, check it and *then* write the file. | 1732 | ;; If we care, check it and *then* write the file. |
| 1733 | (let ((content (buffer-string))) | 1733 | (let ((content (buffer-string))) |
| 1734 | (package--check-signature | 1734 | (package--check-signature |
| 1735 | location file content async | 1735 | location file content nil |
| 1736 | ;; This function will be called after signature checking. | 1736 | ;; This function will be called after signature checking. |
| 1737 | (lambda (&optional good-sigs) | 1737 | (lambda (&optional good-sigs) |
| 1738 | (unless (or good-sigs (eq package-check-signature 'allow-unsigned)) | 1738 | (unless (or good-sigs (eq package-check-signature 'allow-unsigned)) |
| @@ -1742,8 +1742,7 @@ operation is done." | |||
| 1742 | (package-desc-name pkg-desc))) | 1742 | (package-desc-name pkg-desc))) |
| 1743 | ;; Signature checked, unpack now. | 1743 | ;; Signature checked, unpack now. |
| 1744 | (with-temp-buffer (insert content) | 1744 | (with-temp-buffer (insert content) |
| 1745 | (let ((save-silently async) | 1745 | (let ((save-silently t)) |
| 1746 | (inhibit-message async)) | ||
| 1747 | (package-unpack pkg-desc))) | 1746 | (package-unpack pkg-desc))) |
| 1748 | ;; Here the package has been installed successfully, mark it as | 1747 | ;; Here the package has been installed successfully, mark it as |
| 1749 | ;; signed if appropriate. | 1748 | ;; signed if appropriate. |
| @@ -1759,9 +1758,7 @@ operation is done." | |||
| 1759 | (setf (package-desc-signed pkg-desc) t) | 1758 | (setf (package-desc-signed pkg-desc) t) |
| 1760 | ;; Update the new (activated) pkg-desc as well. | 1759 | ;; Update the new (activated) pkg-desc as well. |
| 1761 | (when-let ((pkg-descs (cdr (assq (package-desc-name pkg-desc) package-alist)))) | 1760 | (when-let ((pkg-descs (cdr (assq (package-desc-name pkg-desc) package-alist)))) |
| 1762 | (setf (package-desc-signed (car pkg-descs)) t))) | 1761 | (setf (package-desc-signed (car pkg-descs)) t)))))))))) |
| 1763 | (when (functionp callback) | ||
| 1764 | (funcall callback))))))))) | ||
| 1765 | 1762 | ||
| 1766 | (defun package-installed-p (package &optional min-version) | 1763 | (defun package-installed-p (package &optional min-version) |
| 1767 | "Return true if PACKAGE, of MIN-VERSION or newer, is installed. | 1764 | "Return true if PACKAGE, of MIN-VERSION or newer, is installed. |
| @@ -1782,25 +1779,13 @@ If PACKAGE is a package-desc object, MIN-VERSION is ignored." | |||
| 1782 | ;; Also check built-in packages. | 1779 | ;; Also check built-in packages. |
| 1783 | (package-built-in-p package min-version)))) | 1780 | (package-built-in-p package min-version)))) |
| 1784 | 1781 | ||
| 1785 | (defun package-download-transaction (packages &optional async callback) | 1782 | (defun package-download-transaction (packages) |
| 1786 | "Download and install all the packages in PACKAGES. | 1783 | "Download and install all the packages in PACKAGES. |
| 1787 | PACKAGES should be a list of package-desc. | 1784 | PACKAGES should be a list of package-desc. |
| 1788 | If ASYNC is non-nil, perform the downloads asynchronously. | ||
| 1789 | If CALLBACK is non-nil, call it with no arguments once the | ||
| 1790 | entire operation is done. | ||
| 1791 | |||
| 1792 | This function assumes that all package requirements in | 1785 | This function assumes that all package requirements in |
| 1793 | PACKAGES are satisfied, i.e. that PACKAGES is computed | 1786 | PACKAGES are satisfied, i.e. that PACKAGES is computed |
| 1794 | using `package-compute-transaction'." | 1787 | using `package-compute-transaction'." |
| 1795 | (cond | 1788 | (mapc #'package-install-from-archive packages)) |
| 1796 | (packages (package-install-from-archive | ||
| 1797 | (car packages) | ||
| 1798 | async | ||
| 1799 | (lambda () | ||
| 1800 | (package-download-transaction (cdr packages)) | ||
| 1801 | (when (functionp callback) | ||
| 1802 | (funcall callback))))) | ||
| 1803 | (callback (funcall callback)))) | ||
| 1804 | 1789 | ||
| 1805 | (defun package--ensure-init-file () | 1790 | (defun package--ensure-init-file () |
| 1806 | "Ensure that the user's init file has `package-initialize'. | 1791 | "Ensure that the user's init file has `package-initialize'. |
| @@ -1853,16 +1838,13 @@ add a call to it along with some explanatory comments." | |||
| 1853 | (setq package--init-file-ensured t)) | 1838 | (setq package--init-file-ensured t)) |
| 1854 | 1839 | ||
| 1855 | ;;;###autoload | 1840 | ;;;###autoload |
| 1856 | (defun package-install (pkg &optional dont-select async callback) | 1841 | (defun package-install (pkg &optional dont-select) |
| 1857 | "Install the package PKG. | 1842 | "Install the package PKG. |
| 1858 | PKG can be a package-desc or the package name of one the available packages | 1843 | PKG can be a package-desc or the package name of one the available packages |
| 1859 | in an archive in `package-archives'. Interactively, prompt for its name. | 1844 | in an archive in `package-archives'. Interactively, prompt for its name. |
| 1860 | 1845 | ||
| 1861 | If called interactively or if DONT-SELECT nil, add PKG to | 1846 | If called interactively or if DONT-SELECT nil, add PKG to |
| 1862 | `package-selected-packages'. | 1847 | `package-selected-packages'. |
| 1863 | If ASYNC is non-nil, perform the downloads asynchronously. | ||
| 1864 | If CALLBACK is non-nil, call it with no arguments once the | ||
| 1865 | entire operation is done. | ||
| 1866 | 1848 | ||
| 1867 | If PKG is a package-desc and it is already installed, don't try | 1849 | If PKG is a package-desc and it is already installed, don't try |
| 1868 | to install it but still mark it as selected." | 1850 | to install it but still mark it as selected." |
| @@ -1895,9 +1877,8 @@ to install it but still mark it as selected." | |||
| 1895 | (package-compute-transaction (list pkg) | 1877 | (package-compute-transaction (list pkg) |
| 1896 | (package-desc-reqs pkg))) | 1878 | (package-desc-reqs pkg))) |
| 1897 | (package-compute-transaction () (list (list pkg)))))) | 1879 | (package-compute-transaction () (list (list pkg)))))) |
| 1898 | (package-download-transaction transaction async callback) | 1880 | (package-download-transaction transaction) |
| 1899 | (message "`%s' is already installed" (package-desc-full-name pkg)) | 1881 | (message "`%s' is already installed" (package-desc-full-name pkg)))) |
| 1900 | (funcall callback))) | ||
| 1901 | 1882 | ||
| 1902 | (defun package-strip-rcs-id (str) | 1883 | (defun package-strip-rcs-id (str) |
| 1903 | "Strip RCS version ID from the version string STR. | 1884 | "Strip RCS version ID from the version string STR. |
| @@ -2027,7 +2008,7 @@ If NOSAVE is non-nil, the package is not removed from | |||
| 2027 | ;; Don't delete packages used as dependency elsewhere. | 2008 | ;; Don't delete packages used as dependency elsewhere. |
| 2028 | (error "Package `%s' is used by `%s' as dependency, not deleting" | 2009 | (error "Package `%s' is used by `%s' as dependency, not deleting" |
| 2029 | (package-desc-full-name pkg-desc) | 2010 | (package-desc-full-name pkg-desc) |
| 2030 | pkg-used-elsewhere-by)) | 2011 | (package-desc-name pkg-used-elsewhere-by))) |
| 2031 | (t | 2012 | (t |
| 2032 | (delete-directory dir t t) | 2013 | (delete-directory dir t t) |
| 2033 | ;; Remove NAME-VERSION.signed file. | 2014 | ;; Remove NAME-VERSION.signed file. |
| @@ -2127,6 +2108,7 @@ will be deleted." | |||
| 2127 | (name (if desc (package-desc-name desc) pkg)) | 2108 | (name (if desc (package-desc-name desc) pkg)) |
| 2128 | (pkg-dir (if desc (package-desc-dir desc))) | 2109 | (pkg-dir (if desc (package-desc-dir desc))) |
| 2129 | (reqs (if desc (package-desc-reqs desc))) | 2110 | (reqs (if desc (package-desc-reqs desc))) |
| 2111 | (required-by (if desc (package--used-elsewhere-p desc nil 'all))) | ||
| 2130 | (version (if desc (package-desc-version desc))) | 2112 | (version (if desc (package-desc-version desc))) |
| 2131 | (archive (if desc (package-desc-archive desc))) | 2113 | (archive (if desc (package-desc-archive desc))) |
| 2132 | (extras (and desc (package-desc-extras desc))) | 2114 | (extras (and desc (package-desc-extras desc))) |
| @@ -2168,7 +2150,14 @@ will be deleted." | |||
| 2168 | (insert "'")) | 2150 | (insert "'")) |
| 2169 | (if signed | 2151 | (if signed |
| 2170 | (insert ".") | 2152 | (insert ".") |
| 2171 | (insert " (unsigned)."))) | 2153 | (insert " (unsigned).")) |
| 2154 | (when (and (package-desc-p desc) | ||
| 2155 | (not required-by) | ||
| 2156 | (package-installed-p desc)) | ||
| 2157 | (insert " ") | ||
| 2158 | (package-make-button "Delete" | ||
| 2159 | 'action #'package-delete-button-action | ||
| 2160 | 'package-desc desc))) | ||
| 2172 | (incompatible-reason | 2161 | (incompatible-reason |
| 2173 | (insert (propertize "Incompatible" 'face font-lock-warning-face) | 2162 | (insert (propertize "Incompatible" 'face font-lock-warning-face) |
| 2174 | " because it depends on ") | 2163 | " because it depends on ") |
| @@ -2212,6 +2201,19 @@ will be deleted." | |||
| 2212 | (help-insert-xref-button text 'help-package name) | 2201 | (help-insert-xref-button text 'help-package name) |
| 2213 | (insert reason))) | 2202 | (insert reason))) |
| 2214 | (insert "\n"))) | 2203 | (insert "\n"))) |
| 2204 | (when required-by | ||
| 2205 | (insert (propertize "Required by" 'font-lock-face 'bold) ": ") | ||
| 2206 | (let ((first t)) | ||
| 2207 | (dolist (pkg required-by) | ||
| 2208 | (let ((text (package-desc-full-name pkg))) | ||
| 2209 | (cond (first (setq first nil)) | ||
| 2210 | ((>= (+ 2 (current-column) (length text)) | ||
| 2211 | (window-width)) | ||
| 2212 | (insert ",\n ")) | ||
| 2213 | (t (insert ", "))) | ||
| 2214 | (help-insert-xref-button text 'help-package | ||
| 2215 | (package-desc-name pkg)))) | ||
| 2216 | (insert "\n"))) | ||
| 2215 | (insert " " (propertize "Summary" 'font-lock-face 'bold) | 2217 | (insert " " (propertize "Summary" 'font-lock-face 'bold) |
| 2216 | ": " (if desc (package-desc-summary desc)) "\n") | 2218 | ": " (if desc (package-desc-summary desc)) "\n") |
| 2217 | (when homepage | 2219 | (when homepage |
| @@ -2299,6 +2301,14 @@ will be deleted." | |||
| 2299 | (revert-buffer nil t) | 2301 | (revert-buffer nil t) |
| 2300 | (goto-char (point-min))))) | 2302 | (goto-char (point-min))))) |
| 2301 | 2303 | ||
| 2304 | (defun package-delete-button-action (button) | ||
| 2305 | (let ((pkg-desc (button-get button 'package-desc))) | ||
| 2306 | (when (y-or-n-p (format "Delete package `%s'? " | ||
| 2307 | (package-desc-full-name pkg-desc))) | ||
| 2308 | (package-delete pkg-desc) | ||
| 2309 | (revert-buffer nil t) | ||
| 2310 | (goto-char (point-min))))) | ||
| 2311 | |||
| 2302 | (defun package-keyword-button-action (button) | 2312 | (defun package-keyword-button-action (button) |
| 2303 | (let ((pkg-keyword (button-get button 'package-keyword))) | 2313 | (let ((pkg-keyword (button-get button 'package-keyword))) |
| 2304 | (package-show-package-list t (list pkg-keyword)))) | 2314 | (package-show-package-list t (list pkg-keyword)))) |
| @@ -2390,12 +2400,17 @@ will be deleted." | |||
| 2390 | (defvar package-menu--new-package-list nil | 2400 | (defvar package-menu--new-package-list nil |
| 2391 | "List of newly-available packages since `list-packages' was last called.") | 2401 | "List of newly-available packages since `list-packages' was last called.") |
| 2392 | 2402 | ||
| 2403 | (defvar package-menu--transaction-status nil | ||
| 2404 | "Mode-line status of ongoing package transaction.") | ||
| 2405 | |||
| 2393 | (define-derived-mode package-menu-mode tabulated-list-mode "Package Menu" | 2406 | (define-derived-mode package-menu-mode tabulated-list-mode "Package Menu" |
| 2394 | "Major mode for browsing a list of packages. | 2407 | "Major mode for browsing a list of packages. |
| 2395 | Letters do not insert themselves; instead, they are commands. | 2408 | Letters do not insert themselves; instead, they are commands. |
| 2396 | \\<package-menu-mode-map> | 2409 | \\<package-menu-mode-map> |
| 2397 | \\{package-menu-mode-map}" | 2410 | \\{package-menu-mode-map}" |
| 2398 | (setq mode-line-process '(package--downloads-in-progress ":Loading")) | 2411 | (setq mode-line-process '((package--downloads-in-progress ":Loading") |
| 2412 | (package-menu--transaction-status | ||
| 2413 | package-menu--transaction-status))) | ||
| 2399 | (setq tabulated-list-format | 2414 | (setq tabulated-list-format |
| 2400 | `[("Package" 18 package-menu--name-predicate) | 2415 | `[("Package" 18 package-menu--name-predicate) |
| 2401 | ("Version" 13 nil) | 2416 | ("Version" 13 nil) |
| @@ -2885,57 +2900,77 @@ prompt (see `package-menu--prompt-transaction-p')." | |||
| 2885 | (t (format "package `%s'" | 2900 | (t (format "package `%s'" |
| 2886 | (package-desc-full-name (car packages)))))) | 2901 | (package-desc-full-name (car packages)))))) |
| 2887 | 2902 | ||
| 2888 | (defun package-menu--prompt-transaction-p (install delete) | 2903 | (defun package-menu--prompt-transaction-p (delete install upgrade) |
| 2889 | "Prompt the user about installing INSTALL and deleting DELETE. | 2904 | "Prompt the user about DELETE, INSTALL, and UPGRADE. |
| 2890 | INSTALL and DELETE are lists of `package-desc'. Either may be | 2905 | DELETE, INSTALL, and UPGRADE are lists of `package-desc' objects. |
| 2891 | nil, but not both." | 2906 | Either may be nil, but not all." |
| 2907 | (y-or-n-p | ||
| 2908 | (concat | ||
| 2909 | (when delete "Delete ") | ||
| 2910 | (package-menu--list-to-prompt delete) | ||
| 2911 | (when (and delete install) | ||
| 2912 | (if upgrade "; " "; and ")) | ||
| 2913 | (when install "Install ") | ||
| 2914 | (package-menu--list-to-prompt install) | ||
| 2915 | (when (and upgrade (or install delete)) "; and ") | ||
| 2916 | (when upgrade "Upgrade ") | ||
| 2917 | (package-menu--list-to-prompt upgrade) | ||
| 2918 | "? "))) | ||
| 2919 | |||
| 2920 | (defun package-menu--partition-transaction (install delete) | ||
| 2921 | "Return an alist describing an INSTALL DELETE transaction. | ||
| 2922 | Alist contains three entries, upgrade, delete, and install, each | ||
| 2923 | with a list of package names. | ||
| 2924 | |||
| 2925 | The upgrade entry contains any `package-desc' objects in INSTALL | ||
| 2926 | whose name coincides with an object in DELETE. The delete and | ||
| 2927 | the install entries are the same as DELETE and INSTALL with such | ||
| 2928 | objects removed." | ||
| 2892 | (let* ((upg (cl-intersection install delete :key #'package-desc-name)) | 2929 | (let* ((upg (cl-intersection install delete :key #'package-desc-name)) |
| 2893 | (ins (cl-set-difference install upg :key #'package-desc-name)) | 2930 | (ins (cl-set-difference install upg :key #'package-desc-name)) |
| 2894 | (del (cl-set-difference delete upg :key #'package-desc-name))) | 2931 | (del (cl-set-difference delete upg :key #'package-desc-name))) |
| 2895 | (y-or-n-p | 2932 | `((delete . ,del) (install . ,ins) (upgrade . ,upg)))) |
| 2896 | (concat | 2933 | |
| 2897 | (when del "Delete ") | 2934 | (defun package-menu--perform-transaction (install-list delete-list) |
| 2898 | (package-menu--list-to-prompt del) | 2935 | "Install packages in INSTALL-LIST and delete DELETE-LIST." |
| 2899 | (when (and del ins) | ||
| 2900 | (if upg "; " "; and ")) | ||
| 2901 | (when ins "Install ") | ||
| 2902 | (package-menu--list-to-prompt ins) | ||
| 2903 | (when (and upg (or ins del)) "; and ") | ||
| 2904 | (when upg "Upgrade ") | ||
| 2905 | (package-menu--list-to-prompt upg) | ||
| 2906 | "? ")))) | ||
| 2907 | |||
| 2908 | (defun package-menu--perform-transaction (install-list delete-list &optional async) | ||
| 2909 | "Install packages in INSTALL-LIST and delete DELETE-LIST. | ||
| 2910 | If ASYNC is non-nil, perform the installation downloads | ||
| 2911 | asynchronously." | ||
| 2912 | ;; While there are packages to install, call `package-install' on | ||
| 2913 | ;; the next one and defer deletion to the callback function. | ||
| 2914 | (if install-list | 2936 | (if install-list |
| 2915 | (let* ((pkg (car install-list)) | 2937 | (let ((status-format (format ":Installing %%d/%d" |
| 2916 | (rest (cdr install-list)) | 2938 | (length install-list))) |
| 2917 | ;; Don't mark as selected if it's a new version of an | 2939 | (i 0) |
| 2918 | ;; installed package. | 2940 | (package-menu--transaction-status)) |
| 2919 | (dont-mark (and (not (package-installed-p pkg)) | 2941 | (dolist (pkg install-list) |
| 2920 | (package-installed-p | 2942 | (setq package-menu--transaction-status |
| 2921 | (package-desc-name pkg))))) | 2943 | (format status-format (cl-incf i))) |
| 2922 | (package-install | 2944 | (force-mode-line-update) |
| 2923 | pkg dont-mark async | 2945 | (redisplay 'force) |
| 2924 | (lambda () (package-menu--perform-transaction rest delete-list async)))) | 2946 | ;; Don't mark as selected, `package-menu-execute' already |
| 2925 | (let ((inhibit-message async)) | 2947 | ;; does that. |
| 2926 | ;; Once there are no more packages to install, proceed to | 2948 | (package-install pkg 'dont-select))) |
| 2927 | ;; deletion. | 2949 | ;; Once there are no more packages to install, proceed to |
| 2950 | ;; deletion. | ||
| 2951 | (let ((package-menu--transaction-status ":Deleting")) | ||
| 2952 | (force-mode-line-update) | ||
| 2953 | (redisplay 'force) | ||
| 2928 | (dolist (elt (package--sort-by-dependence delete-list)) | 2954 | (dolist (elt (package--sort-by-dependence delete-list)) |
| 2929 | (condition-case-unless-debug err | 2955 | (condition-case-unless-debug err |
| 2930 | (package-delete elt) | 2956 | (let ((inhibit-message t)) |
| 2931 | (error (message (cadr err)))))) | 2957 | (package-delete elt nil 'nosave)) |
| 2932 | (message "Transaction done") | 2958 | (error (message (cadr err)))))))) |
| 2933 | (when package-selected-packages | 2959 | |
| 2934 | (when-let ((removable (package--removable-packages))) | 2960 | (defun package--update-selected-packages (add remove) |
| 2935 | (message "These %d packages are no longer needed, type `M-x package-autoremove' to remove them (%s)" | 2961 | "Update the `package-selected-packages' list according to ADD and REMOVE. |
| 2936 | (length removable) | 2962 | ADD and REMOVE must be disjoint lists of package names (or |
| 2937 | (mapconcat #'symbol-name removable ", ")))) | 2963 | `package-desc' objects) to be added and removed to the selected |
| 2938 | (package-menu--post-refresh))) | 2964 | packages list, respectively." |
| 2965 | (dolist (p add) | ||
| 2966 | (cl-pushnew (if (package-desc-p p) (package-desc-name p) p) | ||
| 2967 | package-selected-packages)) | ||
| 2968 | (dolist (p remove) | ||
| 2969 | (setq package-selected-packages | ||
| 2970 | (remove (if (package-desc-p p) (package-desc-name p) p) | ||
| 2971 | package-selected-packages))) | ||
| 2972 | (when (or add remove) | ||
| 2973 | (package--save-selected-packages package-selected-packages))) | ||
| 2939 | 2974 | ||
| 2940 | (defun package-menu-execute (&optional noquery) | 2975 | (defun package-menu-execute (&optional noquery) |
| 2941 | "Perform marked Package Menu actions. | 2976 | "Perform marked Package Menu actions. |
| @@ -2960,12 +2995,30 @@ Optional argument NOQUERY non-nil means do not ask the user to confirm." | |||
| 2960 | (forward-line))) | 2995 | (forward-line))) |
| 2961 | (unless (or delete-list install-list) | 2996 | (unless (or delete-list install-list) |
| 2962 | (user-error "No operations specified")) | 2997 | (user-error "No operations specified")) |
| 2963 | (when (or noquery | 2998 | (let-alist (package-menu--partition-transaction install-list delete-list) |
| 2964 | (package-menu--prompt-transaction-p install-list delete-list)) | 2999 | (when (or noquery |
| 2965 | (message "Transaction started") | 3000 | (package-menu--prompt-transaction-p .delete .install .upgrade)) |
| 2966 | ;; This calls `package-menu--generate' after everything's done. | 3001 | (let ((message-template |
| 2967 | (package-menu--perform-transaction | 3002 | (concat "Package menu: Operation %s [" |
| 2968 | install-list delete-list package-menu-async)))) | 3003 | (when .delete (format "Delet__ %s" (length .delete))) |
| 3004 | (when (and .delete .install) "; ") | ||
| 3005 | (when .install (format "Install__ %s" (length .install))) | ||
| 3006 | (when (and .upgrade (or .install .delete)) "; ") | ||
| 3007 | (when .upgrade (format "Upgrad__ %s" (length .upgrade))) | ||
| 3008 | "]"))) | ||
| 3009 | (message (replace-regexp-in-string "__" "ing" message-template) "started") | ||
| 3010 | ;; Packages being upgraded are not marked as selected. | ||
| 3011 | (package--update-selected-packages .install .delete) | ||
| 3012 | (package-menu--perform-transaction install-list delete-list) | ||
| 3013 | (when package-selected-packages | ||
| 3014 | (if-let ((removable (package--removable-packages))) | ||
| 3015 | (message "Package menu: Operation finished. %d packages %s" | ||
| 3016 | (length removable) | ||
| 3017 | "are no longer needed, type `M-x package-autoremove' to remove them") | ||
| 3018 | (message (replace-regexp-in-string "__" "ed" message-template) | ||
| 3019 | "finished")))) | ||
| 3020 | ;; This calls `package-menu--generate'. | ||
| 3021 | (package-menu--post-refresh))))) | ||
| 2969 | 3022 | ||
| 2970 | (defun package-menu--version-predicate (A B) | 3023 | (defun package-menu--version-predicate (A B) |
| 2971 | (let ((vA (or (aref (cadr A) 1) '(0))) | 3024 | (let ((vA (or (aref (cadr A) 1) '(0))) |
diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el index bd178faa4af..e6d451ac62e 100644 --- a/lisp/emacs-lisp/subr-x.el +++ b/lisp/emacs-lisp/subr-x.el | |||
| @@ -140,6 +140,10 @@ to bind a single value, BINDINGS can just be a plain tuple." | |||
| 140 | (declare (indent 1) (debug if-let)) | 140 | (declare (indent 1) (debug if-let)) |
| 141 | (list 'if-let bindings (macroexp-progn body))) | 141 | (list 'if-let bindings (macroexp-progn body))) |
| 142 | 142 | ||
| 143 | (defsubst hash-table-empty-p (hash-table) | ||
| 144 | "Check whether HASH-TABLE is empty (has 0 elements)." | ||
| 145 | (zerop (hash-table-count hash-table))) | ||
| 146 | |||
| 143 | (defsubst hash-table-keys (hash-table) | 147 | (defsubst hash-table-keys (hash-table) |
| 144 | "Return a list of keys in HASH-TABLE." | 148 | "Return a list of keys in HASH-TABLE." |
| 145 | (let ((keys '())) | 149 | (let ((keys '())) |
diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el index 81ef7a6fbf3..05dd7d57503 100644 --- a/lisp/emacs-lisp/syntax.el +++ b/lisp/emacs-lisp/syntax.el | |||
| @@ -574,7 +574,7 @@ running the hook." | |||
| 574 | 574 | ||
| 575 | ;; (defun buffer-syntactic-context (&optional buffer) | 575 | ;; (defun buffer-syntactic-context (&optional buffer) |
| 576 | ;; "Syntactic context at point in BUFFER. | 576 | ;; "Syntactic context at point in BUFFER. |
| 577 | ;; Either of `string', `comment' or `nil'. | 577 | ;; Either of `string', `comment' or nil. |
| 578 | ;; This is an XEmacs compatibility function." | 578 | ;; This is an XEmacs compatibility function." |
| 579 | ;; (with-current-buffer (or buffer (current-buffer)) | 579 | ;; (with-current-buffer (or buffer (current-buffer)) |
| 580 | ;; (syntax-ppss-context (syntax-ppss)))) | 580 | ;; (syntax-ppss-context (syntax-ppss)))) |
diff --git a/lisp/emulation/viper-util.el b/lisp/emulation/viper-util.el index 59f47525e55..c4dc569efb3 100644 --- a/lisp/emulation/viper-util.el +++ b/lisp/emulation/viper-util.el | |||
| @@ -1301,7 +1301,7 @@ Usually contains ` ', linefeed, TAB or formfeed.") | |||
| 1301 | )) | 1301 | )) |
| 1302 | 1302 | ||
| 1303 | ;; SYMBOL is used because customize requires it, but it is ignored, unless it | 1303 | ;; SYMBOL is used because customize requires it, but it is ignored, unless it |
| 1304 | ;; is `nil'. If nil, use setq. | 1304 | ;; is nil. If nil, use setq. |
| 1305 | (defun viper-set-syntax-preference (&optional symbol value) | 1305 | (defun viper-set-syntax-preference (&optional symbol value) |
| 1306 | "Set Viper syntax preference. | 1306 | "Set Viper syntax preference. |
| 1307 | If called interactively or if SYMBOL is nil, sets syntax preference in current | 1307 | If called interactively or if SYMBOL is nil, sets syntax preference in current |
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el index 8ce199fbcbb..ee81113d208 100644 --- a/lisp/erc/erc-backend.el +++ b/lisp/erc/erc-backend.el | |||
| @@ -652,7 +652,7 @@ EVENT is the message received from the closed connection process." | |||
| 652 | (run-at-time erc-server-reconnect-timeout nil | 652 | (run-at-time erc-server-reconnect-timeout nil |
| 653 | #'erc-process-sentinel-2 | 653 | #'erc-process-sentinel-2 |
| 654 | event buffer) | 654 | event buffer) |
| 655 | (error (concat "`erc-server-reconnect-timeout`" | 655 | (error (concat "`erc-server-reconnect-timeout'" |
| 656 | " must be a number"))))))))))) | 656 | " must be a number"))))))))))) |
| 657 | 657 | ||
| 658 | (defun erc-process-sentinel-1 (event buffer) | 658 | (defun erc-process-sentinel-1 (event buffer) |
diff --git a/lisp/erc/erc-ezbounce.el b/lisp/erc/erc-ezbounce.el index 5f91be8c899..de2a2ff6e76 100644 --- a/lisp/erc/erc-ezbounce.el +++ b/lisp/erc/erc-ezbounce.el | |||
| @@ -78,7 +78,7 @@ The alist's format is as follows: | |||
| 78 | (defun erc-ezb-get-login (server port) | 78 | (defun erc-ezb-get-login (server port) |
| 79 | "Return an appropriate EZBounce login for SERVER and PORT. | 79 | "Return an appropriate EZBounce login for SERVER and PORT. |
| 80 | Look up entries in `erc-ezb-login-alist'. If the username or password | 80 | Look up entries in `erc-ezb-login-alist'. If the username or password |
| 81 | in the alist is `nil', prompt for the appropriate values." | 81 | in the alist is nil, prompt for the appropriate values." |
| 82 | (let ((login (cdr (assoc (cons server port) erc-ezb-login-alist)))) | 82 | (let ((login (cdr (assoc (cons server port) erc-ezb-login-alist)))) |
| 83 | (when login | 83 | (when login |
| 84 | (let ((username (car login)) | 84 | (let ((username (car login)) |
diff --git a/lisp/erc/erc-pcomplete.el b/lisp/erc/erc-pcomplete.el index 7f901edfb8f..e46ac68b259 100644 --- a/lisp/erc/erc-pcomplete.el +++ b/lisp/erc/erc-pcomplete.el | |||
| @@ -33,7 +33,7 @@ | |||
| 33 | ;; | 33 | ;; |
| 34 | ;; If you want nickname completions ordered such that the most recent | 34 | ;; If you want nickname completions ordered such that the most recent |
| 35 | ;; speakers are listed first, set | 35 | ;; speakers are listed first, set |
| 36 | ;; `erc-pcomplete-order-nickname-completions' to `t'. | 36 | ;; `erc-pcomplete-order-nickname-completions' to t. |
| 37 | ;; | 37 | ;; |
| 38 | ;; See CREDITS for other contributors. | 38 | ;; See CREDITS for other contributors. |
| 39 | ;; | 39 | ;; |
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index cf422f1cfc5..ad5e1a2468e 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | |||
| 1 | ;; erc.el --- An Emacs Internet Relay Chat client -*- lexical-binding:t -*- | 2 | ;; erc.el --- An Emacs Internet Relay Chat client -*- lexical-binding:t -*- |
| 2 | 3 | ||
| 3 | ;; Copyright (C) 1997-2015 Free Software Foundation, Inc. | 4 | ;; Copyright (C) 1997-2015 Free Software Foundation, Inc. |
| @@ -12,6 +13,7 @@ | |||
| 12 | ;; Kelvin White (kwhite@gnu.org) | 13 | ;; Kelvin White (kwhite@gnu.org) |
| 13 | ;; Maintainer: emacs-devel@gnu.org | 14 | ;; Maintainer: emacs-devel@gnu.org |
| 14 | ;; Keywords: IRC, chat, client, Internet | 15 | ;; Keywords: IRC, chat, client, Internet |
| 16 | |||
| 15 | ;; Version: 5.3 | 17 | ;; Version: 5.3 |
| 16 | 18 | ||
| 17 | ;; This file is part of GNU Emacs. | 19 | ;; This file is part of GNU Emacs. |
| @@ -37,15 +39,13 @@ | |||
| 37 | ;; * http://sv.gnu.org/projects/erc/ | 39 | ;; * http://sv.gnu.org/projects/erc/ |
| 38 | ;; * http://www.emacswiki.org/cgi-bin/wiki/ERC | 40 | ;; * http://www.emacswiki.org/cgi-bin/wiki/ERC |
| 39 | 41 | ||
| 42 | |||
| 43 | |||
| 40 | ;; As of 2006-06-13, ERC development is now hosted on Savannah | 44 | ;; As of 2006-06-13, ERC development is now hosted on Savannah |
| 41 | ;; (http://sv.gnu.org/projects/erc). I invite everyone who wants to | 45 | ;; (http://sv.gnu.org/projects/erc). I invite everyone who wants to |
| 42 | ;; hack on it to contact me <mwolson@gnu.org> in order to get write | 46 | ;; hack on it to contact me <mwolson@gnu.org> in order to get write |
| 43 | ;; access to the shared Arch archive. | 47 | ;; access to the shared Arch archive. |
| 44 | 48 | ||
| 45 | ;; Installation: | ||
| 46 | |||
| 47 | ;; Put erc.el in your load-path, and put (require 'erc) in your .emacs. | ||
| 48 | |||
| 49 | ;; Configuration: | 49 | ;; Configuration: |
| 50 | 50 | ||
| 51 | ;; Use M-x customize-group RET erc RET to get an overview | 51 | ;; Use M-x customize-group RET erc RET to get an overview |
| @@ -258,11 +258,25 @@ If nil, only \"> \" will be shown." | |||
| 258 | (repeat :inline t :tag "Others" (string :tag "IRC Message Type")))) | 258 | (repeat :inline t :tag "Others" (string :tag "IRC Message Type")))) |
| 259 | 259 | ||
| 260 | (defcustom erc-hide-list nil | 260 | (defcustom erc-hide-list nil |
| 261 | "List of IRC type messages to hide. | 261 | "A global list of IRC message types to hide. |
| 262 | A typical value would be '(\"JOIN\" \"PART\" \"QUIT\")." | 262 | A typical value would be '(\"JOIN\" \"PART\" \"QUIT\")." |
| 263 | :group 'erc-ignore | 263 | :group 'erc-ignore |
| 264 | :type 'erc-message-type) | 264 | :type 'erc-message-type) |
| 265 | 265 | ||
| 266 | (defcustom erc-network-hide-list nil | ||
| 267 | "A list of IRC networks to hide message types from. | ||
| 268 | A typical value would be '((\"freenode\" \"MODE\") | ||
| 269 | (\"OFTC\" \"JOIN\" \"QUIT\"))." | ||
| 270 | :group 'erc-ignore | ||
| 271 | :type 'erc-message-type) | ||
| 272 | |||
| 273 | (defcustom erc-channel-hide-list nil | ||
| 274 | "A list of IRC channels to hide message types from. | ||
| 275 | A typical value would be '((\"#emacs\" \"QUIT\" \JOIN\") | ||
| 276 | (\"#erc\" \"NICK\")." | ||
| 277 | :group 'erc-ignore | ||
| 278 | :type 'erc-message-type) | ||
| 279 | |||
| 266 | (defvar erc-session-password nil | 280 | (defvar erc-session-password nil |
| 267 | "The password used for the current session.") | 281 | "The password used for the current session.") |
| 268 | (make-variable-buffer-local 'erc-session-password) | 282 | (make-variable-buffer-local 'erc-session-password) |
| @@ -2616,15 +2630,36 @@ otherwise `erc-server-announced-name'. SERVER is matched against | |||
| 2616 | erc-common-server-suffixes)) | 2630 | erc-common-server-suffixes)) |
| 2617 | erc-server-announced-name))) | 2631 | erc-server-announced-name))) |
| 2618 | 2632 | ||
| 2633 | (defun erc-add-targets (scope target-list) | ||
| 2634 | (let ((targets | ||
| 2635 | (mapcar (lambda (targets) (member scope targets)) target-list))) | ||
| 2636 | (cdr (apply 'append (delete nil targets))))) | ||
| 2637 | |||
| 2619 | (defun erc-hide-current-message-p (parsed) | 2638 | (defun erc-hide-current-message-p (parsed) |
| 2620 | "Predicate indicating whether the parsed ERC response PARSED should be hidden. | 2639 | "Predicate indicating whether the parsed ERC response PARSED should be hidden. |
| 2621 | 2640 | ||
| 2622 | Messages are always hidden if the message type of PARSED appears in | 2641 | Messages are always hidden if the message type of PARSED appears in |
| 2623 | `erc-hide-list'. In addition, messages whose type is a member of | 2642 | `erc-hide-list'. Message types that appear in `erc-network-hide-list' |
| 2624 | `erc-lurker-hide-list' are hidden if `erc-lurker-p' returns true." | 2643 | or `erc-channel-hide-list' are are only hidden if the target matches |
| 2644 | the network or channel in the list. In addition, messages whose type | ||
| 2645 | is a member of `erc-lurker-hide-list' are hidden if `erc-lurker-p' | ||
| 2646 | returns non-nil." | ||
| 2625 | (let* ((command (erc-response.command parsed)) | 2647 | (let* ((command (erc-response.command parsed)) |
| 2626 | (sender (car (erc-parse-user (erc-response.sender parsed))))) | 2648 | (sender (car (erc-parse-user (erc-response.sender parsed)))) |
| 2649 | (channel (nth 1 (erc-response.command-args parsed))) | ||
| 2650 | (network (or (and (fboundp 'erc-network-name) (erc-network-name)) | ||
| 2651 | (erc-shorten-server-name | ||
| 2652 | (or erc-server-announced-name | ||
| 2653 | erc-session-server)))) | ||
| 2654 | (current-hide-list | ||
| 2655 | (when erc-network-hide-list | ||
| 2656 | (erc-add-targets network erc-network-hide-list))) | ||
| 2657 | (current-hide-list | ||
| 2658 | (apply 'append current-hide-list | ||
| 2659 | (when erc-channel-hide-list | ||
| 2660 | (erc-add-targets channel erc-channel-hide-list))))) | ||
| 2627 | (or (member command erc-hide-list) | 2661 | (or (member command erc-hide-list) |
| 2662 | (member command current-hide-list) | ||
| 2628 | (and (member command erc-lurker-hide-list) (erc-lurker-p sender))))) | 2663 | (and (member command erc-lurker-hide-list) (erc-lurker-p sender))))) |
| 2629 | 2664 | ||
| 2630 | (defun erc-display-message (parsed type buffer msg &rest args) | 2665 | (defun erc-display-message (parsed type buffer msg &rest args) |
| @@ -4150,7 +4185,7 @@ See also `erc-display-error-notice'." | |||
| 4150 | ;; server's setting if we haven't | 4185 | ;; server's setting if we haven't |
| 4151 | ;; established a connection yet | 4186 | ;; established a connection yet |
| 4152 | (- 9 (length erc-nick-uniquifier)))) | 4187 | (- 9 (length erc-nick-uniquifier)))) |
| 4153 | erc-nick-uniquifier))) | 4188 | erc-nick-uniqifier))) |
| 4154 | (erc-cmd-NICK newnick) | 4189 | (erc-cmd-NICK newnick) |
| 4155 | (erc-display-error-notice | 4190 | (erc-display-error-notice |
| 4156 | nil | 4191 | nil |
diff --git a/lisp/eshell/em-term.el b/lisp/eshell/em-term.el index 4a6ac235449..9ac281372cf 100644 --- a/lisp/eshell/em-term.el +++ b/lisp/eshell/em-term.el | |||
| @@ -132,6 +132,13 @@ character to the invoked process." | |||
| 132 | :type 'boolean | 132 | :type 'boolean |
| 133 | :group 'eshell-term) | 133 | :group 'eshell-term) |
| 134 | 134 | ||
| 135 | (defcustom eshell-destroy-buffer-when-process-dies nil | ||
| 136 | "If non-nil, term buffers are destroyed after their processes die. | ||
| 137 | WARNING: Setting this to non-nil may result in unexpected | ||
| 138 | behavior for short-lived processes, see bug#18108." | ||
| 139 | :type 'boolean | ||
| 140 | :group 'eshell-term) | ||
| 141 | |||
| 135 | ;;; Internal Variables: | 142 | ;;; Internal Variables: |
| 136 | 143 | ||
| 137 | (defvar eshell-parent-buffer) | 144 | (defvar eshell-parent-buffer) |
| @@ -190,20 +197,24 @@ allowed." | |||
| 190 | nil) | 197 | nil) |
| 191 | 198 | ||
| 192 | ;; Process sentinels receive two arguments. | 199 | ;; Process sentinels receive two arguments. |
| 193 | (defun eshell-term-sentinel (proc _string) | 200 | (defun eshell-term-sentinel (proc msg) |
| 194 | "Destroy the buffer visiting PROC." | 201 | "Clean up the buffer visiting PROC. |
| 195 | (let ((proc-buf (process-buffer proc))) | 202 | If `eshell-destroy-buffer-when-process-dies' is non-nil, destroy |
| 196 | (when (and proc-buf (buffer-live-p proc-buf) | 203 | the buffer." |
| 197 | (not (eq 'run (process-status proc))) | 204 | (term-sentinel proc msg) ;; First call the normal term sentinel. |
| 198 | (= (process-exit-status proc) 0)) | 205 | (when eshell-destroy-buffer-when-process-dies |
| 199 | (if (eq (current-buffer) proc-buf) | 206 | (let ((proc-buf (process-buffer proc))) |
| 200 | (let ((buf (and (boundp 'eshell-parent-buffer) | 207 | (when (and proc-buf (buffer-live-p proc-buf) |
| 201 | eshell-parent-buffer | 208 | (not (eq 'run (process-status proc))) |
| 202 | (buffer-live-p eshell-parent-buffer) | 209 | (= (process-exit-status proc) 0)) |
| 203 | eshell-parent-buffer))) | 210 | (if (eq (current-buffer) proc-buf) |
| 204 | (if buf | 211 | (let ((buf (and (boundp 'eshell-parent-buffer) |
| 205 | (switch-to-buffer buf)))) | 212 | eshell-parent-buffer |
| 206 | (kill-buffer proc-buf)))) | 213 | (buffer-live-p eshell-parent-buffer) |
| 214 | eshell-parent-buffer))) | ||
| 215 | (if buf | ||
| 216 | (switch-to-buffer buf)))) | ||
| 217 | (kill-buffer proc-buf))))) | ||
| 207 | 218 | ||
| 208 | ;; jww (1999-09-17): The code below will allow Eshell to send input | 219 | ;; jww (1999-09-17): The code below will allow Eshell to send input |
| 209 | ;; characters directly to the currently running interactive process. | 220 | ;; characters directly to the currently running interactive process. |
diff --git a/lisp/eshell/esh-arg.el b/lisp/eshell/esh-arg.el index a5f697f037a..49ba72735da 100644 --- a/lisp/eshell/esh-arg.el +++ b/lisp/eshell/esh-arg.el | |||
| @@ -357,22 +357,31 @@ after are both returned." | |||
| 357 | (goto-char (1+ end))))))) | 357 | (goto-char (1+ end))))))) |
| 358 | 358 | ||
| 359 | (defun eshell-parse-special-reference () | 359 | (defun eshell-parse-special-reference () |
| 360 | "Parse a special syntax reference, of the form '#<type arg>'." | 360 | "Parse a special syntax reference, of the form '#<args>'. |
| 361 | (if (and (not eshell-current-argument) | 361 | |
| 362 | (not eshell-current-quoted) | 362 | args := `type' `whitespace' `arbitrary-args' | `arbitrary-args' |
| 363 | (looking-at "#<\\(buffer\\|process\\)\\s-")) | 363 | type := \"buffer\" or \"process\" |
| 364 | (let ((here (point))) | 364 | arbitrary-args := any string of characters. |
| 365 | (goto-char (match-end 0)) | 365 | |
| 366 | (let* ((buffer-p (string= (match-string 1) "buffer")) | 366 | If the form has no 'type', the syntax is parsed as if 'type' were |
| 367 | (end (eshell-find-delimiter ?\< ?\>))) | 367 | \"buffer\"." |
| 368 | (if (not end) | 368 | (when (and (not eshell-current-argument) |
| 369 | (throw 'eshell-incomplete ?\<) | 369 | (not eshell-current-quoted) |
| 370 | (if (eshell-arg-delimiter (1+ end)) | 370 | (looking-at "#<\\(\\(buffer\\|process\\)\\s-\\)?")) |
| 371 | (prog1 | 371 | (let ((here (point))) |
| 372 | (list (if buffer-p 'get-buffer-create 'get-process) | 372 | (goto-char (match-end 0)) ;; Go to the end of the match. |
| 373 | (buffer-substring-no-properties (point) end)) | 373 | (let ((buffer-p (if (match-string 1) |
| 374 | (goto-char (1+ end))) | 374 | (string= (match-string 2) "buffer") |
| 375 | (ignore (goto-char here)))))))) | 375 | t)) ;; buffer-p is non-nil by default. |
| 376 | (end (eshell-find-delimiter ?\< ?\>))) | ||
| 377 | (when (not end) | ||
| 378 | (throw 'eshell-incomplete ?\<)) | ||
| 379 | (if (eshell-arg-delimiter (1+ end)) | ||
| 380 | (prog1 | ||
| 381 | (list (if buffer-p 'get-buffer-create 'get-process) | ||
| 382 | (buffer-substring-no-properties (point) end)) | ||
| 383 | (goto-char (1+ end))) | ||
| 384 | (ignore (goto-char here))))))) | ||
| 376 | 385 | ||
| 377 | (defun eshell-parse-delimiter () | 386 | (defun eshell-parse-delimiter () |
| 378 | "Parse an argument delimiter, which is essentially a command operator." | 387 | "Parse an argument delimiter, which is essentially a command operator." |
diff --git a/lisp/eshell/esh-io.el b/lisp/eshell/esh-io.el index 7dfc39f3202..dc731bc928a 100644 --- a/lisp/eshell/esh-io.el +++ b/lisp/eshell/esh-io.el | |||
| @@ -31,6 +31,18 @@ | |||
| 31 | ;; consistent with most shells. Therefore, only unique features are | 31 | ;; consistent with most shells. Therefore, only unique features are |
| 32 | ;; mentioned here. | 32 | ;; mentioned here. |
| 33 | ;; | 33 | ;; |
| 34 | ;;;_* Redirect to a Buffer or Process | ||
| 35 | ;; | ||
| 36 | ;; Buffers and processes can be named with '#<buffer buffer-name>' and | ||
| 37 | ;; '#<process process-name>', respectively. As a shorthand, | ||
| 38 | ;; '#<buffer-name>' without the explicit "buffer" arg is equivalent to | ||
| 39 | ;; '#<buffer buffer-name>'. | ||
| 40 | ;; | ||
| 41 | ;; echo hello > #<buffer *scratch*> # Overwrite '*scratch*' with 'hello'. | ||
| 42 | ;; echo hello > #<*scratch*> # Same as the command above. | ||
| 43 | ;; | ||
| 44 | ;; echo hello > #<process shell> # Pipe "hello" into the shell process. | ||
| 45 | ;; | ||
| 34 | ;;;_* Insertion | 46 | ;;;_* Insertion |
| 35 | ;; | 47 | ;; |
| 36 | ;; To insert at the location of point in a buffer, use '>>>': | 48 | ;; To insert at the location of point in a buffer, use '>>>': |
| @@ -98,19 +110,6 @@ other buffers) ." | |||
| 98 | :type 'integer | 110 | :type 'integer |
| 99 | :group 'eshell-io) | 111 | :group 'eshell-io) |
| 100 | 112 | ||
| 101 | (defcustom eshell-buffer-shorthand nil | ||
| 102 | "If non-nil, a symbol name can be used for a buffer in redirection. | ||
| 103 | If nil, redirecting to a buffer requires buffer name syntax. If this | ||
| 104 | variable is set, redirection directly to Lisp symbols will be | ||
| 105 | impossible. | ||
| 106 | |||
| 107 | Example: | ||
| 108 | |||
| 109 | echo hello > '*scratch* ; works if `eshell-buffer-shorthand' is t | ||
| 110 | echo hello > #<buffer *scratch*> ; always works" | ||
| 111 | :type 'boolean | ||
| 112 | :group 'eshell-io) | ||
| 113 | |||
| 114 | (defcustom eshell-print-queue-size 5 | 113 | (defcustom eshell-print-queue-size 5 |
| 115 | "The size of the print queue, for doing buffered printing. | 114 | "The size of the print queue, for doing buffered printing. |
| 116 | This is basically a speed enhancement, to avoid blocking the Lisp code | 115 | This is basically a speed enhancement, to avoid blocking the Lisp code |
| @@ -355,21 +354,14 @@ it defaults to `insert'." | |||
| 355 | (goto-char (point-max)))) | 354 | (goto-char (point-max)))) |
| 356 | (point-marker)))))) | 355 | (point-marker)))))) |
| 357 | 356 | ||
| 358 | ((or (bufferp target) | 357 | |
| 359 | (and (boundp 'eshell-buffer-shorthand) | 358 | ((bufferp target) |
| 360 | (symbol-value 'eshell-buffer-shorthand) | 359 | (with-current-buffer target |
| 361 | (symbolp target) | 360 | (cond ((eq mode 'overwrite) |
| 362 | (not (memq target '(t nil))))) | 361 | (erase-buffer)) |
| 363 | (let ((buf (if (bufferp target) | 362 | ((eq mode 'append) |
| 364 | target | 363 | (goto-char (point-max)))) |
| 365 | (get-buffer-create | 364 | (point-marker))) |
| 366 | (symbol-name target))))) | ||
| 367 | (with-current-buffer buf | ||
| 368 | (cond ((eq mode 'overwrite) | ||
| 369 | (erase-buffer)) | ||
| 370 | ((eq mode 'append) | ||
| 371 | (goto-char (point-max)))) | ||
| 372 | (point-marker)))) | ||
| 373 | 365 | ||
| 374 | ((functionp target) nil) | 366 | ((functionp target) nil) |
| 375 | 367 | ||
diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el index 222e801301b..0dac4780690 100644 --- a/lisp/eshell/esh-mode.el +++ b/lisp/eshell/esh-mode.el | |||
| @@ -206,7 +206,7 @@ This is used by `eshell-watch-for-password-prompt'." | |||
| 206 | 206 | ||
| 207 | ;; Internal Variables: | 207 | ;; Internal Variables: |
| 208 | 208 | ||
| 209 | ;; these are only set to `nil' initially for the sake of the | 209 | ;; these are only set to nil initially for the sake of the |
| 210 | ;; byte-compiler, when compiling other files which `require' this one | 210 | ;; byte-compiler, when compiling other files which `require' this one |
| 211 | (defvar eshell-mode nil) | 211 | (defvar eshell-mode nil) |
| 212 | (defvar eshell-mode-map nil) | 212 | (defvar eshell-mode-map nil) |
diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el index 697f97e0460..170779fc5cd 100644 --- a/lisp/eshell/esh-util.el +++ b/lisp/eshell/esh-util.el | |||
| @@ -33,7 +33,7 @@ | |||
| 33 | ;;; User Variables: | 33 | ;;; User Variables: |
| 34 | 34 | ||
| 35 | (defcustom eshell-stringify-t t | 35 | (defcustom eshell-stringify-t t |
| 36 | "If non-nil, the string representation of t is 't'. | 36 | "If non-nil, the string representation of t is \"t\". |
| 37 | If nil, t will be represented only in the exit code of the function, | 37 | If nil, t will be represented only in the exit code of the function, |
| 38 | and not printed as a string. This causes Lisp functions to behave | 38 | and not printed as a string. This causes Lisp functions to behave |
| 39 | similarly to external commands, as far as successful result output." | 39 | similarly to external commands, as far as successful result output." |
diff --git a/lisp/face-remap.el b/lisp/face-remap.el index 3ec074b5599..93eec5bd13c 100644 --- a/lisp/face-remap.el +++ b/lisp/face-remap.el | |||
| @@ -187,7 +187,7 @@ of face attribute/value pairs, like in a `face' text property. | |||
| 187 | 187 | ||
| 188 | If SPECS is empty, call `face-remap-reset-base' to use the normal | 188 | If SPECS is empty, call `face-remap-reset-base' to use the normal |
| 189 | definition of FACE as the base remapping; note that this is | 189 | definition of FACE as the base remapping; note that this is |
| 190 | different from SPECS containing a single value `nil', which means | 190 | different from SPECS containing a single value nil, which means |
| 191 | not to inherit from the global definition of FACE at all." | 191 | not to inherit from the global definition of FACE at all." |
| 192 | (while (and (consp specs) (not (null (car specs))) (null (cdr specs))) | 192 | (while (and (consp specs) (not (null (car specs))) (null (cdr specs))) |
| 193 | (setq specs (car specs))) | 193 | (setq specs (car specs))) |
diff --git a/lisp/facemenu.el b/lisp/facemenu.el index 2c246b44d54..3d5894309df 100644 --- a/lisp/facemenu.el +++ b/lisp/facemenu.el | |||
| @@ -458,7 +458,7 @@ These special properties include `invisible', `intangible' and `read-only'." | |||
| 458 | 458 | ||
| 459 | (defcustom list-colors-sort nil | 459 | (defcustom list-colors-sort nil |
| 460 | "Color sort order for `list-colors-display'. | 460 | "Color sort order for `list-colors-display'. |
| 461 | `nil' means default implementation-dependent order (defined in `x-colors'). | 461 | nil means default implementation-dependent order (defined in `x-colors'). |
| 462 | `name' sorts by color name. | 462 | `name' sorts by color name. |
| 463 | `rgb' sorts by red, green, blue components. | 463 | `rgb' sorts by red, green, blue components. |
| 464 | `(rgb-dist . COLOR)' sorts by the RGB distance to the specified color. | 464 | `(rgb-dist . COLOR)' sorts by the RGB distance to the specified color. |
diff --git a/lisp/faces.el b/lisp/faces.el index 54e444b730a..9c087c99d56 100644 --- a/lisp/faces.el +++ b/lisp/faces.el | |||
| @@ -619,7 +619,7 @@ VALUE must be a string specifying the font family | |||
| 619 | `:foundry' | 619 | `:foundry' |
| 620 | 620 | ||
| 621 | VALUE must be a string specifying the font foundry, | 621 | VALUE must be a string specifying the font foundry, |
| 622 | e.g. ``adobe''. If a font foundry is specified, wild-cards `*' | 622 | e.g., \"adobe\". If a font foundry is specified, wild-cards `*' |
| 623 | and `?' are allowed. | 623 | and `?' are allowed. |
| 624 | 624 | ||
| 625 | `:width' | 625 | `:width' |
| @@ -892,7 +892,7 @@ where COLOR is a string or `foreground-color', and STYLE is either | |||
| 892 | foreground color. :style may be omitted, which means to use a line. | 892 | foreground color. :style may be omitted, which means to use a line. |
| 893 | 893 | ||
| 894 | FRAME nil or not specified means change face on all frames. | 894 | FRAME nil or not specified means change face on all frames. |
| 895 | Use `set-face-attribute' to ``unspecify'' underlining." | 895 | Use `set-face-attribute' to \"unspecify\" underlining." |
| 896 | (interactive (read-face-and-attribute :underline)) | 896 | (interactive (read-face-and-attribute :underline)) |
| 897 | (set-face-attribute face frame :underline underline)) | 897 | (set-face-attribute face frame :underline underline)) |
| 898 | 898 | ||
| @@ -905,7 +905,7 @@ Use `set-face-attribute' to ``unspecify'' underlining." | |||
| 905 | INVERSE-VIDEO-P non-nil means FACE displays explicitly in inverse video. | 905 | INVERSE-VIDEO-P non-nil means FACE displays explicitly in inverse video. |
| 906 | INVERSE-VIDEO-P nil means FACE explicitly is not in inverse video. | 906 | INVERSE-VIDEO-P nil means FACE explicitly is not in inverse video. |
| 907 | FRAME nil or not specified means change face on all frames. | 907 | FRAME nil or not specified means change face on all frames. |
| 908 | Use `set-face-attribute' to ``unspecify'' the inverse video attribute." | 908 | Use `set-face-attribute' to \"unspecify\" the inverse video attribute." |
| 909 | (interactive | 909 | (interactive |
| 910 | (let ((list (read-face-and-attribute :inverse-video))) | 910 | (let ((list (read-face-and-attribute :inverse-video))) |
| 911 | (list (car list) (if (cadr list) t)))) | 911 | (list (car list) (if (cadr list) t)))) |
| @@ -2042,7 +2042,7 @@ Value is the new parameter list." | |||
| 2042 | "Create and return a frame with frame parameters PARAMETERS. | 2042 | "Create and return a frame with frame parameters PARAMETERS. |
| 2043 | If PARAMETERS specify a frame name, handle X geometry resources | 2043 | If PARAMETERS specify a frame name, handle X geometry resources |
| 2044 | for that name. If PARAMETERS includes a `reverse' parameter, or | 2044 | for that name. If PARAMETERS includes a `reverse' parameter, or |
| 2045 | the X resource ``reverseVideo'' is present, handle that." | 2045 | the X resource \"reverseVideo\" is present, handle that." |
| 2046 | (setq parameters (x-handle-named-frame-geometry parameters)) | 2046 | (setq parameters (x-handle-named-frame-geometry parameters)) |
| 2047 | (let* ((params (copy-tree parameters)) | 2047 | (let* ((params (copy-tree parameters)) |
| 2048 | (visibility-spec (assq 'visibility parameters)) | 2048 | (visibility-spec (assq 'visibility parameters)) |
diff --git a/lisp/files.el b/lisp/files.el index ef6ac7b8c92..d82ff5e865f 100644 --- a/lisp/files.el +++ b/lisp/files.el | |||
| @@ -1092,14 +1092,14 @@ Tip: You can use this expansion of remote identifier components | |||
| 1092 | 1092 | ||
| 1093 | (defcustom remote-file-name-inhibit-cache 10 | 1093 | (defcustom remote-file-name-inhibit-cache 10 |
| 1094 | "Whether to use the remote file-name cache for read access. | 1094 | "Whether to use the remote file-name cache for read access. |
| 1095 | When `nil', never expire cached values (caution) | 1095 | When nil, never expire cached values (caution) |
| 1096 | When `t', never use the cache (safe, but may be slow) | 1096 | When t, never use the cache (safe, but may be slow) |
| 1097 | A number means use cached values for that amount of seconds since caching. | 1097 | A number means use cached values for that amount of seconds since caching. |
| 1098 | 1098 | ||
| 1099 | The attributes of remote files are cached for better performance. | 1099 | The attributes of remote files are cached for better performance. |
| 1100 | If they are changed outside of Emacs's control, the cached values | 1100 | If they are changed outside of Emacs's control, the cached values |
| 1101 | become invalid, and must be reread. If you are sure that nothing | 1101 | become invalid, and must be reread. If you are sure that nothing |
| 1102 | other than Emacs changes the files, you can set this variable to `nil'. | 1102 | other than Emacs changes the files, you can set this variable to nil. |
| 1103 | 1103 | ||
| 1104 | If a remote file is checked regularly, it might be a good idea to | 1104 | If a remote file is checked regularly, it might be a good idea to |
| 1105 | let-bind this variable to a value less than the interval between | 1105 | let-bind this variable to a value less than the interval between |
diff --git a/lisp/forms.el b/lisp/forms.el index aa57a667ae7..bccb4a05756 100644 --- a/lisp/forms.el +++ b/lisp/forms.el | |||
| @@ -1755,7 +1755,7 @@ Otherwise enables edit mode if the visited file is writable." | |||
| 1755 | With ARG: store the record after the current one. | 1755 | With ARG: store the record after the current one. |
| 1756 | If `forms-new-record-filter' contains the name of a function, | 1756 | If `forms-new-record-filter' contains the name of a function, |
| 1757 | it is called to fill (some of) the fields with default values. | 1757 | it is called to fill (some of) the fields with default values. |
| 1758 | If `forms-insert-after is non-nil, the default behavior is to insert | 1758 | If `forms-insert-after' is non-nil, the default behavior is to insert |
| 1759 | after the current record." | 1759 | after the current record." |
| 1760 | 1760 | ||
| 1761 | (interactive "P") | 1761 | (interactive "P") |
diff --git a/lisp/gnus/canlock.el b/lisp/gnus/canlock.el index 4082b8723d1..6ebd5338087 100644 --- a/lisp/gnus/canlock.el +++ b/lisp/gnus/canlock.el | |||
| @@ -35,8 +35,9 @@ | |||
| 35 | ;; Verifying Cancel-Lock is mainly a function of news servers, however, | 35 | ;; Verifying Cancel-Lock is mainly a function of news servers, however, |
| 36 | ;; you can verify your own article using the command `canlock-verify' in | 36 | ;; you can verify your own article using the command `canlock-verify' in |
| 37 | ;; the (raw) article buffer. You will be prompted for the password for | 37 | ;; the (raw) article buffer. You will be prompted for the password for |
| 38 | ;; each time if the option `canlock-password' or `canlock-password-for- | 38 | ;; each time if the option `canlock-password' or |
| 39 | ;; verify' is nil. Note that setting these options is a bit unsafe. | 39 | ;; `canlock-password-for-verify' is nil. Note that setting these |
| 40 | ;; options is a bit unsafe. | ||
| 40 | 41 | ||
| 41 | ;;; Code: | 42 | ;;; Code: |
| 42 | 43 | ||
diff --git a/lisp/gnus/deuglify.el b/lisp/gnus/deuglify.el index 331b99b8652..b2a725b5402 100644 --- a/lisp/gnus/deuglify.el +++ b/lisp/gnus/deuglify.el | |||
| @@ -78,7 +78,7 @@ | |||
| 78 | ;; `gnus-outlook-deuglify-unwrap-stop-chars'. Setting this to ".?!" | 78 | ;; `gnus-outlook-deuglify-unwrap-stop-chars'. Setting this to ".?!" |
| 79 | ;; inhibits unwrapping if the cited line ends with a full stop, | 79 | ;; inhibits unwrapping if the cited line ends with a full stop, |
| 80 | ;; question mark or exclamation mark. Note that this variable | 80 | ;; question mark or exclamation mark. Note that this variable |
| 81 | ;; defaults to `nil', triggering a few false positives but generally | 81 | ;; defaults to nil, triggering a few false positives but generally |
| 82 | ;; giving you better results. | 82 | ;; giving you better results. |
| 83 | ;; | 83 | ;; |
| 84 | ;; Unwrapping works on every level of citation. Thus you will be able | 84 | ;; Unwrapping works on every level of citation. Thus you will be able |
| @@ -110,7 +110,7 @@ | |||
| 110 | ;; > Bye, John | 110 | ;; > Bye, John |
| 111 | ;; | 111 | ;; |
| 112 | ;; Repairing the attribution line will be done by function | 112 | ;; Repairing the attribution line will be done by function |
| 113 | ;; `gnus-article-outlook-repair-attribution which calls other function that | 113 | ;; `gnus-article-outlook-repair-attribution' which calls other function that |
| 114 | ;; try to recognize and repair broken attribution lines. See variable | 114 | ;; try to recognize and repair broken attribution lines. See variable |
| 115 | ;; `gnus-outlook-deuglify-attrib-cut-regexp' for stuff that should be | 115 | ;; `gnus-outlook-deuglify-attrib-cut-regexp' for stuff that should be |
| 116 | ;; cut off from the beginning of an attribution line and variable | 116 | ;; cut off from the beginning of an attribution line and variable |
| @@ -121,7 +121,7 @@ | |||
| 121 | ;; Rearranging the article so that the cited text appears above the | 121 | ;; Rearranging the article so that the cited text appears above the |
| 122 | ;; new text will be done by function | 122 | ;; new text will be done by function |
| 123 | ;; `gnus-article-outlook-rearrange-citation'. This function calls | 123 | ;; `gnus-article-outlook-rearrange-citation'. This function calls |
| 124 | ;; `gnus-article-outlook-repair-attribution to find and repair an attribution | 124 | ;; `gnus-article-outlook-repair-attribution' to find and repair an attribution |
| 125 | ;; line. | 125 | ;; line. |
| 126 | ;; | 126 | ;; |
| 127 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 127 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| @@ -177,14 +177,14 @@ | |||
| 177 | ;; As I said before there may (or will) be a few false positives on | 177 | ;; As I said before there may (or will) be a few false positives on |
| 178 | ;; unwrapping cited lines with `gnus-article-outlook-unwrap-lines'. | 178 | ;; unwrapping cited lines with `gnus-article-outlook-unwrap-lines'. |
| 179 | ;; | 179 | ;; |
| 180 | ;; `gnus-article-outlook-repair-attribution will only fix the first | 180 | ;; `gnus-article-outlook-repair-attribution' will only fix the first |
| 181 | ;; attribution line found in the article. Furthermore it fixed to | 181 | ;; attribution line found in the article. Furthermore it fixed to |
| 182 | ;; certain kinds of attributions. And there may be horribly many | 182 | ;; certain kinds of attributions. And there may be horribly many |
| 183 | ;; false positives, vanishing lines and so on -- so don't trust your | 183 | ;; false positives, vanishing lines and so on -- so don't trust your |
| 184 | ;; eyes. Again I recommend manual invocation. | 184 | ;; eyes. Again I recommend manual invocation. |
| 185 | ;; | 185 | ;; |
| 186 | ;; `gnus-article-outlook-rearrange-citation' carries all the limitations of | 186 | ;; `gnus-article-outlook-rearrange-citation' carries all the limitations of |
| 187 | ;; `gnus-article-outlook-repair-attribution. | 187 | ;; `gnus-article-outlook-repair-attribution'. |
| 188 | ;; | 188 | ;; |
| 189 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 189 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| 190 | ;; | 190 | ;; |
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 989a4247800..7630afbdcf4 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el | |||
| @@ -1256,7 +1256,7 @@ how to control what it hides." | |||
| 1256 | :type gnus-article-treat-custom) | 1256 | :type gnus-article-treat-custom) |
| 1257 | 1257 | ||
| 1258 | (defcustom gnus-treat-strip-list-identifiers 'head | 1258 | (defcustom gnus-treat-strip-list-identifiers 'head |
| 1259 | "Strip list identifiers from `gnus-list-identifiers`. | 1259 | "Strip list identifiers from `gnus-list-identifiers'. |
| 1260 | Valid values are nil, t, `head', `first', `last', an integer or a | 1260 | Valid values are nil, t, `head', `first', `last', an integer or a |
| 1261 | predicate. See Info node `(gnus)Customizing Articles'." | 1261 | predicate. See Info node `(gnus)Customizing Articles'." |
| 1262 | :version "21.1" | 1262 | :version "21.1" |
| @@ -1735,7 +1735,7 @@ regexp." | |||
| 1735 | (modify-syntax-entry ?` " " table) | 1735 | (modify-syntax-entry ?` " " table) |
| 1736 | table) | 1736 | table) |
| 1737 | "Syntax table used in article mode buffers. | 1737 | "Syntax table used in article mode buffers. |
| 1738 | Initialized from `text-mode-syntax-table.") | 1738 | Initialized from `text-mode-syntax-table'.") |
| 1739 | 1739 | ||
| 1740 | (defvar gnus-save-article-buffer nil) | 1740 | (defvar gnus-save-article-buffer nil) |
| 1741 | 1741 | ||
diff --git a/lisp/gnus/gnus-cus.el b/lisp/gnus/gnus-cus.el index 9271322f4ab..93b7a1ba635 100644 --- a/lisp/gnus/gnus-cus.el +++ b/lisp/gnus/gnus-cus.el | |||
| @@ -272,7 +272,7 @@ DOC is a documentation string for the parameter.") | |||
| 272 | (repeat (list (string :format "%v" :tag "File name")))) | 272 | (repeat (list (string :format "%v" :tag "File name")))) |
| 273 | "Which score files to use when using score to select articles to fetch. | 273 | "Which score files to use when using score to select articles to fetch. |
| 274 | 274 | ||
| 275 | `nil' | 275 | nil |
| 276 | All articles will be scored to zero (0). | 276 | All articles will be scored to zero (0). |
| 277 | 277 | ||
| 278 | `file' | 278 | `file' |
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index ff839d7f18c..dbeada286b7 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el | |||
| @@ -3285,7 +3285,7 @@ mail messages or news articles in files that have numeric names." | |||
| 3285 | 3285 | ||
| 3286 | Rights is a string listing a (possibly empty) set of alphanumeric | 3286 | Rights is a string listing a (possibly empty) set of alphanumeric |
| 3287 | characters, each character listing a set of operations which is being | 3287 | characters, each character listing a set of operations which is being |
| 3288 | controlled. Letters are reserved for ``standard'' rights, listed | 3288 | controlled. Letters are reserved for \"standard\" rights, listed |
| 3289 | below. Digits are reserved for implementation or site defined rights. | 3289 | below. Digits are reserved for implementation or site defined rights. |
| 3290 | 3290 | ||
| 3291 | l - lookup (mailbox is visible to LIST/LSUB commands) | 3291 | l - lookup (mailbox is visible to LIST/LSUB commands) |
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 1d8ad8e6acb..37a707ebe64 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el | |||
| @@ -4376,7 +4376,7 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns nil otherwise." | |||
| 4376 | ;; The last case ignores an existing entry, except it adds any | 4376 | ;; The last case ignores an existing entry, except it adds any |
| 4377 | ;; additional Xrefs (in case the two articles came from different | 4377 | ;; additional Xrefs (in case the two articles came from different |
| 4378 | ;; servers. | 4378 | ;; servers. |
| 4379 | ;; Also sets `header' to `nil' meaning that the `dependencies' | 4379 | ;; Also sets `header' to nil meaning that the `dependencies' |
| 4380 | ;; table was *not* modified. | 4380 | ;; table was *not* modified. |
| 4381 | (t | 4381 | (t |
| 4382 | (mail-header-set-xref | 4382 | (mail-header-set-xref |
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 8bb0a78a446..9e813e6dfd1 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el | |||
| @@ -1123,7 +1123,7 @@ e.g. using `gnus-posting-styles': | |||
| 1123 | 1123 | ||
| 1124 | (defcustom message-cite-style nil | 1124 | (defcustom message-cite-style nil |
| 1125 | "*The overall style to be used when yanking cited text. | 1125 | "*The overall style to be used when yanking cited text. |
| 1126 | Value is either `nil' (no variable overrides) or a let-style list | 1126 | Value is either nil (no variable overrides) or a let-style list |
| 1127 | of pairs (VARIABLE VALUE) that will be bound in | 1127 | of pairs (VARIABLE VALUE) that will be bound in |
| 1128 | `message-yank-original' to do the quoting. | 1128 | `message-yank-original' to do the quoting. |
| 1129 | 1129 | ||
diff --git a/lisp/gnus/nndoc.el b/lisp/gnus/nndoc.el index c62697b6939..70d803faf54 100644 --- a/lisp/gnus/nndoc.el +++ b/lisp/gnus/nndoc.el | |||
| @@ -199,7 +199,7 @@ from the document.") | |||
| 199 | ;; lines in the body. For MIME dissections only, ARTICLE-INSERT [5] and | 199 | ;; lines in the body. For MIME dissections only, ARTICLE-INSERT [5] and |
| 200 | ;; SUMMARY-INSERT [6] give headers to insert for full article or summary line | 200 | ;; SUMMARY-INSERT [6] give headers to insert for full article or summary line |
| 201 | ;; generation, respectively. Other headers usually follow directly from the | 201 | ;; generation, respectively. Other headers usually follow directly from the |
| 202 | ;; buffer. Value `nil' means no insert. | 202 | ;; buffer. Value nil means no insert. |
| 203 | (defvoo nndoc-dissection-alist nil) | 203 | (defvoo nndoc-dissection-alist nil) |
| 204 | (defvoo nndoc-prepare-body-function nil) | 204 | (defvoo nndoc-prepare-body-function nil) |
| 205 | (defvoo nndoc-generate-head-function nil) | 205 | (defvoo nndoc-generate-head-function nil) |
diff --git a/lisp/gnus/nnmaildir.el b/lisp/gnus/nnmaildir.el index 21fa5b37aa4..da3d5460c2b 100644 --- a/lisp/gnus/nnmaildir.el +++ b/lisp/gnus/nnmaildir.el | |||
| @@ -84,13 +84,13 @@ Some of the FLAGS correspond to Gnus marks.") | |||
| 84 | 84 | ||
| 85 | (defsubst nnmaildir--mark-to-flag (mark) | 85 | (defsubst nnmaildir--mark-to-flag (mark) |
| 86 | "Find the Maildir flag that corresponds to MARK (an atom). | 86 | "Find the Maildir flag that corresponds to MARK (an atom). |
| 87 | Return a character, or `nil' if not found. | 87 | Return a character, or nil if not found. |
| 88 | See `nnmaildir-flag-mark-mapping'." | 88 | See `nnmaildir-flag-mark-mapping'." |
| 89 | (car (rassq mark nnmaildir-flag-mark-mapping))) | 89 | (car (rassq mark nnmaildir-flag-mark-mapping))) |
| 90 | 90 | ||
| 91 | (defsubst nnmaildir--flag-to-mark (flag) | 91 | (defsubst nnmaildir--flag-to-mark (flag) |
| 92 | "Find the Gnus mark that corresponds to FLAG (a character). | 92 | "Find the Gnus mark that corresponds to FLAG (a character). |
| 93 | Return an atom, or `nil' if not found. | 93 | Return an atom, or nil if not found. |
| 94 | See `nnmaildir-flag-mark-mapping'." | 94 | See `nnmaildir-flag-mark-mapping'." |
| 95 | (cdr (assq flag nnmaildir-flag-mark-mapping))) | 95 | (cdr (assq flag nnmaildir-flag-mark-mapping))) |
| 96 | 96 | ||
diff --git a/lisp/gnus/rfc2047.el b/lisp/gnus/rfc2047.el index b2520b26af9..ea558d75a20 100644 --- a/lisp/gnus/rfc2047.el +++ b/lisp/gnus/rfc2047.el | |||
| @@ -1136,7 +1136,7 @@ other than `\"' and `\\' in quoted strings." | |||
| 1136 | ;; `decode-coding-string' in Emacs offers a third optional | 1136 | ;; `decode-coding-string' in Emacs offers a third optional |
| 1137 | ;; arg NOCOPY to avoid consing a new string if the decoding | 1137 | ;; arg NOCOPY to avoid consing a new string if the decoding |
| 1138 | ;; is "trivial". Unfortunately it currently doesn't | 1138 | ;; is "trivial". Unfortunately it currently doesn't |
| 1139 | ;; consider anything else than a `nil' coding system | 1139 | ;; consider anything else than a nil coding system |
| 1140 | ;; trivial. | 1140 | ;; trivial. |
| 1141 | ;; `rfc2047-decode-string' is called multiple times for each | 1141 | ;; `rfc2047-decode-string' is called multiple times for each |
| 1142 | ;; article during summary buffer generation, and we really | 1142 | ;; article during summary buffer generation, and we really |
diff --git a/lisp/hippie-exp.el b/lisp/hippie-exp.el index b167671ab0b..a19ff32f1da 100644 --- a/lisp/hippie-exp.el +++ b/lisp/hippie-exp.el | |||
| @@ -99,10 +99,10 @@ | |||
| 99 | ;; from the kill ring. May be good if you don't know how far up in | 99 | ;; from the kill ring. May be good if you don't know how far up in |
| 100 | ;; the kill-ring the required entry is, and don't want to mess with | 100 | ;; the kill-ring the required entry is, and don't want to mess with |
| 101 | ;; "Choose Next Paste". | 101 | ;; "Choose Next Paste". |
| 102 | ;; `try-complete-lisp-symbol' : like `lisp-complete-symbol', but goes | 102 | ;; `try-complete-lisp-symbol' : like `elisp-completion-at-point', but goes |
| 103 | ;; through all possibilities instead of completing what is unique. | 103 | ;; through all possibilities instead of completing what is unique. |
| 104 | ;; Might be tedious (usually a lot of possible completions) and | 104 | ;; Might be tedious (usually a lot of possible completions) and |
| 105 | ;; since its function is much like `lisp-complete-symbol', which | 105 | ;; since its function is much like `completion-at-point', which |
| 106 | ;; already has a key of its own, you might want to remove this. | 106 | ;; already has a key of its own, you might want to remove this. |
| 107 | ;; `try-complete-lisp-symbol-partially' : To insert in the list just | 107 | ;; `try-complete-lisp-symbol-partially' : To insert in the list just |
| 108 | ;; before `try-complete-lisp-symbol' for those who first want to get | 108 | ;; before `try-complete-lisp-symbol' for those who first want to get |
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index f15e150f5d4..c426976b29c 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el | |||
| @@ -1908,9 +1908,9 @@ the buffer object itself and the current mark symbol." | |||
| 1908 | ;; Kill the line if the buffer is dead | 1908 | ;; Kill the line if the buffer is dead |
| 1909 | 'kill))) | 1909 | 'kill))) |
| 1910 | ;; A given mapping function should return: | 1910 | ;; A given mapping function should return: |
| 1911 | ;; `nil' if it chose not to affect the buffer | 1911 | ;; nil if it chose not to affect the buffer |
| 1912 | ;; `kill' means the remove line from the buffer list | 1912 | ;; `kill' means the remove line from the buffer list |
| 1913 | ;; `t' otherwise | 1913 | ;; t otherwise |
| 1914 | (cl-incf ibuffer-map-lines-total) | 1914 | (cl-incf ibuffer-map-lines-total) |
| 1915 | (cond ((null result) | 1915 | (cond ((null result) |
| 1916 | (forward-line 1)) | 1916 | (forward-line 1)) |
diff --git a/lisp/icomplete.el b/lisp/icomplete.el index ee281122852..b1894ca5874 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el | |||
| @@ -149,16 +149,26 @@ icompletion is occurring." | |||
| 149 | (defvar icomplete-minibuffer-map | 149 | (defvar icomplete-minibuffer-map |
| 150 | (let ((map (make-sparse-keymap))) | 150 | (let ((map (make-sparse-keymap))) |
| 151 | (define-key map [?\M-\t] 'minibuffer-force-complete) | 151 | (define-key map [?\M-\t] 'minibuffer-force-complete) |
| 152 | (define-key map [?\C-j] 'minibuffer-force-complete-and-exit) | 152 | (define-key map [?\C-j] 'icomplete-force-complete-and-exit) |
| 153 | (define-key map [?\C-.] 'icomplete-forward-completions) | 153 | (define-key map [?\C-.] 'icomplete-forward-completions) |
| 154 | (define-key map [?\C-,] 'icomplete-backward-completions) | 154 | (define-key map [?\C-,] 'icomplete-backward-completions) |
| 155 | map) | 155 | map) |
| 156 | "Keymap used by `icomplete-mode' in the minibuffer.") | 156 | "Keymap used by `icomplete-mode' in the minibuffer.") |
| 157 | 157 | ||
| 158 | (defun icomplete-force-complete-and-exit () | ||
| 159 | "Complete the minibuffer and exit. | ||
| 160 | Use the first of the matches if there are any displayed, and use | ||
| 161 | the default otherwise." | ||
| 162 | (interactive) | ||
| 163 | (if (or icomplete-show-matches-on-no-input | ||
| 164 | (> (icomplete--field-end) (icomplete--field-beg))) | ||
| 165 | (minibuffer-force-complete-and-exit) | ||
| 166 | (minibuffer-complete-and-exit))) | ||
| 167 | |||
| 158 | (defun icomplete-forward-completions () | 168 | (defun icomplete-forward-completions () |
| 159 | "Step forward completions by one entry. | 169 | "Step forward completions by one entry. |
| 160 | Second entry becomes the first and can be selected with | 170 | Second entry becomes the first and can be selected with |
| 161 | `minibuffer-force-complete-and-exit'." | 171 | `icomplete-force-complete-and-exit'." |
| 162 | (interactive) | 172 | (interactive) |
| 163 | (let* ((beg (icomplete--field-beg)) | 173 | (let* ((beg (icomplete--field-beg)) |
| 164 | (end (icomplete--field-end)) | 174 | (end (icomplete--field-end)) |
| @@ -171,7 +181,7 @@ Second entry becomes the first and can be selected with | |||
| 171 | (defun icomplete-backward-completions () | 181 | (defun icomplete-backward-completions () |
| 172 | "Step backward completions by one entry. | 182 | "Step backward completions by one entry. |
| 173 | Last entry becomes the first and can be selected with | 183 | Last entry becomes the first and can be selected with |
| 174 | `minibuffer-force-complete-and-exit'." | 184 | `icomplete-force-complete-and-exit'." |
| 175 | (interactive) | 185 | (interactive) |
| 176 | (let* ((beg (icomplete--field-beg)) | 186 | (let* ((beg (icomplete--field-beg)) |
| 177 | (end (icomplete--field-end)) | 187 | (end (icomplete--field-end)) |
diff --git a/lisp/ido.el b/lisp/ido.el index 60a59d6e99d..b97f72ce940 100644 --- a/lisp/ido.el +++ b/lisp/ido.el | |||
| @@ -377,7 +377,7 @@ use either \\[customize] or the function `ido-mode'." | |||
| 377 | '("\\` ") | 377 | '("\\` ") |
| 378 | "List of regexps or functions matching buffer names to ignore. | 378 | "List of regexps or functions matching buffer names to ignore. |
| 379 | For example, traditional behavior is not to list buffers whose names begin | 379 | For example, traditional behavior is not to list buffers whose names begin |
| 380 | with a space, for which the regexp is `\\` '. See the source file for | 380 | with a space, for which the regexp is ‘\\` ’. See the source file for |
| 381 | example functions that filter buffer names." | 381 | example functions that filter buffer names." |
| 382 | :type '(repeat (choice regexp function)) | 382 | :type '(repeat (choice regexp function)) |
| 383 | :group 'ido) | 383 | :group 'ido) |
| @@ -386,7 +386,7 @@ example functions that filter buffer names." | |||
| 386 | '("\\`CVS/" "\\`#" "\\`.#" "\\`\\.\\./" "\\`\\./") | 386 | '("\\`CVS/" "\\`#" "\\`.#" "\\`\\.\\./" "\\`\\./") |
| 387 | "List of regexps or functions matching file names to ignore. | 387 | "List of regexps or functions matching file names to ignore. |
| 388 | For example, traditional behavior is not to list files whose names begin | 388 | For example, traditional behavior is not to list files whose names begin |
| 389 | with a #, for which the regexp is `\\`#'. See the source file for | 389 | with a #, for which the regexp is ‘\\`#’. See the source file for |
| 390 | example functions that filter filenames." | 390 | example functions that filter filenames." |
| 391 | :type '(repeat (choice regexp function)) | 391 | :type '(repeat (choice regexp function)) |
| 392 | :group 'ido) | 392 | :group 'ido) |
diff --git a/lisp/ielm.el b/lisp/ielm.el index be877eb250a..3c9908ac362 100644 --- a/lisp/ielm.el +++ b/lisp/ielm.el | |||
| @@ -511,7 +511,7 @@ evaluations respectively. If the working buffer is another IELM | |||
| 511 | buffer, then the values in the working buffer are used. The variables | 511 | buffer, then the values in the working buffer are used. The variables |
| 512 | `*1', `*2' and `*3', yield the process buffer values. | 512 | `*1', `*2' and `*3', yield the process buffer values. |
| 513 | 513 | ||
| 514 | If, at the start of evaluation, `standard-output' is `t' (the | 514 | If, at the start of evaluation, `standard-output' is t (the |
| 515 | default), `standard-output' is set to a special function that | 515 | default), `standard-output' is set to a special function that |
| 516 | causes output to be directed to the ielm buffer. | 516 | causes output to be directed to the ielm buffer. |
| 517 | `standard-output' is restored after evaluation unless explicitly | 517 | `standard-output' is restored after evaluation unless explicitly |
diff --git a/lisp/info.el b/lisp/info.el index 05574ae11f5..d63581911c5 100644 --- a/lisp/info.el +++ b/lisp/info.el | |||
| @@ -303,7 +303,7 @@ when you hit the end of the current node." | |||
| 303 | "If non-nil, hide the tag and section reference in *note and * menu items. | 303 | "If non-nil, hide the tag and section reference in *note and * menu items. |
| 304 | If value is non-nil but not `hide', also replaces the \"*note\" with \"see\". | 304 | If value is non-nil but not `hide', also replaces the \"*note\" with \"see\". |
| 305 | If value is non-nil but not t or `hide', the reference section is still shown. | 305 | If value is non-nil but not t or `hide', the reference section is still shown. |
| 306 | `nil' completely disables this feature. If this is non-nil, you might | 306 | nil completely disables this feature. If this is non-nil, you might |
| 307 | want to set `Info-refill-paragraphs'." | 307 | want to set `Info-refill-paragraphs'." |
| 308 | :version "22.1" | 308 | :version "22.1" |
| 309 | :type '(choice (const :tag "No hiding" nil) | 309 | :type '(choice (const :tag "No hiding" nil) |
diff --git a/lisp/language/tv-util.el b/lisp/language/tv-util.el index 400856d1aa3..ba1ee668825 100644 --- a/lisp/language/tv-util.el +++ b/lisp/language/tv-util.el | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | (combining-vowel . "ꪴꪰꪲꪳꪷꪸꪾ") | 34 | (combining-vowel . "ꪴꪰꪲꪳꪷꪸꪾ") |
| 35 | (combining-tone . "꪿ê«") | 35 | (combining-tone . "꪿ê«") |
| 36 | (misc . "-")))) | 36 | (misc . "-")))) |
| 37 | ;; Set all TaiViet characters to `t'. | 37 | ;; Set all TaiViet characters to t. |
| 38 | (set-char-table-range table (cons #xaa80 #xaac2) t) | 38 | (set-char-table-range table (cons #xaa80 #xaac2) t) |
| 39 | (set-char-table-range table (cons #xaadb #xaadf) t) | 39 | (set-char-table-range table (cons #xaadb #xaadf) t) |
| 40 | ;; Overwrite it for special characters. | 40 | ;; Overwrite it for special characters. |
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index 0d1940cf248..a52a19ecb5e 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el | |||
| @@ -27708,7 +27708,7 @@ Convert space before point into a hard space if the context is right. | |||
| 27708 | 27708 | ||
| 27709 | If | 27709 | If |
| 27710 | * character before point is a space character, | 27710 | * character before point is a space character, |
| 27711 | * character before that has “w†character syntax (i.e. it's a word | 27711 | * character before that has \"w\" character syntax (i.e. it's a word |
| 27712 | constituent), | 27712 | constituent), |
| 27713 | * `tildify-space-pattern' matches when `looking-back' (no more than 10 | 27713 | * `tildify-space-pattern' matches when `looking-back' (no more than 10 |
| 27714 | characters) from before the space character, and | 27714 | characters) from before the space character, and |
diff --git a/lisp/leim/quail/cyrillic.el b/lisp/leim/quail/cyrillic.el index 08d53ea721c..7caa5ecbc1d 100644 --- a/lisp/leim/quail/cyrillic.el +++ b/lisp/leim/quail/cyrillic.el | |||
| @@ -1244,8 +1244,8 @@ Unicode based." | |||
| 1244 | This phonetic layout replaces all the Latin letters with Bulgarian | 1244 | This phonetic layout replaces all the Latin letters with Bulgarian |
| 1245 | \(Cyrillic) letters based on similarities in their pronunciation or look. | 1245 | \(Cyrillic) letters based on similarities in their pronunciation or look. |
| 1246 | 1246 | ||
| 1247 | Note that, since the letters 'щ', 'ÑŒ', 'ÑŽ' and 'Ñ' are attached to the | 1247 | Note that, since the letters ‘щ’, ‘ь’, ‘ю’ and ‘Ñ’ are attached to the |
| 1248 | ']', '\', '`' and '[' keys respectively, Caps Lock does not affect them." | 1248 | ‘]’, ‘\’, ‘`’ and ‘[’ keys respectively, Caps Lock does not affect them." |
| 1249 | nil t t t t nil nil nil nil nil t) | 1249 | nil t t t t nil nil nil nil nil t) |
| 1250 | 1250 | ||
| 1251 | ;; Ю 1! 2@ 3â„– 4$ 5% 6€ 7§ 8* 9( 0) -– =+ ÑŒÑ | 1251 | ;; Ю 1! 2@ 3â„– 4$ 5% 6€ 7§ 8* 9( 0) -– =+ ÑŒÑ |
diff --git a/lisp/leim/quail/ethiopic.el b/lisp/leim/quail/ethiopic.el index d99f649e5e7..7a1cddfff23 100644 --- a/lisp/leim/quail/ethiopic.el +++ b/lisp/leim/quail/ethiopic.el | |||
| @@ -49,8 +49,8 @@ C-F9 or `M-x ethio-toggle-space' | |||
| 49 | Toggles space characters for keyboard input. The current mode is | 49 | Toggles space characters for keyboard input. The current mode is |
| 50 | indicated in mode-line, whether by `_' (ASCII space) or `á¡' | 50 | indicated in mode-line, whether by `_' (ASCII space) or `á¡' |
| 51 | (Ethiopic colon-like word separator). Even in the `á¡' mode, an | 51 | (Ethiopic colon-like word separator). Even in the `á¡' mode, an |
| 52 | ASCII space is inserted if the point is preceded by `an Ethiopic | 52 | ASCII space is inserted if the point is preceded by an Ethiopic |
| 53 | punctuation followed by zero or more ASCII spaces'. | 53 | punctuation char that is followed by zero or more ASCII spaces. |
| 54 | 54 | ||
| 55 | S-F5 or `M-x ethio-toggle-punctuation' | 55 | S-F5 or `M-x ethio-toggle-punctuation' |
| 56 | Toggles ASCII punctuation and Ethiopic punctuation for keyboard input. | 56 | Toggles ASCII punctuation and Ethiopic punctuation for keyboard input. |
diff --git a/lisp/leim/quail/hebrew.el b/lisp/leim/quail/hebrew.el index fe06b27a922..5d63e4040a8 100644 --- a/lisp/leim/quail/hebrew.el +++ b/lisp/leim/quail/hebrew.el | |||
| @@ -113,8 +113,8 @@ Only Hebrew-related characters are considered. | |||
| 113 | 113 | ||
| 114 | Based on latest draft of SI-1452 keyboard layout. | 114 | Based on latest draft of SI-1452 keyboard layout. |
| 115 | Only Hebrew-related characters are considered. | 115 | Only Hebrew-related characters are considered. |
| 116 | '`' is used to switch levels instead of Alt-Gr. | 116 | ‘`’ is used to switch levels instead of Alt-Gr. |
| 117 | Geresh is mapped to '`k'. | 117 | Geresh is mapped to ‘`k’. |
| 118 | " nil t t t t nil nil nil nil nil t) | 118 | " nil t t t t nil nil nil nil nil t) |
| 119 | 119 | ||
| 120 | (quail-define-rules | 120 | (quail-define-rules |
| @@ -603,8 +603,8 @@ Not suitable for modern Hebrew input. | |||
| 603 | 603 | ||
| 604 | Based on Society of Biblical Literature's SIL keyboard layout. | 604 | Based on Society of Biblical Literature's SIL keyboard layout. |
| 605 | Phonetic and not suitable for modern Hebrew input. | 605 | Phonetic and not suitable for modern Hebrew input. |
| 606 | '`' is used to switch levels instead of Alt-Gr. | 606 | ‘`’ is used to switch levels instead of Alt-Gr. |
| 607 | Euro Sign (€) is mapped to 'Z'. | 607 | Euro Sign (€) is mapped to ‘Z’. |
| 608 | " nil t t t t nil nil nil nil nil t) | 608 | " nil t t t t nil nil nil nil nil t) |
| 609 | 609 | ||
| 610 | (quail-define-rules | 610 | (quail-define-rules |
diff --git a/lisp/leim/quail/thai.el b/lisp/leim/quail/thai.el index 37171042643..2554686b9a6 100644 --- a/lisp/leim/quail/thai.el +++ b/lisp/leim/quail/thai.el | |||
| @@ -46,9 +46,9 @@ | |||
| 46 | "Thai Kesmanee input method with TIS620 keyboard layout | 46 | "Thai Kesmanee input method with TIS620 keyboard layout |
| 47 | 47 | ||
| 48 | The difference from the ordinal Thai keyboard: | 48 | The difference from the ordinal Thai keyboard: |
| 49 | '฿' and 'à¹' are assigned to '\\' and '|' respectively, | 49 | ‘฿’ and ‘à¹â€™ are assigned to ‘\\’ and ‘|’ respectively, |
| 50 | 'ฃ' and 'ฅ' are assigned to '`' and '~' respectively, | 50 | ‘ฃ’ and ‘ฅ’ are assigned to ‘`’ and ‘~’ respectively, |
| 51 | Don't know where to assign characters '๚' and '๛'." | 51 | Don't know where to assign characters ‘๚’ and ‘๛’." |
| 52 | nil t t t t nil nil nil nil nil t) | 52 | nil t t t t nil nil nil nil nil t) |
| 53 | 53 | ||
| 54 | (thai-generate-quail-map | 54 | (thai-generate-quail-map |
diff --git a/lisp/linum.el b/lisp/linum.el index 2aac13ab9b0..7b6a3ea4e42 100644 --- a/lisp/linum.el +++ b/lisp/linum.el | |||
| @@ -62,7 +62,7 @@ See also `linum-before-numbering-hook'." | |||
| 62 | 62 | ||
| 63 | (defcustom linum-eager t | 63 | (defcustom linum-eager t |
| 64 | "Whether line numbers should be updated after each command. | 64 | "Whether line numbers should be updated after each command. |
| 65 | The conservative setting `nil' might miss some buffer changes, | 65 | The conservative setting nil might miss some buffer changes, |
| 66 | and you have to scroll or press \\[recenter-top-bottom] to update the numbers." | 66 | and you have to scroll or press \\[recenter-top-bottom] to update the numbers." |
| 67 | :group 'linum | 67 | :group 'linum |
| 68 | :type 'boolean) | 68 | :type 'boolean) |
diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el index c3d5705531e..0ddae24d577 100644 --- a/lisp/ls-lisp.el +++ b/lisp/ls-lisp.el | |||
| @@ -669,7 +669,7 @@ SWITCHES is a list of characters. Default sorting is alphabetic." | |||
| 669 | )))) | 669 | )))) |
| 670 | ;; Finally reverse file alist if necessary. | 670 | ;; Finally reverse file alist if necessary. |
| 671 | ;; (eq below MUST compare `(not (memq ...))' to force comparison of | 671 | ;; (eq below MUST compare `(not (memq ...))' to force comparison of |
| 672 | ;; `t' or `nil', rather than list tails!) | 672 | ;; t or nil, rather than list tails!) |
| 673 | (if (eq (eq (not (memq ?U switches)) ; unsorted order is reversed | 673 | (if (eq (eq (not (memq ?U switches)) ; unsorted order is reversed |
| 674 | (not (memq ?r switches))) ; reversed sort order requested | 674 | (not (memq ?r switches))) ; reversed sort order requested |
| 675 | ls-lisp-dirs-first) ; already reversed | 675 | ls-lisp-dirs-first) ; already reversed |
diff --git a/lisp/mail/mailabbrev.el b/lisp/mail/mailabbrev.el index 2f349b99bb6..f974f2083dc 100644 --- a/lisp/mail/mailabbrev.el +++ b/lisp/mail/mailabbrev.el | |||
| @@ -603,7 +603,7 @@ In other respects, this behaves like `end-of-buffer', which see." | |||
| 603 | (eval-after-load "sendmail" | 603 | (eval-after-load "sendmail" |
| 604 | '(progn | 604 | '(progn |
| 605 | (define-key mail-mode-map "\C-c\C-a" 'mail-abbrev-insert-alias) | 605 | (define-key mail-mode-map "\C-c\C-a" 'mail-abbrev-insert-alias) |
| 606 | (define-key mail-mode-map "\e\t" ; like lisp-complete-symbol | 606 | (define-key mail-mode-map "\e\t" ; like completion-at-point |
| 607 | 'mail-abbrev-complete-alias))) | 607 | 'mail-abbrev-complete-alias))) |
| 608 | 608 | ||
| 609 | ;;(define-key mail-mode-map "\C-n" 'mail-abbrev-next-line) | 609 | ;;(define-key mail-mode-map "\C-n" 'mail-abbrev-next-line) |
diff --git a/lisp/mail/mailalias.el b/lisp/mail/mailalias.el index 48329167bf1..577cec0fd86 100644 --- a/lisp/mail/mailalias.el +++ b/lisp/mail/mailalias.el | |||
| @@ -77,7 +77,7 @@ If not on matching header, `mail-complete-function' gets called instead." | |||
| 77 | ;;;###autoload | 77 | ;;;###autoload |
| 78 | (defcustom mail-complete-style 'angles | 78 | (defcustom mail-complete-style 'angles |
| 79 | "Specifies how \\[mail-complete] formats the full name when it completes. | 79 | "Specifies how \\[mail-complete] formats the full name when it completes. |
| 80 | If `nil', they contain just the return address like: | 80 | If nil, they contain just the return address like: |
| 81 | king@grassland.com | 81 | king@grassland.com |
| 82 | If `parens', they look like: | 82 | If `parens', they look like: |
| 83 | king@grassland.com (Elvis Parsley) | 83 | king@grassland.com (Elvis Parsley) |
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el index 9fa7aa5a6f2..ddd8697dcd6 100644 --- a/lisp/mail/sendmail.el +++ b/lisp/mail/sendmail.el | |||
| @@ -58,7 +58,7 @@ | |||
| 58 | (defcustom mail-from-style 'default | 58 | (defcustom mail-from-style 'default |
| 59 | "Specifies how \"From:\" fields look. | 59 | "Specifies how \"From:\" fields look. |
| 60 | 60 | ||
| 61 | If `nil', they contain just the return address like: | 61 | If nil, they contain just the return address like: |
| 62 | king@grassland.com | 62 | king@grassland.com |
| 63 | If `parens', they look like: | 63 | If `parens', they look like: |
| 64 | king@grassland.com (Elvis Parsley) | 64 | king@grassland.com (Elvis Parsley) |
diff --git a/lisp/mail/supercite.el b/lisp/mail/supercite.el index cf3aac1a317..56158cc156c 100644 --- a/lisp/mail/supercite.el +++ b/lisp/mail/supercite.el | |||
| @@ -886,10 +886,10 @@ Action can be one of: View, Modify, Add, or Delete." | |||
| 886 | 886 | ||
| 887 | (defun sc-attribs-%@-addresses (from &optional delim) | 887 | (defun sc-attribs-%@-addresses (from &optional delim) |
| 888 | "Extract the author's email terminus from email address FROM. | 888 | "Extract the author's email terminus from email address FROM. |
| 889 | Match addresses of the style ``name%[stuff].'' when called with DELIM | 889 | Match addresses of the style \"name%[stuff].\" when called with DELIM |
| 890 | of \"%\" and addresses of the style ``[stuff]name@[stuff]'' when | 890 | of \"%\" and addresses of the style \"[stuff]name@[stuff]\" when |
| 891 | called with DELIM \"@\". If DELIM is nil or not provided, matches | 891 | called with DELIM \"@\". If DELIM is nil or not provided, matches |
| 892 | addresses of the style ``name''." | 892 | addresses of the style \"name\"." |
| 893 | (and (string-match (concat "[-[:alnum:]_.]+" delim) from 0) | 893 | (and (string-match (concat "[-[:alnum:]_.]+" delim) from 0) |
| 894 | (substring from | 894 | (substring from |
| 895 | (match-beginning 0) | 895 | (match-beginning 0) |
| @@ -897,7 +897,7 @@ addresses of the style ``name''." | |||
| 897 | 897 | ||
| 898 | (defun sc-attribs-!-addresses (from) | 898 | (defun sc-attribs-!-addresses (from) |
| 899 | "Extract the author's email terminus from email address FROM. | 899 | "Extract the author's email terminus from email address FROM. |
| 900 | Match addresses of the style ``[stuff]![stuff]...!name[stuff].''" | 900 | Match addresses of the style \"[stuff]![stuff]...!name[stuff].\"" |
| 901 | (let ((eos (length from)) | 901 | (let ((eos (length from)) |
| 902 | (mstart (string-match "![-[:alnum:]_.]+\\([^-![:alnum:]_.]\\|$\\)" | 902 | (mstart (string-match "![-[:alnum:]_.]+\\([^-![:alnum:]_.]\\|$\\)" |
| 903 | from 0)) | 903 | from 0)) |
| @@ -907,7 +907,7 @@ Match addresses of the style ``[stuff]![stuff]...!name[stuff].''" | |||
| 907 | 907 | ||
| 908 | (defun sc-attribs-<>-addresses (from) | 908 | (defun sc-attribs-<>-addresses (from) |
| 909 | "Extract the author's email terminus from email address FROM. | 909 | "Extract the author's email terminus from email address FROM. |
| 910 | Match addresses of the style ``<name[stuff]>.''" | 910 | Match addresses of the style \"<name[stuff]>.\"" |
| 911 | (and (string-match "<\\(.*\\)>" from) | 911 | (and (string-match "<\\(.*\\)>" from) |
| 912 | (match-string 1 from))) | 912 | (match-string 1 from))) |
| 913 | 913 | ||
diff --git a/lisp/mail/uudecode.el b/lisp/mail/uudecode.el index 419aefbdad0..c1e3439a5de 100644 --- a/lisp/mail/uudecode.el +++ b/lisp/mail/uudecode.el | |||
| @@ -102,7 +102,7 @@ used is specified by `uudecode-decoder-program'." | |||
| 102 | (let ((cdir default-directory) | 102 | (let ((cdir default-directory) |
| 103 | (default-process-coding-system | 103 | (default-process-coding-system |
| 104 | (if (featurep 'xemacs) | 104 | (if (featurep 'xemacs) |
| 105 | ;; In XEmacs, `nil' is not a valid coding system. | 105 | ;; In XEmacs, nil is not a valid coding system. |
| 106 | '(binary . binary) | 106 | '(binary . binary) |
| 107 | nil))) | 107 | nil))) |
| 108 | (unwind-protect | 108 | (unwind-protect |
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 538bd974256..60b89b6d521 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el | |||
| @@ -1241,16 +1241,12 @@ scroll the window of possible completions." | |||
| 1241 | (defun minibuffer-force-complete-and-exit () | 1241 | (defun minibuffer-force-complete-and-exit () |
| 1242 | "Complete the minibuffer with first of the matches and exit." | 1242 | "Complete the minibuffer with first of the matches and exit." |
| 1243 | (interactive) | 1243 | (interactive) |
| 1244 | (if (and (eq (minibuffer-prompt-end) (point-max)) | 1244 | (minibuffer-force-complete) |
| 1245 | minibuffer-default) | 1245 | (completion--complete-and-exit |
| 1246 | ;; Use the provided default if there's one (bug#17545). | 1246 | (minibuffer-prompt-end) (point-max) #'exit-minibuffer |
| 1247 | (minibuffer-complete-and-exit) | 1247 | ;; If the previous completion completed to an element which fails |
| 1248 | (minibuffer-force-complete) | 1248 | ;; test-completion, then we shouldn't exit, but that should be rare. |
| 1249 | (completion--complete-and-exit | 1249 | (lambda () (minibuffer-message "Incomplete")))) |
| 1250 | (minibuffer-prompt-end) (point-max) #'exit-minibuffer | ||
| 1251 | ;; If the previous completion completed to an element which fails | ||
| 1252 | ;; test-completion, then we shouldn't exit, but that should be rare. | ||
| 1253 | (lambda () (minibuffer-message "Incomplete"))))) | ||
| 1254 | 1250 | ||
| 1255 | (defun minibuffer-force-complete (&optional start end) | 1251 | (defun minibuffer-force-complete (&optional start end) |
| 1256 | "Complete the minibuffer to an exact match. | 1252 | "Complete the minibuffer to an exact match. |
diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el index 52153ad8322..1f893a72f8e 100644 --- a/lisp/net/ange-ftp.el +++ b/lisp/net/ange-ftp.el | |||
| @@ -193,7 +193,7 @@ | |||
| 193 | ;; | 193 | ;; |
| 194 | ;; "^$*$ *" | 194 | ;; "^$*$ *" |
| 195 | ;; | 195 | ;; |
| 196 | ;; 9) Set the variable ange-ftp-gateway-program-interactive to 't' to let | 196 | ;; 9) Set the variable ange-ftp-gateway-program-interactive to t to let |
| 197 | ;; ange-ftp know that it has to "hand-hold" the login to the gateway | 197 | ;; ange-ftp know that it has to "hand-hold" the login to the gateway |
| 198 | ;; machine. | 198 | ;; machine. |
| 199 | ;; | 199 | ;; |
diff --git a/lisp/net/dbus.el b/lisp/net/dbus.el index 474a48ff276..8f7754137cb 100644 --- a/lisp/net/dbus.el +++ b/lisp/net/dbus.el | |||
| @@ -813,7 +813,7 @@ discovering the still incomplete interface." | |||
| 813 | "Unregister OBJECT from D-Bus. | 813 | "Unregister OBJECT from D-Bus. |
| 814 | OBJECT must be the result of a preceding `dbus-register-method', | 814 | OBJECT must be the result of a preceding `dbus-register-method', |
| 815 | `dbus-register-property' or `dbus-register-signal' call. It | 815 | `dbus-register-property' or `dbus-register-signal' call. It |
| 816 | returns `t' if OBJECT has been unregistered, `nil' otherwise. | 816 | returns t if OBJECT has been unregistered, nil otherwise. |
| 817 | 817 | ||
| 818 | When OBJECT identifies the last method or property, which is | 818 | When OBJECT identifies the last method or property, which is |
| 819 | registered for the respective service, Emacs releases its | 819 | registered for the respective service, Emacs releases its |
| @@ -1092,7 +1092,7 @@ well formed." | |||
| 1092 | (defun dbus-list-activatable-names (&optional bus) | 1092 | (defun dbus-list-activatable-names (&optional bus) |
| 1093 | "Return the D-Bus service names which can be activated as list. | 1093 | "Return the D-Bus service names which can be activated as list. |
| 1094 | If BUS is left nil, `:system' is assumed. The result is a list | 1094 | If BUS is left nil, `:system' is assumed. The result is a list |
| 1095 | of strings, which is `nil' when there are no activatable service | 1095 | of strings, which is nil when there are no activatable service |
| 1096 | names at all." | 1096 | names at all." |
| 1097 | (dbus-ignore-errors | 1097 | (dbus-ignore-errors |
| 1098 | (dbus-call-method | 1098 | (dbus-call-method |
| @@ -1101,7 +1101,7 @@ names at all." | |||
| 1101 | 1101 | ||
| 1102 | (defun dbus-list-names (bus) | 1102 | (defun dbus-list-names (bus) |
| 1103 | "Return the service names registered at D-Bus BUS. | 1103 | "Return the service names registered at D-Bus BUS. |
| 1104 | The result is a list of strings, which is `nil' when there are no | 1104 | The result is a list of strings, which is nil when there are no |
| 1105 | registered service names at all. Well known names are strings | 1105 | registered service names at all. Well known names are strings |
| 1106 | like \"org.freedesktop.DBus\". Names starting with \":\" are | 1106 | like \"org.freedesktop.DBus\". Names starting with \":\" are |
| 1107 | unique names for services." | 1107 | unique names for services." |
| @@ -1119,7 +1119,7 @@ A service has a known name if it doesn't start with \":\"." | |||
| 1119 | 1119 | ||
| 1120 | (defun dbus-list-queued-owners (bus service) | 1120 | (defun dbus-list-queued-owners (bus service) |
| 1121 | "Return the unique names registered at D-Bus BUS and queued for SERVICE. | 1121 | "Return the unique names registered at D-Bus BUS and queued for SERVICE. |
| 1122 | The result is a list of strings, or `nil' when there are no | 1122 | The result is a list of strings, or nil when there are no |
| 1123 | queued name owners service names at all." | 1123 | queued name owners service names at all." |
| 1124 | (dbus-ignore-errors | 1124 | (dbus-ignore-errors |
| 1125 | (dbus-call-method | 1125 | (dbus-call-method |
| @@ -1128,7 +1128,7 @@ queued name owners service names at all." | |||
| 1128 | 1128 | ||
| 1129 | (defun dbus-get-name-owner (bus service) | 1129 | (defun dbus-get-name-owner (bus service) |
| 1130 | "Return the name owner of SERVICE registered at D-Bus BUS. | 1130 | "Return the name owner of SERVICE registered at D-Bus BUS. |
| 1131 | The result is either a string, or `nil' if there is no name owner." | 1131 | The result is either a string, or nil if there is no name owner." |
| 1132 | (dbus-ignore-errors | 1132 | (dbus-ignore-errors |
| 1133 | (dbus-call-method | 1133 | (dbus-call-method |
| 1134 | bus dbus-service-dbus dbus-path-dbus | 1134 | bus dbus-service-dbus dbus-path-dbus |
| @@ -1145,7 +1145,7 @@ apply | |||
| 1145 | 1145 | ||
| 1146 | \(member service \(dbus-list-known-names bus))" | 1146 | \(member service \(dbus-list-known-names bus))" |
| 1147 | ;; "Ping" raises a D-Bus error if SERVICE does not exist. | 1147 | ;; "Ping" raises a D-Bus error if SERVICE does not exist. |
| 1148 | ;; Otherwise, it returns silently with `nil'. | 1148 | ;; Otherwise, it returns silently with nil. |
| 1149 | (condition-case nil | 1149 | (condition-case nil |
| 1150 | (not | 1150 | (not |
| 1151 | (if (natnump timeout) | 1151 | (if (natnump timeout) |
| @@ -1335,7 +1335,7 @@ object can contain \"annotation\" children." | |||
| 1335 | (defun dbus-introspect-get-annotation-names | 1335 | (defun dbus-introspect-get-annotation-names |
| 1336 | (bus service path interface &optional name) | 1336 | (bus service path interface &optional name) |
| 1337 | "Return all annotation names as list of strings. | 1337 | "Return all annotation names as list of strings. |
| 1338 | If NAME is `nil', the annotations are children of INTERFACE, | 1338 | If NAME is nil, the annotations are children of INTERFACE, |
| 1339 | otherwise NAME must be a \"method\", \"signal\", or \"property\" | 1339 | otherwise NAME must be a \"method\", \"signal\", or \"property\" |
| 1340 | object, where the annotations belong to." | 1340 | object, where the annotations belong to." |
| 1341 | (let ((object | 1341 | (let ((object |
| @@ -1352,7 +1352,7 @@ object, where the annotations belong to." | |||
| 1352 | (defun dbus-introspect-get-annotation | 1352 | (defun dbus-introspect-get-annotation |
| 1353 | (bus service path interface name annotation) | 1353 | (bus service path interface name annotation) |
| 1354 | "Return ANNOTATION as XML object. | 1354 | "Return ANNOTATION as XML object. |
| 1355 | If NAME is `nil', ANNOTATION is a child of INTERFACE, otherwise | 1355 | If NAME is nil, ANNOTATION is a child of INTERFACE, otherwise |
| 1356 | NAME must be the name of a \"method\", \"signal\", or | 1356 | NAME must be the name of a \"method\", \"signal\", or |
| 1357 | \"property\" object, where the ANNOTATION belongs to." | 1357 | \"property\" object, where the ANNOTATION belongs to." |
| 1358 | (let ((elt (xml-get-children | 1358 | (let ((elt (xml-get-children |
| @@ -1376,7 +1376,7 @@ NAME must be the name of a \"method\", \"signal\", or | |||
| 1376 | "Return a list of all argument names as list of strings. | 1376 | "Return a list of all argument names as list of strings. |
| 1377 | NAME must be a \"method\" or \"signal\" object. | 1377 | NAME must be a \"method\" or \"signal\" object. |
| 1378 | 1378 | ||
| 1379 | Argument names are optional, the function can return `nil' | 1379 | Argument names are optional, the function can return nil |
| 1380 | therefore, even if the method or signal has arguments." | 1380 | therefore, even if the method or signal has arguments." |
| 1381 | (let ((object | 1381 | (let ((object |
| 1382 | (or (dbus-introspect-get-method bus service path interface name) | 1382 | (or (dbus-introspect-get-method bus service path interface name) |
| @@ -1404,9 +1404,9 @@ element of the list returned by `dbus-introspect-get-argument-names'." | |||
| 1404 | (bus service path interface name &optional direction) | 1404 | (bus service path interface name &optional direction) |
| 1405 | "Return signature of a `method' or `signal', represented by NAME, as string. | 1405 | "Return signature of a `method' or `signal', represented by NAME, as string. |
| 1406 | If NAME is a `method', DIRECTION can be either \"in\" or \"out\". | 1406 | If NAME is a `method', DIRECTION can be either \"in\" or \"out\". |
| 1407 | If DIRECTION is `nil', \"in\" is assumed. | 1407 | If DIRECTION is nil, \"in\" is assumed. |
| 1408 | 1408 | ||
| 1409 | If NAME is a `signal', and DIRECTION is non-`nil', DIRECTION must | 1409 | If NAME is a `signal', and DIRECTION is non-nil, DIRECTION must |
| 1410 | be \"out\"." | 1410 | be \"out\"." |
| 1411 | ;; For methods, we use "in" as default direction. | 1411 | ;; For methods, we use "in" as default direction. |
| 1412 | (let ((object (or (dbus-introspect-get-method | 1412 | (let ((object (or (dbus-introspect-get-method |
| @@ -1440,7 +1440,7 @@ be \"out\"." | |||
| 1440 | (defun dbus-get-property (bus service path interface property) | 1440 | (defun dbus-get-property (bus service path interface property) |
| 1441 | "Return the value of PROPERTY of INTERFACE. | 1441 | "Return the value of PROPERTY of INTERFACE. |
| 1442 | It will be checked at BUS, SERVICE, PATH. The result can be any | 1442 | It will be checked at BUS, SERVICE, PATH. The result can be any |
| 1443 | valid D-Bus value, or `nil' if there is no PROPERTY." | 1443 | valid D-Bus value, or nil if there is no PROPERTY." |
| 1444 | (dbus-ignore-errors | 1444 | (dbus-ignore-errors |
| 1445 | ;; "Get" returns a variant, so we must use the `car'. | 1445 | ;; "Get" returns a variant, so we must use the `car'. |
| 1446 | (car | 1446 | (car |
| @@ -1451,7 +1451,7 @@ valid D-Bus value, or `nil' if there is no PROPERTY." | |||
| 1451 | (defun dbus-set-property (bus service path interface property value) | 1451 | (defun dbus-set-property (bus service path interface property value) |
| 1452 | "Set value of PROPERTY of INTERFACE to VALUE. | 1452 | "Set value of PROPERTY of INTERFACE to VALUE. |
| 1453 | It will be checked at BUS, SERVICE, PATH. When the value has | 1453 | It will be checked at BUS, SERVICE, PATH. When the value has |
| 1454 | been set successful, the result is VALUE. Otherwise, `nil' is | 1454 | been set successful, the result is VALUE. Otherwise, nil is |
| 1455 | returned." | 1455 | returned." |
| 1456 | (dbus-ignore-errors | 1456 | (dbus-ignore-errors |
| 1457 | ;; "Set" requires a variant. | 1457 | ;; "Set" requires a variant. |
| @@ -1465,7 +1465,7 @@ returned." | |||
| 1465 | "Return all properties of INTERFACE at BUS, SERVICE, PATH. | 1465 | "Return all properties of INTERFACE at BUS, SERVICE, PATH. |
| 1466 | The result is a list of entries. Every entry is a cons of the | 1466 | The result is a list of entries. Every entry is a cons of the |
| 1467 | name of the property, and its value. If there are no properties, | 1467 | name of the property, and its value. If there are no properties, |
| 1468 | `nil' is returned." | 1468 | nil is returned." |
| 1469 | (dbus-ignore-errors | 1469 | (dbus-ignore-errors |
| 1470 | ;; "GetAll" returns "a{sv}". | 1470 | ;; "GetAll" returns "a{sv}". |
| 1471 | (let (result) | 1471 | (let (result) |
diff --git a/lisp/net/network-stream.el b/lisp/net/network-stream.el index 0104fa7dd12..1eb5342009c 100644 --- a/lisp/net/network-stream.el +++ b/lisp/net/network-stream.el | |||
| @@ -121,7 +121,7 @@ values: | |||
| 121 | 121 | ||
| 122 | :client-certificate should either be a list where the first | 122 | :client-certificate should either be a list where the first |
| 123 | element is the certificate key file name, and the second | 123 | element is the certificate key file name, and the second |
| 124 | element is the certificate file name itself, or `t', which | 124 | element is the certificate file name itself, or t, which |
| 125 | means that `auth-source' will be queried for the key and the | 125 | means that `auth-source' will be queried for the key and the |
| 126 | certificate. This parameter will only be used when doing TLS | 126 | certificate. This parameter will only be used when doing TLS |
| 127 | or STARTTLS connections. | 127 | or STARTTLS connections. |
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 11db7a2cab2..852d2941f0b 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el | |||
| @@ -1372,7 +1372,7 @@ if ARG is omitted or nil." | |||
| 1372 | (t . "%fp*** %fs%n %r %m")) | 1372 | (t . "%fp*** %fs%n %r %m")) |
| 1373 | "An alist of formats used for printing responses. | 1373 | "An alist of formats used for printing responses. |
| 1374 | The format is looked up using the response-type as a key; | 1374 | The format is looked up using the response-type as a key; |
| 1375 | if no match is found, the default entry (with a key of `t') is used. | 1375 | if no match is found, the default entry (with a key of t) is used. |
| 1376 | 1376 | ||
| 1377 | The entry's value part should be a string, which is inserted with | 1377 | The entry's value part should be a string, which is inserted with |
| 1378 | the of the following escape sequences replaced by the described values: | 1378 | the of the following escape sequences replaced by the described values: |
diff --git a/lisp/net/rlogin.el b/lisp/net/rlogin.el index d0758208303..e71179b6b89 100644 --- a/lisp/net/rlogin.el +++ b/lisp/net/rlogin.el | |||
| @@ -235,14 +235,14 @@ variable." | |||
| 235 | "Do remote or local directory tracking, or disable entirely. | 235 | "Do remote or local directory tracking, or disable entirely. |
| 236 | 236 | ||
| 237 | If called with no prefix argument or a unspecified prefix argument (just | 237 | If called with no prefix argument or a unspecified prefix argument (just |
| 238 | ``\\[universal-argument]'' with no number) do remote directory tracking via | 238 | `\\[universal-argument]' with no number) do remote directory tracking via |
| 239 | ange-ftp. If called as a function, give it no argument. | 239 | ange-ftp. If called as a function, give it no argument. |
| 240 | 240 | ||
| 241 | If called with a negative prefix argument, disable directory tracking | 241 | If called with a negative prefix argument, disable directory tracking |
| 242 | entirely. | 242 | entirely. |
| 243 | 243 | ||
| 244 | If called with a positive, numeric prefix argument, e.g. | 244 | If called with a positive, numeric prefix argument, e.g. |
| 245 | ``\\[universal-argument] 1 M-x rlogin-directory-tracking-mode\'', | 245 | `\\[universal-argument] 1 M-x rlogin-directory-tracking-mode', |
| 246 | then do directory tracking but assume the remote filesystem is the same as | 246 | then do directory tracking but assume the remote filesystem is the same as |
| 247 | the local system. This only works in general if the remote machine and the | 247 | the local system. This only works in general if the remote machine and the |
| 248 | local one share the same directories (e.g. through NFS)." | 248 | local one share the same directories (e.g. through NFS)." |
diff --git a/lisp/net/secrets.el b/lisp/net/secrets.el index 56cbec4ea75..c4102a18cef 100644 --- a/lisp/net/secrets.el +++ b/lisp/net/secrets.el | |||
| @@ -85,7 +85,7 @@ | |||
| 85 | ;; temporarily. This shall be preferred over creation of a persistent | 85 | ;; temporarily. This shall be preferred over creation of a persistent |
| 86 | ;; collection, when the information shall not live longer than Emacs. | 86 | ;; collection, when the information shall not live longer than Emacs. |
| 87 | ;; The session collection can be addressed either by the string | 87 | ;; The session collection can be addressed either by the string |
| 88 | ;; "session", or by `nil', whenever a collection parameter is needed. | 88 | ;; "session", or by nil, whenever a collection parameter is needed. |
| 89 | 89 | ||
| 90 | ;; As already said, a collection is a group of secret items. A secret | 90 | ;; As already said, a collection is a group of secret items. A secret |
| 91 | ;; item has a label, the "secret" (which is a string), and a set of | 91 | ;; item has a label, the "secret" (which is a string), and a set of |
| @@ -418,7 +418,7 @@ returned, and it will be stored in `secrets-session-path'." | |||
| 418 | (defun secrets-prompt-handler (&rest args) | 418 | (defun secrets-prompt-handler (&rest args) |
| 419 | "Handler for signals emitted by `secrets-interface-prompt'." | 419 | "Handler for signals emitted by `secrets-interface-prompt'." |
| 420 | ;; An empty object path is always identified as `secrets-empty-path' | 420 | ;; An empty object path is always identified as `secrets-empty-path' |
| 421 | ;; or `nil'. Either we set it explicitly, or it is returned by the | 421 | ;; or nil. Either we set it explicitly, or it is returned by the |
| 422 | ;; "Completed" signal. | 422 | ;; "Completed" signal. |
| 423 | (if (car args) ;; dismissed | 423 | (if (car args) ;; dismissed |
| 424 | (setq secrets-prompt-signal (list secrets-empty-path)) | 424 | (setq secrets-prompt-signal (list secrets-empty-path)) |
diff --git a/lisp/net/soap-client.el b/lisp/net/soap-client.el index b19a432ee53..77405740917 100644 --- a/lisp/net/soap-client.el +++ b/lisp/net/soap-client.el | |||
| @@ -490,7 +490,7 @@ elements named \"foo\" exist in the WSDL you could use: | |||
| 490 | 490 | ||
| 491 | (soap-wsdl-get \"foo\" WSDL 'soap-message-p) | 491 | (soap-wsdl-get \"foo\" WSDL 'soap-message-p) |
| 492 | 492 | ||
| 493 | If USE-LOCAL-ALIAS-TABLE is not nil, `soap-local-xmlns` will be | 493 | If USE-LOCAL-ALIAS-TABLE is not nil, `soap-local-xmlns' will be |
| 494 | used to resolve the namespace alias." | 494 | used to resolve the namespace alias." |
| 495 | (let ((alias-table (soap-wsdl-alias-table wsdl)) | 495 | (let ((alias-table (soap-wsdl-alias-table wsdl)) |
| 496 | namespace element-name element) | 496 | namespace element-name element) |
diff --git a/lisp/net/telnet.el b/lisp/net/telnet.el index f844f83d716..6d9f408d5ca 100644 --- a/lisp/net/telnet.el +++ b/lisp/net/telnet.el | |||
| @@ -237,7 +237,7 @@ Normally input is edited in Emacs and sent a line at a time." | |||
| 237 | (define-derived-mode telnet-mode comint-mode "Telnet" | 237 | (define-derived-mode telnet-mode comint-mode "Telnet" |
| 238 | "This mode is for using telnet (or rsh) from a buffer to another host. | 238 | "This mode is for using telnet (or rsh) from a buffer to another host. |
| 239 | It has most of the same commands as comint-mode. | 239 | It has most of the same commands as comint-mode. |
| 240 | There is a variable ``telnet-interrupt-string'' which is the character | 240 | There is a variable `telnet-interrupt-string' which is the character |
| 241 | sent to try to stop execution of a job on the remote host. | 241 | sent to try to stop execution of a job on the remote host. |
| 242 | Data is sent to the remote host when RET is typed." | 242 | Data is sent to the remote host when RET is typed." |
| 243 | (set (make-local-variable 'window-point-insertion-type) t) | 243 | (set (make-local-variable 'window-point-insertion-type) t) |
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el index a92ca4df51c..7c509e1d098 100644 --- a/lisp/net/tramp-adb.el +++ b/lisp/net/tramp-adb.el | |||
| @@ -850,9 +850,9 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." | |||
| 850 | (when tmpinput (delete-file tmpinput)) | 850 | (when tmpinput (delete-file tmpinput)) |
| 851 | 851 | ||
| 852 | ;; `process-file-side-effects' has been introduced with GNU | 852 | ;; `process-file-side-effects' has been introduced with GNU |
| 853 | ;; Emacs 23.2. If set to `nil', no remote file will be changed | 853 | ;; Emacs 23.2. If set to nil, no remote file will be changed |
| 854 | ;; by `program'. If it doesn't exist, we assume its default | 854 | ;; by `program'. If it doesn't exist, we assume its default |
| 855 | ;; value 't'. | 855 | ;; value t. |
| 856 | (unless (and (boundp 'process-file-side-effects) | 856 | (unless (and (boundp 'process-file-side-effects) |
| 857 | (not (symbol-value 'process-file-side-effects))) | 857 | (not (symbol-value 'process-file-side-effects))) |
| 858 | (tramp-flush-directory-property v "")) | 858 | (tramp-flush-directory-property v "")) |
diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el index d45c0aad142..89baaa444a7 100644 --- a/lisp/net/tramp-cmds.el +++ b/lisp/net/tramp-cmds.el | |||
| @@ -157,7 +157,7 @@ This includes password cache, file cache, connection cache, buffers." | |||
| 157 | (interactive "P") | 157 | (interactive "P") |
| 158 | (if arg (insert tramp-version) (message tramp-version))) | 158 | (if arg (insert tramp-version) (message tramp-version))) |
| 159 | 159 | ||
| 160 | ;; Make the `reporter` functionality available for making bug reports about | 160 | ;; Make the "reporter" functionality available for making bug reports about |
| 161 | ;; the package. A most useful piece of code. | 161 | ;; the package. A most useful piece of code. |
| 162 | 162 | ||
| 163 | (autoload 'reporter-submit-bug-report "reporter") | 163 | (autoload 'reporter-submit-bug-report "reporter") |
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el index 3ec90ca556f..e68c81cfa70 100644 --- a/lisp/net/tramp-compat.el +++ b/lisp/net/tramp-compat.el | |||
| @@ -100,7 +100,7 @@ | |||
| 100 | (setq byte-compile-not-obsolete-vars '(directory-sep-char))) | 100 | (setq byte-compile-not-obsolete-vars '(directory-sep-char))) |
| 101 | 101 | ||
| 102 | ;; `remote-file-name-inhibit-cache' has been introduced with Emacs 24.1. | 102 | ;; `remote-file-name-inhibit-cache' has been introduced with Emacs 24.1. |
| 103 | ;; Besides `t', `nil', and integer, we use also timestamps (as | 103 | ;; Besides t, nil, and integer, we use also timestamps (as |
| 104 | ;; returned by `current-time') internally. | 104 | ;; returned by `current-time') internally. |
| 105 | (unless (boundp 'remote-file-name-inhibit-cache) | 105 | (unless (boundp 'remote-file-name-inhibit-cache) |
| 106 | (defvar remote-file-name-inhibit-cache nil)) | 106 | (defvar remote-file-name-inhibit-cache nil)) |
| @@ -459,7 +459,7 @@ element is not omitted." | |||
| 459 | (delete "" (split-string string pattern))) | 459 | (delete "" (split-string string pattern))) |
| 460 | 460 | ||
| 461 | (defun tramp-compat-process-running-p (process-name) | 461 | (defun tramp-compat-process-running-p (process-name) |
| 462 | "Returns `t' if system process PROCESS-NAME is running for `user-login-name'." | 462 | "Returns t if system process PROCESS-NAME is running for `user-login-name'." |
| 463 | (when (stringp process-name) | 463 | (when (stringp process-name) |
| 464 | (cond | 464 | (cond |
| 465 | ;; GNU Emacs 22 on w32. | 465 | ;; GNU Emacs 22 on w32. |
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el index 5988a284c6e..215e39d04c3 100644 --- a/lisp/net/tramp-gvfs.el +++ b/lisp/net/tramp-gvfs.el | |||
| @@ -1563,7 +1563,7 @@ connection if a previous connection has died for some reason." | |||
| 1563 | (defun tramp-gvfs-send-command (vec command &rest args) | 1563 | (defun tramp-gvfs-send-command (vec command &rest args) |
| 1564 | "Send the COMMAND with its ARGS to connection VEC. | 1564 | "Send the COMMAND with its ARGS to connection VEC. |
| 1565 | COMMAND is usually a command from the gvfs-* utilities. | 1565 | COMMAND is usually a command from the gvfs-* utilities. |
| 1566 | `call-process' is applied, and it returns `t' if the return code is zero." | 1566 | `call-process' is applied, and it returns t if the return code is zero." |
| 1567 | (with-current-buffer (tramp-get-connection-buffer vec) | 1567 | (with-current-buffer (tramp-get-connection-buffer vec) |
| 1568 | (tramp-gvfs-maybe-open-connection vec) | 1568 | (tramp-gvfs-maybe-open-connection vec) |
| 1569 | (erase-buffer) | 1569 | (erase-buffer) |
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 3f006e84dc1..acb97e880b4 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el | |||
| @@ -1558,7 +1558,7 @@ be non-negative integers." | |||
| 1558 | (progn | 1558 | (progn |
| 1559 | (tramp-set-file-property v localname "file-acl" acl-string) | 1559 | (tramp-set-file-property v localname "file-acl" acl-string) |
| 1560 | t) | 1560 | t) |
| 1561 | ;; In case of errors, we return `nil'. | 1561 | ;; In case of errors, we return nil. |
| 1562 | (tramp-set-file-property v localname "file-acl-string" 'undef) | 1562 | (tramp-set-file-property v localname "file-acl-string" 'undef) |
| 1563 | nil))) | 1563 | nil))) |
| 1564 | 1564 | ||
| @@ -3103,9 +3103,9 @@ the result will be a local, non-Tramp, file name." | |||
| 3103 | (when tmpinput (delete-file tmpinput)) | 3103 | (when tmpinput (delete-file tmpinput)) |
| 3104 | 3104 | ||
| 3105 | ;; `process-file-side-effects' has been introduced with GNU | 3105 | ;; `process-file-side-effects' has been introduced with GNU |
| 3106 | ;; Emacs 23.2. If set to `nil', no remote file will be changed | 3106 | ;; Emacs 23.2. If set to nil, no remote file will be changed |
| 3107 | ;; by `program'. If it doesn't exist, we assume its default | 3107 | ;; by `program'. If it doesn't exist, we assume its default |
| 3108 | ;; value `t'. | 3108 | ;; value t. |
| 3109 | (unless (and (boundp 'process-file-side-effects) | 3109 | (unless (and (boundp 'process-file-side-effects) |
| 3110 | (not (symbol-value 'process-file-side-effects))) | 3110 | (not (symbol-value 'process-file-side-effects))) |
| 3111 | (tramp-flush-directory-property v "")) | 3111 | (tramp-flush-directory-property v "")) |
| @@ -4973,8 +4973,8 @@ function waits for output unless NOOUTPUT is set." | |||
| 4973 | (vec command &optional subshell dont-suppress-err) | 4973 | (vec command &optional subshell dont-suppress-err) |
| 4974 | "Run COMMAND and check its exit status. | 4974 | "Run COMMAND and check its exit status. |
| 4975 | Sends `echo $?' along with the COMMAND for checking the exit status. | 4975 | Sends `echo $?' along with the COMMAND for checking the exit status. |
| 4976 | If COMMAND is nil, just sends `echo $?'. Returns `t' if the exit | 4976 | If COMMAND is nil, just sends `echo $?'. Returns t if the exit |
| 4977 | status is 0, and `nil' otherwise. | 4977 | status is 0, and nil otherwise. |
| 4978 | 4978 | ||
| 4979 | If the optional argument SUBSHELL is non-nil, the command is | 4979 | If the optional argument SUBSHELL is non-nil, the command is |
| 4980 | executed in a subshell, ie surrounded by parentheses. If | 4980 | executed in a subshell, ie surrounded by parentheses. If |
| @@ -5551,7 +5551,7 @@ If no corresponding command is found, nil is returned. | |||
| 5551 | Otherwise, either a string is returned which contains a `%s' mark | 5551 | Otherwise, either a string is returned which contains a `%s' mark |
| 5552 | to be used for the respective input or output file; or a Lisp | 5552 | to be used for the respective input or output file; or a Lisp |
| 5553 | function cell is returned to be applied on a buffer." | 5553 | function cell is returned to be applied on a buffer." |
| 5554 | ;; We must catch the errors, because we want to return `nil', when | 5554 | ;; We must catch the errors, because we want to return nil, when |
| 5555 | ;; no inline coding is found. | 5555 | ;; no inline coding is found. |
| 5556 | (ignore-errors | 5556 | (ignore-errors |
| 5557 | (let ((coding | 5557 | (let ((coding |
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el index 14360b96fe6..c4f0f1f500a 100644 --- a/lisp/net/tramp-smb.el +++ b/lisp/net/tramp-smb.el | |||
| @@ -1242,9 +1242,9 @@ target of the symlink differ." | |||
| 1242 | (kill-buffer (tramp-get-connection-property v "process-buffer" nil))) | 1242 | (kill-buffer (tramp-get-connection-property v "process-buffer" nil))) |
| 1243 | 1243 | ||
| 1244 | ;; `process-file-side-effects' has been introduced with GNU | 1244 | ;; `process-file-side-effects' has been introduced with GNU |
| 1245 | ;; Emacs 23.2. If set to `nil', no remote file will be changed | 1245 | ;; Emacs 23.2. If set to nil, no remote file will be changed |
| 1246 | ;; by `program'. If it doesn't exist, we assume its default | 1246 | ;; by `program'. If it doesn't exist, we assume its default |
| 1247 | ;; value `t'. | 1247 | ;; value t. |
| 1248 | (unless (and (boundp 'process-file-side-effects) | 1248 | (unless (and (boundp 'process-file-side-effects) |
| 1249 | (not (symbol-value 'process-file-side-effects))) | 1249 | (not (symbol-value 'process-file-side-effects))) |
| 1250 | (tramp-flush-directory-property v "")) | 1250 | (tramp-flush-directory-property v "")) |
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 10bb76983aa..95f54490cac 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el | |||
| @@ -300,8 +300,8 @@ are fit for gateways must have `tramp-default-port' at least. | |||
| 300 | 300 | ||
| 301 | Notes: | 301 | Notes: |
| 302 | 302 | ||
| 303 | When using `su' or `sudo' the phrase `open connection to a remote | 303 | When using `su' or `sudo' the phrase \"open connection to a remote |
| 304 | host' sounds strange, but it is used nevertheless, for consistency. | 304 | host\" sounds strange, but it is used nevertheless, for consistency. |
| 305 | No connection is opened to a remote host, but `su' or `sudo' is | 305 | No connection is opened to a remote host, but `su' or `sudo' is |
| 306 | started on the local host. You should specify a remote host | 306 | started on the local host. You should specify a remote host |
| 307 | `localhost' or the name of the local host. Another host name is | 307 | `localhost' or the name of the local host. Another host name is |
| @@ -1034,7 +1034,7 @@ The timeout does not include the time reading a password." | |||
| 1034 | This is necessary as self defense mechanism, in order to avoid | 1034 | This is necessary as self defense mechanism, in order to avoid |
| 1035 | yo-yo connection attempts when the remote host is unavailable. | 1035 | yo-yo connection attempts when the remote host is unavailable. |
| 1036 | 1036 | ||
| 1037 | A value of 0 or `nil' suppresses this check. This might be | 1037 | A value of 0 or nil suppresses this check. This might be |
| 1038 | necessary, when several out-of-order copy operations are | 1038 | necessary, when several out-of-order copy operations are |
| 1039 | performed, or when several asynchronous processes will be started | 1039 | performed, or when several asynchronous processes will be started |
| 1040 | in a short time frame. In those cases it is recommended to | 1040 | in a short time frame. In those cases it is recommended to |
| @@ -1049,8 +1049,8 @@ A remote directory might have changed its contents. In order to | |||
| 1049 | make it visible during file name completion in the minibuffer, | 1049 | make it visible during file name completion in the minibuffer, |
| 1050 | Tramp flushes its cache and rereads the directory contents when | 1050 | Tramp flushes its cache and rereads the directory contents when |
| 1051 | more than `tramp-completion-reread-directory-timeout' seconds | 1051 | more than `tramp-completion-reread-directory-timeout' seconds |
| 1052 | have been gone since last remote command execution. A value of `t' | 1052 | have been gone since last remote command execution. A value of t |
| 1053 | would require an immediate reread during filename completion, `nil' | 1053 | would require an immediate reread during filename completion, nil |
| 1054 | means to use always cached values for the directory contents." | 1054 | means to use always cached values for the directory contents." |
| 1055 | :group 'tramp | 1055 | :group 'tramp |
| 1056 | :type '(choice (const nil) (const t) integer)) | 1056 | :type '(choice (const nil) (const t) integer)) |
| @@ -3314,7 +3314,7 @@ User is always nil." | |||
| 3314 | 3314 | ||
| 3315 | (defun tramp-handle-unhandled-file-name-directory (_filename) | 3315 | (defun tramp-handle-unhandled-file-name-directory (_filename) |
| 3316 | "Like `unhandled-file-name-directory' for Tramp files." | 3316 | "Like `unhandled-file-name-directory' for Tramp files." |
| 3317 | ;; Starting with Emacs 23, we must simply return `nil'. But we must | 3317 | ;; Starting with Emacs 23, we must simply return nil. But we must |
| 3318 | ;; keep backward compatibility, also with XEmacs. "~/" cannot be | 3318 | ;; keep backward compatibility, also with XEmacs. "~/" cannot be |
| 3319 | ;; returned, because there might be machines without a HOME | 3319 | ;; returned, because there might be machines without a HOME |
| 3320 | ;; directory (like hydra). | 3320 | ;; directory (like hydra). |
| @@ -3737,7 +3737,7 @@ Example: | |||
| 3737 | 3737 | ||
| 3738 | (tramp-equal-remote \"/ssh::/etc\" \"/<your host name>:/home\") | 3738 | (tramp-equal-remote \"/ssh::/etc\" \"/<your host name>:/home\") |
| 3739 | 3739 | ||
| 3740 | would yield `t'. On the other hand, the following check results in nil: | 3740 | would yield t. On the other hand, the following check results in nil: |
| 3741 | 3741 | ||
| 3742 | (tramp-equal-remote \"/sudo::/etc\" \"/su::/etc\")" | 3742 | (tramp-equal-remote \"/sudo::/etc\" \"/su::/etc\")" |
| 3743 | (and (tramp-tramp-file-p file1) | 3743 | (and (tramp-tramp-file-p file1) |
diff --git a/lisp/obsolete/xesam.el b/lisp/obsolete/xesam.el index 4ee8c6f1b0f..39dd6a241f2 100644 --- a/lisp/obsolete/xesam.el +++ b/lisp/obsolete/xesam.el | |||
| @@ -378,7 +378,7 @@ If PROPERTY is not existing, retrieve it from ENGINE first." | |||
| 378 | (defun xesam-search-engines () | 378 | (defun xesam-search-engines () |
| 379 | "Return Xesam search engines, stored in `xesam-search-engines'. | 379 | "Return Xesam search engines, stored in `xesam-search-engines'. |
| 380 | The first search engine is the name owner of `xesam-service-search'. | 380 | The first search engine is the name owner of `xesam-service-search'. |
| 381 | If there is no registered search engine at all, the function returns `nil'." | 381 | If there is no registered search engine at all, the function returns nil." |
| 382 | (let ((services (dbus-ignore-errors | 382 | (let ((services (dbus-ignore-errors |
| 383 | (dbus-list-queued-owners | 383 | (dbus-list-queued-owners |
| 384 | :session xesam-service-search))) | 384 | :session xesam-service-search))) |
diff --git a/lisp/org/ob-ruby.el b/lisp/org/ob-ruby.el index 7e09d6d78be..8dee01a5389 100644 --- a/lisp/org/ob-ruby.el +++ b/lisp/org/ob-ruby.el | |||
| @@ -58,7 +58,7 @@ | |||
| 58 | :type 'string) | 58 | :type 'string) |
| 59 | 59 | ||
| 60 | (defcustom org-babel-ruby-nil-to 'hline | 60 | (defcustom org-babel-ruby-nil-to 'hline |
| 61 | "Replace 'nil' in ruby tables with this before returning." | 61 | "Replace nil in ruby tables with this before returning." |
| 62 | :group 'org-babel | 62 | :group 'org-babel |
| 63 | :version "24.4" | 63 | :version "24.4" |
| 64 | :package-version '(Org . "8.0") | 64 | :package-version '(Org . "8.0") |
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el index 8f7611fd1ff..65696b21d71 100644 --- a/lisp/org/org-agenda.el +++ b/lisp/org/org-agenda.el | |||
| @@ -6642,7 +6642,7 @@ The modified list may contain inherited tags, and tags matched by | |||
| 6642 | 6642 | ||
| 6643 | LIST is the list of agenda items formatted by `org-agenda-list'. | 6643 | LIST is the list of agenda items formatted by `org-agenda-list'. |
| 6644 | NDAYS is the span of the current agenda view. | 6644 | NDAYS is the span of the current agenda view. |
| 6645 | TODAYP is `t' when the current agenda view is on today." | 6645 | TODAYP is t when the current agenda view is on today." |
| 6646 | (catch 'exit | 6646 | (catch 'exit |
| 6647 | (cond ((not org-agenda-use-time-grid) (throw 'exit list)) | 6647 | (cond ((not org-agenda-use-time-grid) (throw 'exit list)) |
| 6648 | ((and todayp (member 'today (car org-agenda-time-grid)))) | 6648 | ((and todayp (member 'today (car org-agenda-time-grid)))) |
diff --git a/lisp/org/org-bbdb.el b/lisp/org/org-bbdb.el index a0711cc006b..c4893850199 100644 --- a/lisp/org/org-bbdb.el +++ b/lisp/org/org-bbdb.el | |||
| @@ -37,7 +37,7 @@ | |||
| 37 | ;; the diary using bbdb-anniv.el. | 37 | ;; the diary using bbdb-anniv.el. |
| 38 | ;; | 38 | ;; |
| 39 | ;; Put the following in /somewhere/at/home/diary.org and make sure | 39 | ;; Put the following in /somewhere/at/home/diary.org and make sure |
| 40 | ;; that this file is in `org-agenda-files` | 40 | ;; that this file is in `org-agenda-files'. |
| 41 | ;; | 41 | ;; |
| 42 | ;; %%(org-bbdb-anniversaries) | 42 | ;; %%(org-bbdb-anniversaries) |
| 43 | ;; | 43 | ;; |
diff --git a/lisp/org/org-capture.el b/lisp/org/org-capture.el index 7f1f7ed8af1..64e30152a5b 100644 --- a/lisp/org/org-capture.el +++ b/lisp/org/org-capture.el | |||
| @@ -201,7 +201,7 @@ properties are: | |||
| 201 | 201 | ||
| 202 | :clock-resume Start the interrupted clock when finishing the capture. | 202 | :clock-resume Start the interrupted clock when finishing the capture. |
| 203 | Note that :clock-keep has precedence over :clock-resume. | 203 | Note that :clock-keep has precedence over :clock-resume. |
| 204 | When setting both to `t', the current clock will run and | 204 | When setting both to t, the current clock will run and |
| 205 | the previous one will not be resumed. | 205 | the previous one will not be resumed. |
| 206 | 206 | ||
| 207 | :unnarrowed Do not narrow the target buffer, simply show the | 207 | :unnarrowed Do not narrow the target buffer, simply show the |
diff --git a/lisp/org/org-compat.el b/lisp/org/org-compat.el index 9c92903314a..d3c477e7f3f 100644 --- a/lisp/org/org-compat.el +++ b/lisp/org/org-compat.el | |||
| @@ -241,7 +241,7 @@ ignored in this case." | |||
| 241 | (or window (selected-window))) | 241 | (or window (selected-window))) |
| 242 | 242 | ||
| 243 | (defun org-number-sequence (from &optional to inc) | 243 | (defun org-number-sequence (from &optional to inc) |
| 244 | "Call `number-sequence or emulate it." | 244 | "Call `number-sequence' or emulate it." |
| 245 | (if (fboundp 'number-sequence) | 245 | (if (fboundp 'number-sequence) |
| 246 | (number-sequence from to inc) | 246 | (number-sequence from to inc) |
| 247 | (if (or (not to) (= from to)) | 247 | (if (or (not to) (= from to)) |
diff --git a/lisp/org/org-gnus.el b/lisp/org/org-gnus.el index 880994a8fa9..8b616f0a0ff 100644 --- a/lisp/org/org-gnus.el +++ b/lisp/org/org-gnus.el | |||
| @@ -60,7 +60,7 @@ Normally, this translation is done by querying the IMAP server, | |||
| 60 | which is usually very fast. Unfortunately, some (maybe badly | 60 | which is usually very fast. Unfortunately, some (maybe badly |
| 61 | configured) IMAP servers don't support this operation quickly. | 61 | configured) IMAP servers don't support this operation quickly. |
| 62 | So if following a link to a Gnus article takes ages, try setting | 62 | So if following a link to a Gnus article takes ages, try setting |
| 63 | this variable to `t'." | 63 | this variable to t." |
| 64 | :group 'org-link-store | 64 | :group 'org-link-store |
| 65 | :version "24.1" | 65 | :version "24.1" |
| 66 | :type 'boolean) | 66 | :type 'boolean) |
diff --git a/lisp/org/org-macs.el b/lisp/org/org-macs.el index db09909f404..ea8e7b532aa 100644 --- a/lisp/org/org-macs.el +++ b/lisp/org/org-macs.el | |||
| @@ -55,7 +55,7 @@ | |||
| 55 | ,@body)) | 55 | ,@body)) |
| 56 | 56 | ||
| 57 | (defmacro org-called-interactively-p (&optional kind) | 57 | (defmacro org-called-interactively-p (&optional kind) |
| 58 | (declare (debug (&optional ("quote" symbolp)))) ;Why not just `t'? | 58 | (declare (debug (&optional ("quote" symbolp)))) ;Why not just t? |
| 59 | (if (featurep 'xemacs) | 59 | (if (featurep 'xemacs) |
| 60 | `(interactive-p) | 60 | `(interactive-p) |
| 61 | (if (or (> emacs-major-version 23) | 61 | (if (or (> emacs-major-version 23) |
diff --git a/lisp/org/org-protocol.el b/lisp/org/org-protocol.el index eeefc8da528..d0750f7d639 100644 --- a/lisp/org/org-protocol.el +++ b/lisp/org/org-protocol.el | |||
| @@ -561,7 +561,7 @@ as filename." | |||
| 561 | (let ((fname (expand-file-name (car var)))) | 561 | (let ((fname (expand-file-name (car var)))) |
| 562 | (setq fname (org-protocol-check-filename-for-protocol | 562 | (setq fname (org-protocol-check-filename-for-protocol |
| 563 | fname (member var flist) client)) | 563 | fname (member var flist) client)) |
| 564 | (if (eq fname t) ;; greedy? We need the `t' return value. | 564 | (if (eq fname t) ;; greedy? We need the t return value. |
| 565 | (progn | 565 | (progn |
| 566 | (ad-set-arg 0 nil) | 566 | (ad-set-arg 0 nil) |
| 567 | (throw 'greedy t)) | 567 | (throw 'greedy t)) |
diff --git a/lisp/org/org.el b/lisp/org/org.el index 54924a9964a..29ef8efb640 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el | |||
| @@ -595,7 +595,7 @@ XEmacs user should have this variable set to nil, because | |||
| 595 | (defcustom org-loop-over-headlines-in-active-region nil | 595 | (defcustom org-loop-over-headlines-in-active-region nil |
| 596 | "Shall some commands act upon headlines in the active region? | 596 | "Shall some commands act upon headlines in the active region? |
| 597 | 597 | ||
| 598 | When set to `t', some commands will be performed in all headlines | 598 | When set to t, some commands will be performed in all headlines |
| 599 | within the active region. | 599 | within the active region. |
| 600 | 600 | ||
| 601 | When set to `start-level', some commands will be performed in all | 601 | When set to `start-level', some commands will be performed in all |
| @@ -1452,7 +1452,7 @@ changed by an edit command." | |||
| 1452 | (defcustom org-remove-highlights-with-change t | 1452 | (defcustom org-remove-highlights-with-change t |
| 1453 | "Non-nil means any change to the buffer will remove temporary highlights. | 1453 | "Non-nil means any change to the buffer will remove temporary highlights. |
| 1454 | Such highlights are created by `org-occur' and `org-clock-display'. | 1454 | Such highlights are created by `org-occur' and `org-clock-display'. |
| 1455 | When nil, `C-c C-c needs to be used to get rid of the highlights. | 1455 | When nil, `C-c C-c' needs to be used to get rid of the highlights. |
| 1456 | The highlights created by `org-preview-latex-fragment' always need | 1456 | The highlights created by `org-preview-latex-fragment' always need |
| 1457 | `C-c C-c' to be removed." | 1457 | `C-c C-c' to be removed." |
| 1458 | :group 'org-sparse-trees | 1458 | :group 'org-sparse-trees |
| @@ -1575,7 +1575,7 @@ See the manual for examples." | |||
| 1575 | "Non-nil means Org will display descriptive links. | 1575 | "Non-nil means Org will display descriptive links. |
| 1576 | E.g. [[http://orgmode.org][Org website]] will be displayed as | 1576 | E.g. [[http://orgmode.org][Org website]] will be displayed as |
| 1577 | \"Org Website\", hiding the link itself and just displaying its | 1577 | \"Org Website\", hiding the link itself and just displaying its |
| 1578 | description. When set to `nil', Org will display the full links | 1578 | description. When set to nil, Org will display the full links |
| 1579 | literally. | 1579 | literally. |
| 1580 | 1580 | ||
| 1581 | You can interactively set the value of this variable by calling | 1581 | You can interactively set the value of this variable by calling |
| @@ -11558,7 +11558,7 @@ go to the location where the last refiling operation has put the subtree. | |||
| 11558 | With a numeric prefix argument of `2', refile to the running clock. | 11558 | With a numeric prefix argument of `2', refile to the running clock. |
| 11559 | 11559 | ||
| 11560 | With a numeric prefix argument of `3', emulate `org-refile-keep' | 11560 | With a numeric prefix argument of `3', emulate `org-refile-keep' |
| 11561 | being set to `t' and copy to the target location, don't move it. | 11561 | being set to t and copy to the target location, don't move it. |
| 11562 | Beware that keeping refiled entries may result in duplicated ID | 11562 | Beware that keeping refiled entries may result in duplicated ID |
| 11563 | properties. | 11563 | properties. |
| 11564 | 11564 | ||
| @@ -12077,7 +12077,7 @@ This is a list of abbreviation keys and values. The value gets inserted | |||
| 12077 | if you type `<' followed by the key and then press the completion key, | 12077 | if you type `<' followed by the key and then press the completion key, |
| 12078 | usually `M-TAB'. %file will be replaced by a file name after prompting | 12078 | usually `M-TAB'. %file will be replaced by a file name after prompting |
| 12079 | for the file using completion. The cursor will be placed at the position | 12079 | for the file using completion. The cursor will be placed at the position |
| 12080 | of the `?` in the template. | 12080 | of the `?' in the template. |
| 12081 | There are two templates for each key, the first uses the original Org syntax, | 12081 | There are two templates for each key, the first uses the original Org syntax, |
| 12082 | the second uses Emacs Muse-like syntax tags. These Muse-like tags become | 12082 | the second uses Emacs Muse-like syntax tags. These Muse-like tags become |
| 12083 | the default when the /org-mtags.el/ module has been loaded. See also the | 12083 | the default when the /org-mtags.el/ module has been loaded. See also the |
| @@ -15541,7 +15541,7 @@ and the new value.") | |||
| 15541 | 15541 | ||
| 15542 | (defun org-entry-put (pom property value) | 15542 | (defun org-entry-put (pom property value) |
| 15543 | "Set PROPERTY to VALUE for entry at point-or-marker POM. | 15543 | "Set PROPERTY to VALUE for entry at point-or-marker POM. |
| 15544 | If the value is `nil', it is converted to the empty string. | 15544 | If the value is nil, it is converted to the empty string. |
| 15545 | If it is not a string, an error is raised." | 15545 | If it is not a string, an error is raised." |
| 15546 | (cond ((null value) (setq value "")) | 15546 | (cond ((null value) (setq value "")) |
| 15547 | ((not (stringp value)) | 15547 | ((not (stringp value)) |
| @@ -17749,7 +17749,7 @@ If no number is found, the return value is 0." | |||
| 17749 | (defcustom org-image-actual-width t | 17749 | (defcustom org-image-actual-width t |
| 17750 | "Should we use the actual width of images when inlining them? | 17750 | "Should we use the actual width of images when inlining them? |
| 17751 | 17751 | ||
| 17752 | When set to `t', always use the image width. | 17752 | When set to t, always use the image width. |
| 17753 | 17753 | ||
| 17754 | When set to a number, use imagemagick (when available) to set | 17754 | When set to a number, use imagemagick (when available) to set |
| 17755 | the image's width to this value. | 17755 | the image's width to this value. |
| @@ -17776,7 +17776,7 @@ This requires Emacs >= 24.1, build with imagemagick support." | |||
| 17776 | 17776 | ||
| 17777 | (defcustom org-agenda-inhibit-startup nil | 17777 | (defcustom org-agenda-inhibit-startup nil |
| 17778 | "Inhibit startup when preparing agenda buffers. | 17778 | "Inhibit startup when preparing agenda buffers. |
| 17779 | When this variable is `t', the initialization of the Org agenda | 17779 | When this variable is t, the initialization of the Org agenda |
| 17780 | buffers is inhibited: e.g. the visibility state is not set, the | 17780 | buffers is inhibited: e.g. the visibility state is not set, the |
| 17781 | tables are not re-aligned, etc." | 17781 | tables are not re-aligned, etc." |
| 17782 | :type 'boolean | 17782 | :type 'boolean |
diff --git a/lisp/org/ox-html.el b/lisp/org/ox-html.el index 36984b5cc37..144b58b9bc8 100644 --- a/lisp/org/ox-html.el +++ b/lisp/org/ox-html.el | |||
| @@ -711,7 +711,7 @@ t Synonym for `mathjax'." | |||
| 711 | When `org-mode' is exporting an `org-mode' file to HTML, links to | 711 | When `org-mode' is exporting an `org-mode' file to HTML, links to |
| 712 | non-html files are directly put into a href tag in HTML. | 712 | non-html files are directly put into a href tag in HTML. |
| 713 | However, links to other Org-mode files (recognized by the | 713 | However, links to other Org-mode files (recognized by the |
| 714 | extension `.org.) should become links to the corresponding html | 714 | extension `.org') should become links to the corresponding html |
| 715 | file, assuming that the linked `org-mode' file will also be | 715 | file, assuming that the linked `org-mode' file will also be |
| 716 | converted to HTML. | 716 | converted to HTML. |
| 717 | When nil, the links still point to the plain `.org' file." | 717 | When nil, the links still point to the plain `.org' file." |
diff --git a/lisp/org/ox-odt.el b/lisp/org/ox-odt.el index 6c74fb3eabd..f1ef90e169b 100644 --- a/lisp/org/ox-odt.el +++ b/lisp/org/ox-odt.el | |||
| @@ -847,7 +847,7 @@ TABLE-CELL-STYLE-SELECTOR := `use-first-row-styles' | | |||
| 847 | `use-banding-rows-styles' | | 847 | `use-banding-rows-styles' | |
| 848 | `use-banding-columns-styles' | | 848 | `use-banding-columns-styles' | |
| 849 | `use-first-row-styles' | 849 | `use-first-row-styles' |
| 850 | ON-OR-OFF := `t' | `nil' | 850 | ON-OR-OFF := t | nil |
| 851 | 851 | ||
| 852 | For example, with the following configuration | 852 | For example, with the following configuration |
| 853 | 853 | ||
| @@ -3261,7 +3261,7 @@ contextual information." | |||
| 3261 | "Retrieve styles applicable to a table cell. | 3261 | "Retrieve styles applicable to a table cell. |
| 3262 | R and C are (zero-based) row and column numbers of the table | 3262 | R and C are (zero-based) row and column numbers of the table |
| 3263 | cell. STYLE-SPEC is an entry in `org-odt-table-styles' | 3263 | cell. STYLE-SPEC is an entry in `org-odt-table-styles' |
| 3264 | applicable to the current table. It is `nil' if the table is not | 3264 | applicable to the current table. It is nil if the table is not |
| 3265 | associated with any style attributes. | 3265 | associated with any style attributes. |
| 3266 | 3266 | ||
| 3267 | Return a cons of (TABLE-CELL-STYLE-NAME . PARAGRAPH-STYLE-NAME). | 3267 | Return a cons of (TABLE-CELL-STYLE-NAME . PARAGRAPH-STYLE-NAME). |
diff --git a/lisp/org/ox-texinfo.el b/lisp/org/ox-texinfo.el index 0c81b620618..26f58ad662a 100644 --- a/lisp/org/ox-texinfo.el +++ b/lisp/org/ox-texinfo.el | |||
| @@ -117,7 +117,7 @@ | |||
| 117 | (defcustom org-texinfo-coding-system nil | 117 | (defcustom org-texinfo-coding-system nil |
| 118 | "Default document encoding for Texinfo output. | 118 | "Default document encoding for Texinfo output. |
| 119 | 119 | ||
| 120 | If `nil' it will default to `buffer-file-coding-system'." | 120 | If nil it will default to `buffer-file-coding-system'." |
| 121 | :group 'org-export-texinfo | 121 | :group 'org-export-texinfo |
| 122 | :type 'coding-system) | 122 | :type 'coding-system) |
| 123 | 123 | ||
diff --git a/lisp/play/handwrite.el b/lisp/play/handwrite.el index 32ea6630717..62a8fe4bb0b 100644 --- a/lisp/play/handwrite.el +++ b/lisp/play/handwrite.el | |||
| @@ -279,7 +279,7 @@ Variables: `handwrite-linespace' (default 12) | |||
| 279 | (handwrite-set-pagenumber-on))) | 279 | (handwrite-set-pagenumber-on))) |
| 280 | 280 | ||
| 281 | (defun handwrite-10pt () | 281 | (defun handwrite-10pt () |
| 282 | "Specify 10-point output for `handwrite. | 282 | "Specify 10-point output for `handwrite'. |
| 283 | This sets `handwrite-fontsize' to 10 and finds correct | 283 | This sets `handwrite-fontsize' to 10 and finds correct |
| 284 | values for `handwrite-linespace' and `handwrite-numlines'." | 284 | values for `handwrite-linespace' and `handwrite-numlines'." |
| 285 | (interactive) | 285 | (interactive) |
| @@ -290,7 +290,7 @@ values for `handwrite-linespace' and `handwrite-numlines'." | |||
| 290 | 290 | ||
| 291 | 291 | ||
| 292 | (defun handwrite-11pt () | 292 | (defun handwrite-11pt () |
| 293 | "Specify 11-point output for `handwrite. | 293 | "Specify 11-point output for `handwrite'. |
| 294 | This sets `handwrite-fontsize' to 11 and finds correct | 294 | This sets `handwrite-fontsize' to 11 and finds correct |
| 295 | values for `handwrite-linespace' and `handwrite-numlines'." | 295 | values for `handwrite-linespace' and `handwrite-numlines'." |
| 296 | (interactive) | 296 | (interactive) |
| @@ -300,7 +300,7 @@ values for `handwrite-linespace' and `handwrite-numlines'." | |||
| 300 | (message "Handwrite output size set to 11 points")) | 300 | (message "Handwrite output size set to 11 points")) |
| 301 | 301 | ||
| 302 | (defun handwrite-12pt () | 302 | (defun handwrite-12pt () |
| 303 | "Specify 12-point output for `handwrite. | 303 | "Specify 12-point output for `handwrite'. |
| 304 | This sets `handwrite-fontsize' to 12 and finds correct | 304 | This sets `handwrite-fontsize' to 12 and finds correct |
| 305 | values for `handwrite-linespace' and `handwrite-numlines'." | 305 | values for `handwrite-linespace' and `handwrite-numlines'." |
| 306 | (interactive) | 306 | (interactive) |
| @@ -310,7 +310,7 @@ values for `handwrite-linespace' and `handwrite-numlines'." | |||
| 310 | (message "Handwrite output size set to 12 points")) | 310 | (message "Handwrite output size set to 12 points")) |
| 311 | 311 | ||
| 312 | (defun handwrite-13pt () | 312 | (defun handwrite-13pt () |
| 313 | "Specify 13-point output for `handwrite. | 313 | "Specify 13-point output for `handwrite'. |
| 314 | This sets `handwrite-fontsize' to 13 and finds correct | 314 | This sets `handwrite-fontsize' to 13 and finds correct |
| 315 | values for `handwrite-linespace' and `handwrite-numlines'." | 315 | values for `handwrite-linespace' and `handwrite-numlines'." |
| 316 | (interactive) | 316 | (interactive) |
diff --git a/lisp/progmodes/ada-xref.el b/lisp/progmodes/ada-xref.el index 6b611e6f99b..771dc2a3da1 100644 --- a/lisp/progmodes/ada-xref.el +++ b/lisp/progmodes/ada-xref.el | |||
| @@ -954,7 +954,7 @@ Return new value of PROJECT." | |||
| 954 | (append (mapcar 'directory-file-name compilation-search-path) | 954 | (append (mapcar 'directory-file-name compilation-search-path) |
| 955 | ada-search-directories)) | 955 | ada-search-directories)) |
| 956 | 956 | ||
| 957 | ;; return 't', for decent display in message buffer when called interactively | 957 | ;; return t, for decent display in message buffer when called interactively |
| 958 | t) | 958 | t) |
| 959 | 959 | ||
| 960 | (defun ada-find-references (&optional pos arg local-only) | 960 | (defun ada-find-references (&optional pos arg local-only) |
diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el index d0beab1d485..fd4bfb3b921 100644 --- a/lisp/progmodes/cc-defs.el +++ b/lisp/progmodes/cc-defs.el | |||
| @@ -1983,7 +1983,7 @@ system." | |||
| 1983 | 1983 | ||
| 1984 | (defvar c-lang-const-expansion nil) | 1984 | (defvar c-lang-const-expansion nil) |
| 1985 | 1985 | ||
| 1986 | ;; Ugly hack to pull in the definition of `cc-bytecomp-compiling-or-loading` | 1986 | ;; Ugly hack to pull in the definition of `cc-bytecomp-compiling-or-loading' |
| 1987 | ;; from cc-bytecomp to make it available at loadtime. This is the same | 1987 | ;; from cc-bytecomp to make it available at loadtime. This is the same |
| 1988 | ;; mechanism used in cc-mode.el for `c-populate-syntax-table'. | 1988 | ;; mechanism used in cc-mode.el for `c-populate-syntax-table'. |
| 1989 | (defalias 'cc-bytecomp-compiling-or-loading | 1989 | (defalias 'cc-bytecomp-compiling-or-loading |
| @@ -2017,10 +2017,10 @@ The second argument can optionally be a docstring. The rest of the | |||
| 2017 | arguments are one or more repetitions of LANG VAL where LANG specifies | 2017 | arguments are one or more repetitions of LANG VAL where LANG specifies |
| 2018 | the language(s) that VAL applies to. LANG is the name of the | 2018 | the language(s) that VAL applies to. LANG is the name of the |
| 2019 | language, i.e. the mode name without the \"-mode\" suffix, or a list | 2019 | language, i.e. the mode name without the \"-mode\" suffix, or a list |
| 2020 | of such language names, or `t' for all languages. VAL is a form to | 2020 | of such language names, or t for all languages. VAL is a form to |
| 2021 | evaluate to get the value. | 2021 | evaluate to get the value. |
| 2022 | 2022 | ||
| 2023 | If LANG isn't `t' or one of the core languages in CC Mode, it must | 2023 | If LANG isn't t or one of the core languages in CC Mode, it must |
| 2024 | have been declared with `c-add-language'. | 2024 | have been declared with `c-add-language'. |
| 2025 | 2025 | ||
| 2026 | Neither NAME, LANG nor VAL are evaluated directly - they should not be | 2026 | Neither NAME, LANG nor VAL are evaluated directly - they should not be |
| @@ -2030,7 +2030,7 @@ VAL to evaluate parts of it directly. | |||
| 2030 | When VAL is evaluated for some language, that language is temporarily | 2030 | When VAL is evaluated for some language, that language is temporarily |
| 2031 | made current so that `c-lang-const' without an explicit language can | 2031 | made current so that `c-lang-const' without an explicit language can |
| 2032 | be used inside VAL to refer to the value of a language constant in the | 2032 | be used inside VAL to refer to the value of a language constant in the |
| 2033 | same language. That is particularly useful if LANG is `t'. | 2033 | same language. That is particularly useful if LANG is t. |
| 2034 | 2034 | ||
| 2035 | VAL is not evaluated right away but rather when the value is requested | 2035 | VAL is not evaluated right away but rather when the value is requested |
| 2036 | with `c-lang-const'. Thus it's possible to use `c-lang-const' inside | 2036 | with `c-lang-const'. Thus it's possible to use `c-lang-const' inside |
| @@ -2365,7 +2365,7 @@ fallback definition for all modes, to break the cycle).") | |||
| 2365 | 2365 | ||
| 2366 | (defun c-find-assignment-for-mode (source-pos mode match-any-lang _name) | 2366 | (defun c-find-assignment-for-mode (source-pos mode match-any-lang _name) |
| 2367 | ;; Find the first assignment entry that applies to MODE at or after | 2367 | ;; Find the first assignment entry that applies to MODE at or after |
| 2368 | ;; SOURCE-POS. If MATCH-ANY-LANG is non-nil, entries with `t' as | 2368 | ;; SOURCE-POS. If MATCH-ANY-LANG is non-nil, entries with t as |
| 2369 | ;; the language list are considered to match, otherwise they don't. | 2369 | ;; the language list are considered to match, otherwise they don't. |
| 2370 | ;; On return SOURCE-POS is updated to point to the next assignment | 2370 | ;; On return SOURCE-POS is updated to point to the next assignment |
| 2371 | ;; after the returned one. If no assignment is found, | 2371 | ;; after the returned one. If no assignment is found, |
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 823d795b6de..06b03a24bd6 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el | |||
| @@ -7972,7 +7972,7 @@ comment at the start of cc-engine.el for more info." | |||
| 7972 | ;; This should be called with point inside an argument list. | 7972 | ;; This should be called with point inside an argument list. |
| 7973 | ;; | 7973 | ;; |
| 7974 | ;; Only one level of enclosing parentheses is considered, so for | 7974 | ;; Only one level of enclosing parentheses is considered, so for |
| 7975 | ;; instance `nil' is returned when in a function call within an asm | 7975 | ;; instance nil is returned when in a function call within an asm |
| 7976 | ;; operand. | 7976 | ;; operand. |
| 7977 | ;; | 7977 | ;; |
| 7978 | ;; This function might do hidden buffer changes. | 7978 | ;; This function might do hidden buffer changes. |
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el index 44172b05a56..ad564f7c3df 100644 --- a/lisp/progmodes/cc-fonts.el +++ b/lisp/progmodes/cc-fonts.el | |||
| @@ -1772,8 +1772,8 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'." | |||
| 1772 | ;; "\\|" | 1772 | ;; "\\|" |
| 1773 | ;; (c-lang-const c-symbol-key) | 1773 | ;; (c-lang-const c-symbol-key) |
| 1774 | ;; "\\)") | 1774 | ;; "\\)") |
| 1775 | ;; `((c-font-lock-declarators limit t nil) ; That `nil' says use `font-lock-variable-name-face'; | 1775 | ;; `((c-font-lock-declarators limit t nil) ; That nil says use `font-lock-variable-name-face'; |
| 1776 | ;; ; `t' would mean `font-lock-function-name-face'. | 1776 | ;; ; t would mean `font-lock-function-name-face'. |
| 1777 | ;; (progn | 1777 | ;; (progn |
| 1778 | ;; (c-put-char-property (match-beginning 0) 'c-type | 1778 | ;; (c-put-char-property (match-beginning 0) 'c-type |
| 1779 | ;; 'c-decl-id-start) | 1779 | ;; 'c-decl-id-start) |
diff --git a/lisp/progmodes/cc-guess.el b/lisp/progmodes/cc-guess.el index 20534737d8a..ba23a75ff22 100644 --- a/lisp/progmodes/cc-guess.el +++ b/lisp/progmodes/cc-guess.el | |||
| @@ -91,7 +91,7 @@ The offset of a line included in the indent information returned by | |||
| 91 | (defcustom c-guess-region-max 50000 | 91 | (defcustom c-guess-region-max 50000 |
| 92 | "The maximum region size for examining indent information with `c-guess'. | 92 | "The maximum region size for examining indent information with `c-guess'. |
| 93 | It takes a long time to examine indent information from a large region; | 93 | It takes a long time to examine indent information from a large region; |
| 94 | this option helps you limit that time. `nil' means no limit." | 94 | this option helps you limit that time. nil means no limit." |
| 95 | :version "24.1" | 95 | :version "24.1" |
| 96 | :type 'integer | 96 | :type 'integer |
| 97 | :group 'c) | 97 | :group 'c) |
| @@ -465,7 +465,7 @@ the absolute file name of the file if STYLE-NAME is nil." | |||
| 465 | (defun c-guess-dump-guessed-style (&optional printer) | 465 | (defun c-guess-dump-guessed-style (&optional printer) |
| 466 | "Show the guessed style. | 466 | "Show the guessed style. |
| 467 | `pp' is used to print the style but if PRINTER is given, | 467 | `pp' is used to print the style but if PRINTER is given, |
| 468 | PRINTER is used instead. If PRINTER is not `nil', it | 468 | PRINTER is used instead. If PRINTER is not nil, it |
| 469 | is called with one argument, the guessed style." | 469 | is called with one argument, the guessed style." |
| 470 | (interactive) | 470 | (interactive) |
| 471 | (let ((style (c-guess-make-style c-guess-guessed-basic-offset | 471 | (let ((style (c-guess-make-style c-guess-guessed-basic-offset |
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index 9d36e91cf8f..a58e393779a 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el | |||
| @@ -216,7 +216,7 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1)) | |||
| 216 | ;; due to matching filenames via \\(.*?\\). This might be faster. | 216 | ;; due to matching filenames via \\(.*?\\). This might be faster. |
| 217 | (maven | 217 | (maven |
| 218 | ;; Maven is a popular free software build tool for Java. | 218 | ;; Maven is a popular free software build tool for Java. |
| 219 | "\\([^ \n]\\(?:[^\n :]\\| [^-/\n]\\|:[^ \n]\\)*?\\):\\[\\([0-9]+\\),\\([0-9]+\\)\\] " 1 2 3) | 219 | "\\(\\[WARNING\\] *\\)?\\([^ \n]\\(?:[^\n :]\\| [^-/\n]\\|:[^ \n]\\)*?\\):\\[\\([0-9]+\\),\\([0-9]+\\)\\] " 2 3 4 (1)) |
| 220 | 220 | ||
| 221 | (jikes-line | 221 | (jikes-line |
| 222 | "^ *\\([0-9]+\\)\\.[ \t]+.*\n +\\(<-*>\n\\*\\*\\* \\(?:Error\\|Warnin\\(g\\)\\)\\)" | 222 | "^ *\\([0-9]+\\)\\.[ \t]+.*\n +\\(<-*>\n\\*\\*\\* \\(?:Error\\|Warnin\\(g\\)\\)\\)" |
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el index 2acfc104cf3..d6f6f3b25b0 100644 --- a/lisp/progmodes/cperl-mode.el +++ b/lisp/progmodes/cperl-mode.el | |||
| @@ -282,7 +282,7 @@ This is in addition to cperl-continued-statement-offset." | |||
| 282 | 282 | ||
| 283 | (defcustom cperl-indent-wrt-brace t | 283 | (defcustom cperl-indent-wrt-brace t |
| 284 | "*Non-nil means indent statements in if/etc block relative brace, not if/etc. | 284 | "*Non-nil means indent statements in if/etc block relative brace, not if/etc. |
| 285 | Versions 5.2 ... 5.20 behaved as if this were `nil'." | 285 | Versions 5.2 ... 5.20 behaved as if this were nil." |
| 286 | :type 'boolean | 286 | :type 'boolean |
| 287 | :group 'cperl-indentation-details) | 287 | :group 'cperl-indentation-details) |
| 288 | 288 | ||
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index 486d67297a9..4af8ac6971e 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el | |||
| @@ -2376,9 +2376,9 @@ Sets `gdb-thread-number' to new id." | |||
| 2376 | (let* ((result (gdb-json-string output-field)) | 2376 | (let* ((result (gdb-json-string output-field)) |
| 2377 | (thread-id (bindat-get-field result 'id))) | 2377 | (thread-id (bindat-get-field result 'id))) |
| 2378 | (gdb-setq-thread-number thread-id) | 2378 | (gdb-setq-thread-number thread-id) |
| 2379 | ;; Typing `thread N` in GUD buffer makes GDB emit `^done` followed | 2379 | ;; Typing `thread N' in GUD buffer makes GDB emit `^done' followed |
| 2380 | ;; by `=thread-selected` notification. `^done` causes `gdb-update` | 2380 | ;; by `=thread-selected' notification. `^done' causes `gdb-update' |
| 2381 | ;; as usually. Things happen to fast and second call (from | 2381 | ;; as usually. Things happen too fast and second call (from |
| 2382 | ;; gdb-thread-selected handler) gets cut off by our beloved | 2382 | ;; gdb-thread-selected handler) gets cut off by our beloved |
| 2383 | ;; pending triggers. | 2383 | ;; pending triggers. |
| 2384 | ;; Solution is `gdb-wait-for-pending' macro: it guarantees that its | 2384 | ;; Solution is `gdb-wait-for-pending' macro: it guarantees that its |
diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el index 02a8ec8a560..23f9d4af8c9 100644 --- a/lisp/progmodes/idlw-shell.el +++ b/lisp/progmodes/idlw-shell.el | |||
| @@ -229,7 +229,7 @@ to set this option to nil." | |||
| 229 | 229 | ||
| 230 | (defcustom idlwave-shell-file-name-chars "~/A-Za-z0-9+:_.$#%={}\\- " | 230 | (defcustom idlwave-shell-file-name-chars "~/A-Za-z0-9+:_.$#%={}\\- " |
| 231 | "The characters allowed in file names, as a string. | 231 | "The characters allowed in file names, as a string. |
| 232 | Used for file name completion. Must not contain `'', `,' and `\"' | 232 | Used for file name completion. Must not contain ‘'’, ‘,’ and ‘\"’ |
| 233 | because these are used as separators by IDL." | 233 | because these are used as separators by IDL." |
| 234 | :group 'idlwave-shell-general-setup | 234 | :group 'idlwave-shell-general-setup |
| 235 | :type 'string) | 235 | :type 'string) |
| @@ -2638,7 +2638,7 @@ If ENABLE is non-nil, enable them instead." | |||
| 2638 | (defun idlwave-shell-break-in () | 2638 | (defun idlwave-shell-break-in () |
| 2639 | "Look for a module name near point and set a break point for it. | 2639 | "Look for a module name near point and set a break point for it. |
| 2640 | The command looks for an identifier near point and sets a breakpoint | 2640 | The command looks for an identifier near point and sets a breakpoint |
| 2641 | for the first line of the corresponding module. If MODULE is `t', set | 2641 | for the first line of the corresponding module. If MODULE is t, set |
| 2642 | in the current routine." | 2642 | in the current routine." |
| 2643 | (interactive) | 2643 | (interactive) |
| 2644 | (let* ((module (idlwave-fix-module-if-obj_new (idlwave-what-module))) | 2644 | (let* ((module (idlwave-fix-module-if-obj_new (idlwave-what-module))) |
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el index 7e269cb60f0..44d84d65810 100644 --- a/lisp/progmodes/idlwave.el +++ b/lisp/progmodes/idlwave.el | |||
| @@ -1837,7 +1837,7 @@ The main features of this mode are | |||
| 1837 | 5. Code Templates and Abbreviations | 1837 | 5. Code Templates and Abbreviations |
| 1838 | -------------------------------- | 1838 | -------------------------------- |
| 1839 | Many Abbreviations are predefined to expand to code fragments and templates. | 1839 | Many Abbreviations are predefined to expand to code fragments and templates. |
| 1840 | The abbreviations start generally with a `\\`. Some examples: | 1840 | The abbreviations start generally with a `\\'. Some examples: |
| 1841 | 1841 | ||
| 1842 | \\pr PROCEDURE template | 1842 | \\pr PROCEDURE template |
| 1843 | \\fu FUNCTION template | 1843 | \\fu FUNCTION template |
| @@ -2047,7 +2047,7 @@ If optional argument RESERVED is non-nil then the expansion | |||
| 2047 | consists of reserved words, which will be capitalized if | 2047 | consists of reserved words, which will be capitalized if |
| 2048 | `idlwave-reserved-word-upcase' is non-nil. | 2048 | `idlwave-reserved-word-upcase' is non-nil. |
| 2049 | Otherwise, the abbrev will be capitalized if `idlwave-abbrev-change-case' | 2049 | Otherwise, the abbrev will be capitalized if `idlwave-abbrev-change-case' |
| 2050 | is non-nil, unless its value is \`down in which case the abbrev will be | 2050 | is non-nil, unless its value is `down' in which case the abbrev will be |
| 2051 | made into all lowercase. | 2051 | made into all lowercase. |
| 2052 | Returns non-nil if abbrev is left expanded." | 2052 | Returns non-nil if abbrev is left expanded." |
| 2053 | (if (idlwave-quoted) | 2053 | (if (idlwave-quoted) |
| @@ -8162,7 +8162,7 @@ demand _EXTRA in the keyword list." | |||
| 8162 | class | 8162 | class |
| 8163 | (idlwave-routines)) 'do-link)))))) | 8163 | (idlwave-routines)) 'do-link)))))) |
| 8164 | 8164 | ||
| 8165 | ;; If the class is `t', combine all keywords of all methods NAME | 8165 | ;; If the class is t, combine all keywords of all methods NAME |
| 8166 | (when (eq class t) | 8166 | (when (eq class t) |
| 8167 | (mapc (lambda (entry) | 8167 | (mapc (lambda (entry) |
| 8168 | (and | 8168 | (and |
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 4b0a028faa3..d45d082c40a 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el | |||
| @@ -3216,7 +3216,7 @@ With argument MSG show activation/deactivation message." | |||
| 3216 | (concat | 3216 | (concat |
| 3217 | "Your `python-shell-interpreter' doesn't seem to " | 3217 | "Your `python-shell-interpreter' doesn't seem to " |
| 3218 | "support readline, yet `python-shell-completion-native' " | 3218 | "support readline, yet `python-shell-completion-native' " |
| 3219 | (format "was `t' and %S is not part of the " | 3219 | (format "was t and %S is not part of the " |
| 3220 | (file-name-nondirectory python-shell-interpreter)) | 3220 | (file-name-nondirectory python-shell-interpreter)) |
| 3221 | "`python-shell-completion-native-disabled-interpreters' " | 3221 | "`python-shell-completion-native-disabled-interpreters' " |
| 3222 | "list. Native completions have been disabled locally. ")) | 3222 | "list. Native completions have been disabled locally. ")) |
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index 0e2f66e5bc5..21ad1021c9e 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el | |||
| @@ -287,7 +287,7 @@ Only has effect when `ruby-use-smie' is nil." | |||
| 287 | :group 'ruby | 287 | :group 'ruby |
| 288 | :safe 'booleanp) | 288 | :safe 'booleanp) |
| 289 | 289 | ||
| 290 | ;; FIXME Woefully under documented. What is the point of the last `t'?. | 290 | ;; FIXME Woefully under documented. What is the point of the last t?. |
| 291 | (defcustom ruby-deep-indent-paren '(?\( ?\[ ?\] t) | 291 | (defcustom ruby-deep-indent-paren '(?\( ?\[ ?\] t) |
| 292 | "Deep indent lists in parenthesis when non-nil. | 292 | "Deep indent lists in parenthesis when non-nil. |
| 293 | The value t means continuous line. | 293 | The value t means continuous line. |
diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el index a1ad49e9a2c..4b0cb0f6fd8 100644 --- a/lisp/progmodes/verilog-mode.el +++ b/lisp/progmodes/verilog-mode.el | |||
| @@ -519,8 +519,8 @@ take you to the next lint error." | |||
| 519 | 519 | ||
| 520 | (defvar verilog-tool 'verilog-linter | 520 | (defvar verilog-tool 'verilog-linter |
| 521 | "Which tool to use for building compiler-command. | 521 | "Which tool to use for building compiler-command. |
| 522 | Either nil, `verilog-linter, `verilog-compiler, | 522 | Either nil, `verilog-linter', `verilog-compiler', |
| 523 | `verilog-coverage, `verilog-preprocessor, or `verilog-simulator. | 523 | `verilog-coverage', `verilog-preprocessor', or `verilog-simulator'. |
| 524 | Alternatively use the \"Choose Compilation Action\" menu. See | 524 | Alternatively use the \"Choose Compilation Action\" menu. See |
| 525 | `verilog-set-compile-command' for more information.") | 525 | `verilog-set-compile-command' for more information.") |
| 526 | 526 | ||
| @@ -1674,7 +1674,7 @@ If third arg START is non-nil, start search at that index in STRING." | |||
| 1674 | 1674 | ||
| 1675 | (defsubst verilog-string-replace-matches (from-string to-string fixedcase literal string) | 1675 | (defsubst verilog-string-replace-matches (from-string to-string fixedcase literal string) |
| 1676 | "Replace occurrences of FROM-STRING with TO-STRING. | 1676 | "Replace occurrences of FROM-STRING with TO-STRING. |
| 1677 | FIXEDCASE and LITERAL as in `replace-match`. STRING is what to replace. | 1677 | FIXEDCASE and LITERAL as in `replace-match'. STRING is what to replace. |
| 1678 | The case (verilog-string-replace-matches \"o\" \"oo\" nil nil \"foobar\") | 1678 | The case (verilog-string-replace-matches \"o\" \"oo\" nil nil \"foobar\") |
| 1679 | will break, as the o's continuously replace. xa -> x works ok though." | 1679 | will break, as the o's continuously replace. xa -> x works ok though." |
| 1680 | ;; Hopefully soon to an Emacs built-in | 1680 | ;; Hopefully soon to an Emacs built-in |
| @@ -5201,7 +5201,7 @@ becomes: | |||
| 5201 | (defun verilog-preprocess (&optional command filename) | 5201 | (defun verilog-preprocess (&optional command filename) |
| 5202 | "Preprocess the buffer, similar to `compile', but put output in Verilog-Mode. | 5202 | "Preprocess the buffer, similar to `compile', but put output in Verilog-Mode. |
| 5203 | Takes optional COMMAND or defaults to `verilog-preprocessor', and | 5203 | Takes optional COMMAND or defaults to `verilog-preprocessor', and |
| 5204 | FILENAME to find directory to run in, or defaults to `buffer-file-name`." | 5204 | FILENAME to find directory to run in, or defaults to `buffer-file-name'." |
| 5205 | (interactive | 5205 | (interactive |
| 5206 | (list | 5206 | (list |
| 5207 | (let ((default (verilog-expand-command verilog-preprocessor))) | 5207 | (let ((default (verilog-expand-command verilog-preprocessor))) |
| @@ -12648,7 +12648,7 @@ driver/monitor using AUTOINST in the testbench." | |||
| 12648 | (defun verilog-auto-insert-lisp () | 12648 | (defun verilog-auto-insert-lisp () |
| 12649 | "Expand AUTOINSERTLISP statements, as part of \\[verilog-auto]. | 12649 | "Expand AUTOINSERTLISP statements, as part of \\[verilog-auto]. |
| 12650 | The Lisp code provided is called before other AUTOS are expanded, | 12650 | The Lisp code provided is called before other AUTOS are expanded, |
| 12651 | and the Lisp code generally will call `insert` to insert text | 12651 | and the Lisp code generally will call `insert' to insert text |
| 12652 | into the current file beginning on the line after the | 12652 | into the current file beginning on the line after the |
| 12653 | AUTOINSERTLISP. | 12653 | AUTOINSERTLISP. |
| 12654 | 12654 | ||
| @@ -12713,7 +12713,7 @@ text: | |||
| 12713 | (defun verilog-auto-insert-last () | 12713 | (defun verilog-auto-insert-last () |
| 12714 | "Expand AUTOINSERTLAST statements, as part of \\[verilog-auto]. | 12714 | "Expand AUTOINSERTLAST statements, as part of \\[verilog-auto]. |
| 12715 | The Lisp code provided is called after all other AUTOS have been | 12715 | The Lisp code provided is called after all other AUTOS have been |
| 12716 | expanded, and the Lisp code generally will call `insert` to | 12716 | expanded, and the Lisp code generally will call `insert' to |
| 12717 | insert text into the current file beginning on the line after the | 12717 | insert text into the current file beginning on the line after the |
| 12718 | AUTOINSERTLAST. | 12718 | AUTOINSERTLAST. |
| 12719 | 12719 | ||
diff --git a/lisp/ps-print.el b/lisp/ps-print.el index 0a2c214690f..e76b332ee3c 100644 --- a/lisp/ps-print.el +++ b/lisp/ps-print.el | |||
| @@ -809,7 +809,7 @@ Please send all bug fixes and enhancements to | |||
| 809 | ;; on next page. Visually, valid values are (the character `+' at right of | 809 | ;; on next page. Visually, valid values are (the character `+' at right of |
| 810 | ;; each column indicates that a line is printed): | 810 | ;; each column indicates that a line is printed): |
| 811 | ;; | 811 | ;; |
| 812 | ;; `nil' `follow' `full' `full-follow' | 812 | ;; nil `follow' `full' `full-follow' |
| 813 | ;; Current Page -------- ----------- --------- ---------------- | 813 | ;; Current Page -------- ----------- --------- ---------------- |
| 814 | ;; 1 XXXXX + 1 XXXXXXXX + 1 XXXXXX + 1 XXXXXXXXXXXXX + | 814 | ;; 1 XXXXX + 1 XXXXXXXX + 1 XXXXXX + 1 XXXXXXXXXXXXX + |
| 815 | ;; 2 XXXXX + 2 XXXXXXXX + 2 XXXXXX + 2 XXXXXXXXXXXXX + | 815 | ;; 2 XXXXX + 2 XXXXXXXX + 2 XXXXXX + 2 XXXXXXXXXXXXX + |
| @@ -2117,7 +2117,7 @@ See also documentation for `ps-zebra-stripes' and `ps-zebra-stripe-height'." | |||
| 2117 | Visually, valid values are (the character `+' at right of each column indicates | 2117 | Visually, valid values are (the character `+' at right of each column indicates |
| 2118 | that a line is printed): | 2118 | that a line is printed): |
| 2119 | 2119 | ||
| 2120 | `nil' `follow' `full' `full-follow' | 2120 | nil `follow' `full' `full-follow' |
| 2121 | Current Page -------- ----------- --------- ---------------- | 2121 | Current Page -------- ----------- --------- ---------------- |
| 2122 | 1 XXXXX + 1 XXXXXXXX + 1 XXXXXX + 1 XXXXXXXXXXXXX + | 2122 | 1 XXXXX + 1 XXXXXXXX + 1 XXXXXX + 1 XXXXXXXXXXXXX + |
| 2123 | 2 XXXXX + 2 XXXXXXXX + 2 XXXXXX + 2 XXXXXXXXXXXXX + | 2123 | 2 XXXXX + 2 XXXXXXXX + 2 XXXXXX + 2 XXXXXXXXXXXXX + |
diff --git a/lisp/recentf.el b/lisp/recentf.el index 37937ec1be1..89c1517e7f6 100644 --- a/lisp/recentf.el +++ b/lisp/recentf.el | |||
| @@ -294,7 +294,7 @@ They are successively passed a file name to transform it." | |||
| 294 | (function :tag "Other function"))))) | 294 | (function :tag "Other function"))))) |
| 295 | 295 | ||
| 296 | (defcustom recentf-show-file-shortcuts-flag t | 296 | (defcustom recentf-show-file-shortcuts-flag t |
| 297 | "Whether to show ``[N]'' for the Nth item up to 10. | 297 | "Whether to show \"[N]\" for the Nth item up to 10. |
| 298 | If non-nil, `recentf-open-files' will show labels for keys that can be | 298 | If non-nil, `recentf-open-files' will show labels for keys that can be |
| 299 | used as shortcuts to open the Nth file." | 299 | used as shortcuts to open the Nth file." |
| 300 | :group 'recentf | 300 | :group 'recentf |
diff --git a/lisp/ses.el b/lisp/ses.el index e9860158450..e625e4ed593 100644 --- a/lisp/ses.el +++ b/lisp/ses.el | |||
| @@ -172,7 +172,7 @@ Each function is called with ARG=1." | |||
| 172 | "\C-c\C-s" ses-insert-ses-range | 172 | "\C-c\C-s" ses-insert-ses-range |
| 173 | [S-mouse-3] ses-insert-range-click | 173 | [S-mouse-3] ses-insert-range-click |
| 174 | [C-S-mouse-3] ses-insert-ses-range-click | 174 | [C-S-mouse-3] ses-insert-ses-range-click |
| 175 | "\M-\C-i" lisp-complete-symbol)) | 175 | "\M-\C-i" lisp-complete-symbol)) ; FIXME obsolete |
| 176 | (newmap (make-sparse-keymap))) | 176 | (newmap (make-sparse-keymap))) |
| 177 | (set-keymap-parent newmap minibuffer-local-map) | 177 | (set-keymap-parent newmap minibuffer-local-map) |
| 178 | (while keys | 178 | (while keys |
| @@ -2276,7 +2276,7 @@ to are recalculated first." | |||
| 2276 | (when (and (< col (1- ses--numcols)) ;;Last column can't spill over, anyway | 2276 | (when (and (< col (1- ses--numcols)) ;;Last column can't spill over, anyway |
| 2277 | (eq (ses-cell-value row (1+ col)) '*skip*)) | 2277 | (eq (ses-cell-value row (1+ col)) '*skip*)) |
| 2278 | ;; This cell has spill-over. We'll momentarily pretend the following cell | 2278 | ;; This cell has spill-over. We'll momentarily pretend the following cell |
| 2279 | ;; has a `t' in it. | 2279 | ;; has a t in it. |
| 2280 | (cl-progv | 2280 | (cl-progv |
| 2281 | (list (ses-cell-symbol row (1+ col))) | 2281 | (list (ses-cell-symbol row (1+ col))) |
| 2282 | '(t) | 2282 | '(t) |
| @@ -3528,11 +3528,11 @@ execution anyway. Always returns t if `safe-functions' is t." | |||
| 3528 | ;;---------------------------------------------------------------------------- | 3528 | ;;---------------------------------------------------------------------------- |
| 3529 | 3529 | ||
| 3530 | (defun ses--clean-! (&rest x) | 3530 | (defun ses--clean-! (&rest x) |
| 3531 | "Clean by `delq' list X from any occurrence of `nil' or `*skip*'." | 3531 | "Clean by `delq' list X from any occurrence of nil or `*skip*'." |
| 3532 | (delq nil (delq '*skip* x))) | 3532 | (delq nil (delq '*skip* x))) |
| 3533 | 3533 | ||
| 3534 | (defun ses--clean-_ (x y) | 3534 | (defun ses--clean-_ (x y) |
| 3535 | "Clean list X by replacing by Y any occurrence of `nil' or `*skip*'. | 3535 | "Clean list X by replacing by Y any occurrence of nil or `*skip*'. |
| 3536 | 3536 | ||
| 3537 | This will change X by making `setcar' on its cons cells." | 3537 | This will change X by making `setcar' on its cons cells." |
| 3538 | (let ((ret x) ret-elt) | 3538 | (let ((ret x) ret-elt) |
diff --git a/lisp/simple.el b/lisp/simple.el index dfd92dcdc05..49a95aea4a8 100644 --- a/lisp/simple.el +++ b/lisp/simple.el | |||
| @@ -3488,9 +3488,9 @@ value passed." | |||
| 3488 | (defvar process-file-side-effects t | 3488 | (defvar process-file-side-effects t |
| 3489 | "Whether a call of `process-file' changes remote files. | 3489 | "Whether a call of `process-file' changes remote files. |
| 3490 | 3490 | ||
| 3491 | By default, this variable is always set to `t', meaning that a | 3491 | By default, this variable is always set to t, meaning that a |
| 3492 | call of `process-file' could potentially change any file on a | 3492 | call of `process-file' could potentially change any file on a |
| 3493 | remote host. When set to `nil', a file handler could optimize | 3493 | remote host. When set to nil, a file handler could optimize |
| 3494 | its behavior with respect to remote file attribute caching. | 3494 | its behavior with respect to remote file attribute caching. |
| 3495 | 3495 | ||
| 3496 | You should only ever change this variable with a let-binding; | 3496 | You should only ever change this variable with a let-binding; |
| @@ -6675,7 +6675,7 @@ beyond `current-fill-column' automatically breaks the line at a | |||
| 6675 | previous space. | 6675 | previous space. |
| 6676 | 6676 | ||
| 6677 | When `auto-fill-mode' is on, the `auto-fill-function' variable is | 6677 | When `auto-fill-mode' is on, the `auto-fill-function' variable is |
| 6678 | non-`nil'. | 6678 | non-nil. |
| 6679 | 6679 | ||
| 6680 | The value of `normal-auto-fill-function' specifies the function to use | 6680 | The value of `normal-auto-fill-function' specifies the function to use |
| 6681 | for `auto-fill-function' when turning Auto Fill mode on." | 6681 | for `auto-fill-function' when turning Auto Fill mode on." |
| @@ -8232,7 +8232,7 @@ version and use the one distributed with Emacs.")) | |||
| 8232 | Each element has the form (PACKAGE SYMBOL REGEXP STRING). | 8232 | Each element has the form (PACKAGE SYMBOL REGEXP STRING). |
| 8233 | PACKAGE is either a regular expression to match file names, or a | 8233 | PACKAGE is either a regular expression to match file names, or a |
| 8234 | symbol (a feature name), like for `with-eval-after-load'. | 8234 | symbol (a feature name), like for `with-eval-after-load'. |
| 8235 | SYMBOL is either the name of a string variable, or `t'. Upon | 8235 | SYMBOL is either the name of a string variable, or t. Upon |
| 8236 | loading PACKAGE, if SYMBOL is t or matches REGEXP, display a | 8236 | loading PACKAGE, if SYMBOL is t or matches REGEXP, display a |
| 8237 | warning using STRING as the message.") | 8237 | warning using STRING as the message.") |
| 8238 | 8238 | ||
diff --git a/lisp/skeleton.el b/lisp/skeleton.el index 84b0e0a5754..1363422dcc2 100644 --- a/lisp/skeleton.el +++ b/lisp/skeleton.el | |||
| @@ -502,8 +502,9 @@ Pairing is also prohibited if we are right after a quoting character | |||
| 502 | such as backslash. | 502 | such as backslash. |
| 503 | 503 | ||
| 504 | If a match is found in `skeleton-pair-alist', that is inserted, else | 504 | If a match is found in `skeleton-pair-alist', that is inserted, else |
| 505 | the defaults are used. These are (), [], {}, <> and `' for the | 505 | the defaults are used. These are (), [], {}, <> and (grave |
| 506 | symmetrical ones, and the same character twice for the others." | 506 | accent, apostrophe) for the paired ones, and the same character |
| 507 | twice for the others." | ||
| 507 | (interactive "*P") | 508 | (interactive "*P") |
| 508 | (if (or arg (not skeleton-pair)) | 509 | (if (or arg (not skeleton-pair)) |
| 509 | (self-insert-command (prefix-numeric-value arg)) | 510 | (self-insert-command (prefix-numeric-value arg)) |
diff --git a/lisp/subr.el b/lisp/subr.el index 9c56e51bc96..b9a847d76e8 100644 --- a/lisp/subr.el +++ b/lisp/subr.el | |||
| @@ -1502,6 +1502,19 @@ All symbols are bound before the VALUEFORMs are evalled." | |||
| 1502 | ,@(mapcar (lambda (binder) `(setq ,@binder)) binders) | 1502 | ,@(mapcar (lambda (binder) `(setq ,@binder)) binders) |
| 1503 | ,@body)) | 1503 | ,@body)) |
| 1504 | 1504 | ||
| 1505 | (defmacro let-when-compile (bindings &rest body) | ||
| 1506 | "Like `let', but allow for compile time optimization. | ||
| 1507 | Use BINDINGS as in regular `let', but in BODY each usage should | ||
| 1508 | be wrapped in `eval-when-compile'. | ||
| 1509 | This will generate compile-time constants from BINDINGS." | ||
| 1510 | (declare (indent 1) (debug let)) | ||
| 1511 | (cl-progv (mapcar #'car bindings) | ||
| 1512 | (mapcar (lambda (x) (eval (cadr x))) bindings) | ||
| 1513 | (macroexpand-all | ||
| 1514 | (macroexp-progn | ||
| 1515 | body) | ||
| 1516 | macroexpand-all-environment))) | ||
| 1517 | |||
| 1505 | (defmacro with-wrapper-hook (hook args &rest body) | 1518 | (defmacro with-wrapper-hook (hook args &rest body) |
| 1506 | "Run BODY, using wrapper functions from HOOK with additional ARGS. | 1519 | "Run BODY, using wrapper functions from HOOK with additional ARGS. |
| 1507 | HOOK is an abnormal hook. Each hook function in HOOK \"wraps\" | 1520 | HOOK is an abnormal hook. Each hook function in HOOK \"wraps\" |
diff --git a/lisp/term/tvi970.el b/lisp/term/tvi970.el index 3571b488e7d..c1f5928bebe 100644 --- a/lisp/term/tvi970.el +++ b/lisp/term/tvi970.el | |||
| @@ -105,11 +105,11 @@ With a prefix argument ARG, enable the mode if ARG is positive, | |||
| 105 | and disable it otherwise. If called from Lisp, enable the mode | 105 | and disable it otherwise. If called from Lisp, enable the mode |
| 106 | if ARG is omitted or nil. | 106 | if ARG is omitted or nil. |
| 107 | 107 | ||
| 108 | In ``alternate keypad mode'', the keys send distinct escape | 108 | In alternate keypad mode, the keys send distinct escape |
| 109 | sequences, meaning that they can have their own bindings, | 109 | sequences, meaning that they can have their own bindings, |
| 110 | independent of the normal number keys. | 110 | independent of the normal number keys. |
| 111 | 111 | ||
| 112 | When disabled, the terminal enters ``numeric keypad mode'', in | 112 | When disabled, the terminal enters numeric keypad mode, in |
| 113 | which the keypad's keys act as ordinary digits." | 113 | which the keypad's keys act as ordinary digits." |
| 114 | :variable (terminal-parameter nil 'tvi970-keypad-numeric) | 114 | :variable (terminal-parameter nil 'tvi970-keypad-numeric) |
| 115 | (send-string-to-terminal | 115 | (send-string-to-terminal |
diff --git a/lisp/term/w32console.el b/lisp/term/w32console.el index a7056cd5edf..29ab2f16e1c 100644 --- a/lisp/term/w32console.el +++ b/lisp/term/w32console.el | |||
| @@ -65,7 +65,15 @@ | |||
| 65 | (when oem-cs-p | 65 | (when oem-cs-p |
| 66 | (set-keyboard-coding-system oem-code-page-coding) | 66 | (set-keyboard-coding-system oem-code-page-coding) |
| 67 | (set-terminal-coding-system | 67 | (set-terminal-coding-system |
| 68 | (if oem-o-cs-p oem-code-page-output-coding oem-code-page-coding)))) | 68 | (if oem-o-cs-p oem-code-page-output-coding oem-code-page-coding)) |
| 69 | ;; Since we changed the terminal encoding, we need to repeat | ||
| 70 | ;; the test for Unicode quotes being displayable. | ||
| 71 | (dolist (char-repl | ||
| 72 | '((?‘ . [?\']) (?’ . [?\']) (?“ . [?\"]) (?†. [?\"]))) | ||
| 73 | (when (not (char-displayable-p (car char-repl))) | ||
| 74 | (or standard-display-table | ||
| 75 | (setq standard-display-table (make-display-table))) | ||
| 76 | (aset standard-display-table (car char-repl) (cdr char-repl)))))) | ||
| 69 | (let* ((colors w32-tty-standard-colors) | 77 | (let* ((colors w32-tty-standard-colors) |
| 70 | (color (car colors))) | 78 | (color (car colors))) |
| 71 | (tty-color-clear) | 79 | (tty-color-clear) |
diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el index 930c39c82cc..14cf402a971 100644 --- a/lisp/textmodes/artist.el +++ b/lisp/textmodes/artist.el | |||
| @@ -298,7 +298,7 @@ during the flood-fill." | |||
| 298 | (defcustom artist-ellipse-right-char ?\) | 298 | (defcustom artist-ellipse-right-char ?\) |
| 299 | "Character to use at the rightmost position when drawing narrow ellipses. | 299 | "Character to use at the rightmost position when drawing narrow ellipses. |
| 300 | 300 | ||
| 301 | In this figure, it is the right parenthesis (the ``)'' character): | 301 | In this figure, it is the right parenthesis (the \")\" character): |
| 302 | ----- | 302 | ----- |
| 303 | ( ) | 303 | ( ) |
| 304 | -----" | 304 | -----" |
| @@ -309,7 +309,7 @@ In this figure, it is the right parenthesis (the ``)'' character): | |||
| 309 | (defcustom artist-ellipse-left-char ?\( | 309 | (defcustom artist-ellipse-left-char ?\( |
| 310 | "Character to use at the leftmost position when drawing narrow ellipses. | 310 | "Character to use at the leftmost position when drawing narrow ellipses. |
| 311 | 311 | ||
| 312 | In this figure, it is the left parenthesis (the ``('' character): | 312 | In this figure, it is the left parenthesis (the \"(\" character): |
| 313 | ----- | 313 | ----- |
| 314 | ( ) | 314 | ( ) |
| 315 | -----" | 315 | -----" |
| @@ -331,7 +331,7 @@ Accept this many characters cutting off a line and still treat | |||
| 331 | it as one line. | 331 | it as one line. |
| 332 | Example: | 332 | Example: |
| 333 | If `artist-vaporize-fuzziness' is 2, then those will be recognized as | 333 | If `artist-vaporize-fuzziness' is 2, then those will be recognized as |
| 334 | lines from A to B (provided you start vaporizing them at the ``*''): | 334 | lines from A to B (provided you start vaporizing them at the \"*\"): |
| 335 | / | 335 | / |
| 336 | A----*------/-----------B | 336 | A----*------/-----------B |
| 337 | \\/ | 337 | \\/ |
| @@ -342,7 +342,7 @@ Example: | |||
| 342 | \\/ / | 342 | \\/ / |
| 343 | A----*----/\\/----------B | 343 | A----*----/\\/----------B |
| 344 | / /\\ | 344 | / /\\ |
| 345 | (in fact, only the left part [between the A and the leftmost ``/'' | 345 | (in fact, only the left part [between the A and the leftmost \"/\" |
| 346 | crossing the line] will be vaporized)." | 346 | crossing the line] will be vaporized)." |
| 347 | :group 'artist | 347 | :group 'artist |
| 348 | :type 'integer) | 348 | :type 'integer) |
| @@ -397,8 +397,8 @@ Example: | |||
| 397 | ;; This is a defvar, not a defcustom, since the custom | 397 | ;; This is a defvar, not a defcustom, since the custom |
| 398 | ;; package shows lists of characters as a lists of integers, | 398 | ;; package shows lists of characters as a lists of integers, |
| 399 | ;; which is confusing | 399 | ;; which is confusing |
| 400 | "Characters (``color'') to use when spraying. | 400 | "Characters (\"color\") to use when spraying. |
| 401 | They should be ordered from the ``lightest'' to the ``heaviest'' | 401 | They should be ordered from the \"lightest\" to the \"heaviest\" |
| 402 | since spraying replaces a light character with the next heavier one.") | 402 | since spraying replaces a light character with the next heavier one.") |
| 403 | 403 | ||
| 404 | 404 | ||
| @@ -1275,7 +1275,7 @@ Drawing with the mouse: | |||
| 1275 | * Cut copies, then clears the rectangle/square. | 1275 | * Cut copies, then clears the rectangle/square. |
| 1276 | 1276 | ||
| 1277 | * When drawing lines or poly-lines, you can set arrows. | 1277 | * When drawing lines or poly-lines, you can set arrows. |
| 1278 | See below under ``Arrows'' for more info. | 1278 | See below under \"Arrows\" for more info. |
| 1279 | 1279 | ||
| 1280 | * The mode line shows the currently selected drawing operation. | 1280 | * The mode line shows the currently selected drawing operation. |
| 1281 | In addition, if it has an asterisk (*) at the end, you | 1281 | In addition, if it has an asterisk (*) at the end, you |
| @@ -1383,8 +1383,8 @@ Variables | |||
| 1383 | artist-vaporize-fuzziness Tolerance when recognizing lines | 1383 | artist-vaporize-fuzziness Tolerance when recognizing lines |
| 1384 | artist-spray-interval Seconds between repeated sprayings | 1384 | artist-spray-interval Seconds between repeated sprayings |
| 1385 | artist-spray-radius Size of the spray-area | 1385 | artist-spray-radius Size of the spray-area |
| 1386 | artist-spray-chars The spray-``color'' | 1386 | artist-spray-chars The spray-\"color\" |
| 1387 | artist-spray-new-chars Initial spray-``color'' | 1387 | artist-spray-new-chars Initial spray-\"color\" |
| 1388 | 1388 | ||
| 1389 | Hooks | 1389 | Hooks |
| 1390 | 1390 | ||
| @@ -2020,7 +2020,7 @@ The replacement is used to convert tabs and new-lines to spaces." | |||
| 2020 | (defsubst artist-replace-string (string &optional see-thru) | 2020 | (defsubst artist-replace-string (string &optional see-thru) |
| 2021 | "Replace contents at point with STRING. | 2021 | "Replace contents at point with STRING. |
| 2022 | With optional argument SEE-THRU set to non-nil, text in the buffer | 2022 | With optional argument SEE-THRU set to non-nil, text in the buffer |
| 2023 | ``shines thru'' blanks in the STRING." | 2023 | \"shines thru\" blanks in the STRING." |
| 2024 | (let ((char-list (append string nil)) ; convert the string to a list | 2024 | (let ((char-list (append string nil)) ; convert the string to a list |
| 2025 | (overwrite-mode 'overwrite-mode-textual) | 2025 | (overwrite-mode 'overwrite-mode-textual) |
| 2026 | (fill-column 32765) ; Large :-) | 2026 | (fill-column 32765) ; Large :-) |
| @@ -2385,7 +2385,7 @@ in the coord." | |||
| 2385 | ;; Pretend we are plotting a pixel. Instead we just list it | 2385 | ;; Pretend we are plotting a pixel. Instead we just list it |
| 2386 | ;; | 2386 | ;; |
| 2387 | (defmacro artist-put-pixel (point-list x y) | 2387 | (defmacro artist-put-pixel (point-list x y) |
| 2388 | "In POINT-LIST, store a ``pixel'' at coord X,Y." | 2388 | "In POINT-LIST, store a \"pixel\" at coord X,Y." |
| 2389 | `(setq ,point-list | 2389 | `(setq ,point-list |
| 2390 | (append ,point-list (list (artist-new-coord ,x ,y))))) | 2390 | (append ,point-list (list (artist-new-coord ,x ,y))))) |
| 2391 | 2391 | ||
| @@ -2928,7 +2928,7 @@ This is done by calling the function specified by | |||
| 2928 | `artist-text-renderer-function', which must return a list of strings, | 2928 | `artist-text-renderer-function', which must return a list of strings, |
| 2929 | to be inserted in the buffer. | 2929 | to be inserted in the buffer. |
| 2930 | 2930 | ||
| 2931 | Text already in the buffer ``shines thru'' blanks in the rendered text." | 2931 | Text already in the buffer \"shines thru\" blanks in the rendered text." |
| 2932 | (let* ((input-text (read-string "Type text to render: ")) | 2932 | (let* ((input-text (read-string "Type text to render: ")) |
| 2933 | (rendered-text (artist-funcall artist-text-renderer-function input-text))) | 2933 | (rendered-text (artist-funcall artist-text-renderer-function input-text))) |
| 2934 | (artist-text-insert-see-thru x y rendered-text))) | 2934 | (artist-text-insert-see-thru x y rendered-text))) |
| @@ -2958,7 +2958,7 @@ Blanks in the rendered text overwrite any text in the buffer." | |||
| 2958 | Returns a list of points. Each point is on the form (X1 . Y1)." | 2958 | Returns a list of points. Each point is on the form (X1 . Y1)." |
| 2959 | (let ((points)) | 2959 | (let ((points)) |
| 2960 | (while (> n 0) | 2960 | (while (> n 0) |
| 2961 | (let* ((angle (* (random 359) (/ float-pi 180))) | 2961 | (let* ((angle (degrees-to-radians (random 359))) |
| 2962 | (dist (random radius)) | 2962 | (dist (random radius)) |
| 2963 | (point (cons (round (* dist (cos angle))) | 2963 | (point (cons (round (* dist (cos angle))) |
| 2964 | (round (* dist (sin angle)))))) | 2964 | (round (* dist (sin angle)))))) |
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el index 10edefc9d3e..9d6d19e6e1e 100644 --- a/lisp/textmodes/bibtex.el +++ b/lisp/textmodes/bibtex.el | |||
| @@ -4338,10 +4338,10 @@ Correct and validate again.\n" | |||
| 4338 | (goto-char (point-min)) | 4338 | (goto-char (point-min)) |
| 4339 | (forward-line 2)) ; first error message | 4339 | (forward-line 2)) ; first error message |
| 4340 | (display-buffer err-buf) | 4340 | (display-buffer err-buf) |
| 4341 | nil) ; return `nil' (i.e., buffer is invalid) | 4341 | nil) ; return nil (i.e., buffer is invalid) |
| 4342 | (message "%s is syntactically correct" | 4342 | (message "%s is syntactically correct" |
| 4343 | (if mark-active "Region" "Buffer")) | 4343 | (if mark-active "Region" "Buffer")) |
| 4344 | t))) ; return `t' (i.e., buffer is valid) | 4344 | t))) ; return t (i.e., buffer is valid) |
| 4345 | 4345 | ||
| 4346 | (defun bibtex-validate-globally (&optional strings) | 4346 | (defun bibtex-validate-globally (&optional strings) |
| 4347 | "Check for duplicate keys in `bibtex-files'. | 4347 | "Check for duplicate keys in `bibtex-files'. |
| @@ -4395,9 +4395,9 @@ Return t if test was successful, nil otherwise." | |||
| 4395 | (goto-char (point-min)) | 4395 | (goto-char (point-min)) |
| 4396 | (forward-line 2)) ; first error message | 4396 | (forward-line 2)) ; first error message |
| 4397 | (display-buffer err-buf) | 4397 | (display-buffer err-buf) |
| 4398 | nil) ; return `nil' (i.e., buffer is invalid) | 4398 | nil) ; return nil (i.e., buffer is invalid) |
| 4399 | (message "No duplicate keys.") | 4399 | (message "No duplicate keys.") |
| 4400 | t))) ; return `t' (i.e., buffer is valid) | 4400 | t))) ; return t (i.e., buffer is valid) |
| 4401 | 4401 | ||
| 4402 | (defun bibtex-next-field (begin &optional comma) | 4402 | (defun bibtex-next-field (begin &optional comma) |
| 4403 | "Move point to end of text of next BibTeX field or entry head. | 4403 | "Move point to end of text of next BibTeX field or entry head. |
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index f67fae8bcfa..b0fcb1724f5 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el | |||
| @@ -1076,7 +1076,7 @@ of `ispell-dictionary-base-alist' elements." | |||
| 1076 | ispell-aspell-data-dir )) | 1076 | ispell-aspell-data-dir )) |
| 1077 | ;; Try xx.dat first, strip out variant, country code, etc, | 1077 | ;; Try xx.dat first, strip out variant, country code, etc, |
| 1078 | ;; then try xx_YY.dat (without stripping country code), | 1078 | ;; then try xx_YY.dat (without stripping country code), |
| 1079 | ;; then try xx-alt.dat, for deu-alt etc. | 1079 | ;; then try xx-alt.dat, for de-alt etc. |
| 1080 | (dolist (tmp-regexp (list "^[[:alpha:]]+" | 1080 | (dolist (tmp-regexp (list "^[[:alpha:]]+" |
| 1081 | "^[[:alpha:]_]+" | 1081 | "^[[:alpha:]_]+" |
| 1082 | "^[[:alpha:]]+-\\(alt\\|old\\)")) | 1082 | "^[[:alpha:]]+-\\(alt\\|old\\)")) |
| @@ -3402,7 +3402,7 @@ Must be called after `ispell-buffer-local-parsing' due to dependence on mode." | |||
| 3402 | 3402 | ||
| 3403 | (defun ispell-ignore-fcc (start end) | 3403 | (defun ispell-ignore-fcc (start end) |
| 3404 | "Delete the Fcc: message header when large attachments are included. | 3404 | "Delete the Fcc: message header when large attachments are included. |
| 3405 | Return value `nil' if file with large attachments is saved. | 3405 | Return value nil if file with large attachments is saved. |
| 3406 | This can be used to avoid multiple questions for multiple large attachments. | 3406 | This can be used to avoid multiple questions for multiple large attachments. |
| 3407 | Returns point to starting location afterwards." | 3407 | Returns point to starting location afterwards." |
| 3408 | (let ((result t)) | 3408 | (let ((result t)) |
| @@ -3900,7 +3900,7 @@ Otherwise, it must be a function which is called to get the limit.") | |||
| 3900 | 3900 | ||
| 3901 | (defun ispell-mime-multipartp (&optional limit) | 3901 | (defun ispell-mime-multipartp (&optional limit) |
| 3902 | "Return multipart message start boundary or nil if none." | 3902 | "Return multipart message start boundary or nil if none." |
| 3903 | ;; caller must ensure `case-fold-search' is set to `t' | 3903 | ;; caller must ensure `case-fold-search' is set to t |
| 3904 | (and | 3904 | (and |
| 3905 | (re-search-forward | 3905 | (re-search-forward |
| 3906 | "Content-Type: *multipart/\\([^ \t\n]*;[ \t]*[\n]?[ \t]*\\)+boundary=" | 3906 | "Content-Type: *multipart/\\([^ \t\n]*;[ \t]*[\n]?[ \t]*\\)+boundary=" |
diff --git a/lisp/textmodes/makeinfo.el b/lisp/textmodes/makeinfo.el index d62929b95b5..b9b72ea644f 100644 --- a/lisp/textmodes/makeinfo.el +++ b/lisp/textmodes/makeinfo.el | |||
| @@ -66,7 +66,7 @@ The name of the file is appended to this string, separated by a space." | |||
| 66 | "String containing options for running `makeinfo'. | 66 | "String containing options for running `makeinfo'. |
| 67 | Do not include `--footnote-style' or `--paragraph-indent'; | 67 | Do not include `--footnote-style' or `--paragraph-indent'; |
| 68 | the proper way to specify those is with the Texinfo commands | 68 | the proper way to specify those is with the Texinfo commands |
| 69 | `@footnotestyle` and `@paragraphindent'." | 69 | `@footnotestyle' and `@paragraphindent'." |
| 70 | :type 'string | 70 | :type 'string |
| 71 | :group 'makeinfo) | 71 | :group 'makeinfo) |
| 72 | 72 | ||
diff --git a/lisp/textmodes/rst.el b/lisp/textmodes/rst.el index cda9703ea6b..9d3f2a92d4b 100644 --- a/lisp/textmodes/rst.el +++ b/lisp/textmodes/rst.el | |||
| @@ -528,7 +528,7 @@ argument list for `rst-re'.") | |||
| 528 | 528 | ||
| 529 | (defvar rst-re-alist) ; Forward declare to use it in `rst-re'. | 529 | (defvar rst-re-alist) ; Forward declare to use it in `rst-re'. |
| 530 | 530 | ||
| 531 | ;; FIXME: Use `sregex` or `rx` instead of re-inventing the wheel. | 531 | ;; FIXME: Use `sregex' or `rx' instead of re-inventing the wheel. |
| 532 | (rst-testcover-add-compose 'rst-re) | 532 | (rst-testcover-add-compose 'rst-re) |
| 533 | ;; testcover: ok. | 533 | ;; testcover: ok. |
| 534 | (defun rst-re (&rest args) | 534 | (defun rst-re (&rest args) |
| @@ -1512,8 +1512,8 @@ PFXARG (alternate behavior). | |||
| 1512 | 1512 | ||
| 1513 | This function is a bit of a swiss knife. It is meant to adjust | 1513 | This function is a bit of a swiss knife. It is meant to adjust |
| 1514 | the adornments of a section title in reStructuredText. It tries | 1514 | the adornments of a section title in reStructuredText. It tries |
| 1515 | to deal with all the possible cases gracefully and to do `the | 1515 | to deal with all the possible cases gracefully and to do \"the |
| 1516 | right thing' in all cases. | 1516 | right thing\" in all cases. |
| 1517 | 1517 | ||
| 1518 | See the documentations of `rst-adjust-adornment-work' and | 1518 | See the documentations of `rst-adjust-adornment-work' and |
| 1519 | `rst-promote-region' for full details. | 1519 | `rst-promote-region' for full details. |
| @@ -3571,8 +3571,8 @@ of your own." | |||
| 3571 | ;; properties on comments and literal blocks so they are *not* | 3571 | ;; properties on comments and literal blocks so they are *not* |
| 3572 | ;; inline fontified. See (elisp)Search-based Fontification. | 3572 | ;; inline fontified. See (elisp)Search-based Fontification. |
| 3573 | 3573 | ||
| 3574 | ;; FIXME: And / or use `syntax-propertize` functions as in `octave-mod.el` | 3574 | ;; FIXME: And / or use `syntax-propertize' functions as in `octave-mod.el' |
| 3575 | ;; and other V24 modes. May make `font-lock-extend-region` | 3575 | ;; and other V24 modes. May make `font-lock-extend-region' |
| 3576 | ;; superfluous. | 3576 | ;; superfluous. |
| 3577 | 3577 | ||
| 3578 | ;; `Comments`_ | 3578 | ;; `Comments`_ |
| @@ -3952,11 +3952,11 @@ string)) to be used for converting the document." | |||
| 3952 | :package-version "1.2.0") | 3952 | :package-version "1.2.0") |
| 3953 | (rst-testcover-defcustom) | 3953 | (rst-testcover-defcustom) |
| 3954 | 3954 | ||
| 3955 | ;; FIXME: Must be `defcustom`. | 3955 | ;; FIXME: Must be defcustom. |
| 3956 | (defvar rst-compile-primary-toolset 'html | 3956 | (defvar rst-compile-primary-toolset 'html |
| 3957 | "The default tool-set for `rst-compile'.") | 3957 | "The default tool-set for `rst-compile'.") |
| 3958 | 3958 | ||
| 3959 | ;; FIXME: Must be `defcustom`. | 3959 | ;; FIXME: Must be defcustom. |
| 3960 | (defvar rst-compile-secondary-toolset 'latex | 3960 | (defvar rst-compile-secondary-toolset 'latex |
| 3961 | "The default tool-set for `rst-compile' with a prefix argument.") | 3961 | "The default tool-set for `rst-compile' with a prefix argument.") |
| 3962 | 3962 | ||
| @@ -4035,7 +4035,7 @@ buffer, if the region is not selected." | |||
| 4035 | (cadr (assq 'pseudoxml rst-compile-toolsets)) | 4035 | (cadr (assq 'pseudoxml rst-compile-toolsets)) |
| 4036 | standard-output))) | 4036 | standard-output))) |
| 4037 | 4037 | ||
| 4038 | ;; FIXME: Should be `defcustom`. | 4038 | ;; FIXME: Should be defcustom. |
| 4039 | (defvar rst-pdf-program "xpdf" | 4039 | (defvar rst-pdf-program "xpdf" |
| 4040 | "Program used to preview PDF files.") | 4040 | "Program used to preview PDF files.") |
| 4041 | 4041 | ||
| @@ -4052,7 +4052,7 @@ buffer, if the region is not selected." | |||
| 4052 | ;; output. | 4052 | ;; output. |
| 4053 | )) | 4053 | )) |
| 4054 | 4054 | ||
| 4055 | ;; FIXME: Should be `defcustom` or use something like `browse-url`. | 4055 | ;; FIXME: Should be defcustom or use something like `browse-url'. |
| 4056 | (defvar rst-slides-program "firefox" | 4056 | (defvar rst-slides-program "firefox" |
| 4057 | "Program used to preview S5 slides.") | 4057 | "Program used to preview S5 slides.") |
| 4058 | 4058 | ||
diff --git a/lisp/textmodes/tildify.el b/lisp/textmodes/tildify.el index 0eae67ae83a..4e385a0fbd3 100644 --- a/lisp/textmodes/tildify.el +++ b/lisp/textmodes/tildify.el | |||
| @@ -431,7 +431,7 @@ current `case-fold-search' setting." | |||
| 431 | 431 | ||
| 432 | If | 432 | If |
| 433 | * character before point is a space character, | 433 | * character before point is a space character, |
| 434 | * character before that has “w†character syntax (i.e. it's a word | 434 | * character before that has \"w\" character syntax (i.e. it's a word |
| 435 | constituent), | 435 | constituent), |
| 436 | * `tildify-space-pattern' matches when `looking-back' (no more than 10 | 436 | * `tildify-space-pattern' matches when `looking-back' (no more than 10 |
| 437 | characters) from before the space character, and | 437 | characters) from before the space character, and |
diff --git a/lisp/type-break.el b/lisp/type-break.el index a5a31c9ffd1..5a12f02f876 100644 --- a/lisp/type-break.el +++ b/lisp/type-break.el | |||
| @@ -45,7 +45,7 @@ | |||
| 45 | 45 | ||
| 46 | ;; If you find echo area messages annoying and would prefer to see messages | 46 | ;; If you find echo area messages annoying and would prefer to see messages |
| 47 | ;; in the mode line instead, do M-x type-break-mode-line-message-mode | 47 | ;; in the mode line instead, do M-x type-break-mode-line-message-mode |
| 48 | ;; or set the variable of the same name to `t'. | 48 | ;; or set the variable of the same name to t. |
| 49 | 49 | ||
| 50 | ;; This program can truly cons up a storm because of all the calls to | 50 | ;; This program can truly cons up a storm because of all the calls to |
| 51 | ;; `current-time' (which always returns fresh conses). I'm dismayed by | 51 | ;; `current-time' (which always returns fresh conses). I'm dismayed by |
diff --git a/lisp/vc/compare-w.el b/lisp/vc/compare-w.el index 07c07682186..5b923697241 100644 --- a/lisp/vc/compare-w.el +++ b/lisp/vc/compare-w.el | |||
| @@ -88,7 +88,7 @@ regexp containing some field separator or a newline, depending on | |||
| 88 | the nature of the difference units separator. The variable can | 88 | the nature of the difference units separator. The variable can |
| 89 | be made buffer-local. | 89 | be made buffer-local. |
| 90 | 90 | ||
| 91 | If the value of this variable is `nil' (option \"No sync\"), then | 91 | If the value of this variable is nil (option \"No sync\"), then |
| 92 | no synchronization is performed, and the function `ding' is called | 92 | no synchronization is performed, and the function `ding' is called |
| 93 | to beep or flash the screen when points are mismatched." | 93 | to beep or flash the screen when points are mismatched." |
| 94 | :type '(choice function regexp (const :tag "No sync" nil)) | 94 | :type '(choice function regexp (const :tag "No sync" nil)) |
diff --git a/lisp/vc/ediff-util.el b/lisp/vc/ediff-util.el index 260366e242a..26bba40b4b4 100644 --- a/lisp/vc/ediff-util.el +++ b/lisp/vc/ediff-util.el | |||
| @@ -3988,7 +3988,7 @@ and mail it to the address above. | |||
| 3988 | Please read this first: | 3988 | Please read this first: |
| 3989 | ---------------------- | 3989 | ---------------------- |
| 3990 | 3990 | ||
| 3991 | Some ``bugs'' may actually be no bugs at all. For instance, if you are | 3991 | Some \"bugs\" may actually be no bugs at all. For instance, if you are |
| 3992 | reporting that certain difference regions are not matched as you think they | 3992 | reporting that certain difference regions are not matched as you think they |
| 3993 | should, this is most likely due to the way Unix diff program decides what | 3993 | should, this is most likely due to the way Unix diff program decides what |
| 3994 | constitutes a difference region. Ediff is an Emacs interface to diff, and | 3994 | constitutes a difference region. Ediff is an Emacs interface to diff, and |
diff --git a/lisp/vc/log-edit.el b/lisp/vc/log-edit.el index 08ae998200b..d59549772c0 100644 --- a/lisp/vc/log-edit.el +++ b/lisp/vc/log-edit.el | |||
| @@ -167,7 +167,7 @@ can be obtained from `log-edit-files'." | |||
| 167 | 167 | ||
| 168 | (defvar log-edit-changelog-full-paragraphs t | 168 | (defvar log-edit-changelog-full-paragraphs t |
| 169 | "If non-nil, include full ChangeLog paragraphs in the log. | 169 | "If non-nil, include full ChangeLog paragraphs in the log. |
| 170 | This may be set in the ``local variables'' section of a ChangeLog, to | 170 | This may be set in the \"local variables\" section of a ChangeLog, to |
| 171 | indicate the policy for that ChangeLog. | 171 | indicate the policy for that ChangeLog. |
| 172 | 172 | ||
| 173 | A ChangeLog paragraph is a bunch of log text containing no blank lines; | 173 | A ChangeLog paragraph is a bunch of log text containing no blank lines; |
diff --git a/lisp/vc/log-view.el b/lisp/vc/log-view.el index 042ea131a97..19bbc45f927 100644 --- a/lisp/vc/log-view.el +++ b/lisp/vc/log-view.el | |||
| @@ -404,7 +404,9 @@ This calls `log-view-expanded-log-entry-function' to do the work." | |||
| 404 | (unless (and pos (log-view-inside-comment-p pos)) | 404 | (unless (and pos (log-view-inside-comment-p pos)) |
| 405 | (error "Broken markup in `log-view-toggle-entry-display'")) | 405 | (error "Broken markup in `log-view-toggle-entry-display'")) |
| 406 | (delete-region pos | 406 | (delete-region pos |
| 407 | (next-single-property-change pos 'log-view-comment)) | 407 | (or |
| 408 | (next-single-property-change pos 'log-view-comment) | ||
| 409 | (point-max))) | ||
| 408 | (put-text-property beg (1+ beg) 'log-view-entry-expanded nil) | 410 | (put-text-property beg (1+ beg) 'log-view-entry-expanded nil) |
| 409 | (if (< opoint pos) | 411 | (if (< opoint pos) |
| 410 | (goto-char opoint))) | 412 | (goto-char opoint))) |
| @@ -469,7 +471,10 @@ It assumes that a log entry starts with a line matching | |||
| 469 | ((looking-back "Show 2X entries Show unlimited entries" | 471 | ((looking-back "Show 2X entries Show unlimited entries" |
| 470 | (line-beginning-position)) | 472 | (line-beginning-position)) |
| 471 | (setq looping nil) | 473 | (setq looping nil) |
| 472 | (forward-line -1)))))) | 474 | (forward-line -1)) |
| 475 | ;; There are no buttons if we've turned on unlimited entries. | ||
| 476 | ((eobp) | ||
| 477 | (setq looping nil)))))) | ||
| 473 | 478 | ||
| 474 | (defun log-view-end-of-defun (&optional arg) | 479 | (defun log-view-end-of-defun (&optional arg) |
| 475 | "Move forward to the next Log View entry. | 480 | "Move forward to the next Log View entry. |
diff --git a/lisp/vc/vc-annotate.el b/lisp/vc/vc-annotate.el index 8bcea5f164d..3a50c9b6a2d 100644 --- a/lisp/vc/vc-annotate.el +++ b/lisp/vc/vc-annotate.el | |||
| @@ -175,7 +175,6 @@ List of factors, used to expand/compress the time scale. See `vc-annotate'." | |||
| 175 | (define-key m "p" 'vc-annotate-prev-revision) | 175 | (define-key m "p" 'vc-annotate-prev-revision) |
| 176 | (define-key m "w" 'vc-annotate-working-revision) | 176 | (define-key m "w" 'vc-annotate-working-revision) |
| 177 | (define-key m "v" 'vc-annotate-toggle-annotation-visibility) | 177 | (define-key m "v" 'vc-annotate-toggle-annotation-visibility) |
| 178 | (define-key m "v" 'vc-annotate-toggle-annotation-visibility) | ||
| 179 | (define-key m "\C-m" 'vc-annotate-goto-line) | 178 | (define-key m "\C-m" 'vc-annotate-goto-line) |
| 180 | m) | 179 | m) |
| 181 | "Local keymap used for VC-Annotate mode.") | 180 | "Local keymap used for VC-Annotate mode.") |
| @@ -583,17 +582,15 @@ the file in question, search for the log entry required and move point." | |||
| 583 | (setq prev-rev | 582 | (setq prev-rev |
| 584 | (vc-call-backend vc-annotate-backend 'previous-revision | 583 | (vc-call-backend vc-annotate-backend 'previous-revision |
| 585 | (if filediff fname nil) rev)) | 584 | (if filediff fname nil) rev)) |
| 586 | (if (not prev-rev) | 585 | (vc-diff-internal |
| 587 | (message "Cannot diff from any revision prior to %s" rev) | 586 | t |
| 588 | (vc-diff-internal | 587 | ;; The value passed here should follow what |
| 589 | t | 588 | ;; `vc-deduce-fileset' returns. |
| 590 | ;; The value passed here should follow what | 589 | (list vc-annotate-backend |
| 591 | ;; `vc-deduce-fileset' returns. | 590 | (if filediff |
| 592 | (list vc-annotate-backend | 591 | (list fname) |
| 593 | (if filediff | 592 | nil)) |
| 594 | (list fname) | 593 | prev-rev rev))))) |
| 595 | nil)) | ||
| 596 | prev-rev rev)))))) | ||
| 597 | 594 | ||
| 598 | (defun vc-annotate-show-diff-revision-at-line () | 595 | (defun vc-annotate-show-diff-revision-at-line () |
| 599 | "Visit the diff of the revision at line from its previous revision." | 596 | "Visit the diff of the revision at line from its previous revision." |
| @@ -605,7 +602,10 @@ the file in question, search for the log entry required and move point." | |||
| 605 | (interactive) | 602 | (interactive) |
| 606 | (when (eq 'file (vc-call-backend vc-annotate-backend 'revision-granularity)) | 603 | (when (eq 'file (vc-call-backend vc-annotate-backend 'revision-granularity)) |
| 607 | (error "The %s backend does not support changeset diffs" vc-annotate-backend)) | 604 | (error "The %s backend does not support changeset diffs" vc-annotate-backend)) |
| 608 | (vc-annotate-show-diff-revision-at-line-internal nil)) | 605 | ;; Make sure `diff-goto-source' will be able to find all files. |
| 606 | (let ((default-directory (vc-call-backend vc-annotate-backend | ||
| 607 | 'root default-directory))) | ||
| 608 | (vc-annotate-show-diff-revision-at-line-internal nil))) | ||
| 609 | 609 | ||
| 610 | (defun vc-annotate-warp-revision (revspec &optional file) | 610 | (defun vc-annotate-warp-revision (revspec &optional file) |
| 611 | "Annotate the revision described by REVSPEC. | 611 | "Annotate the revision described by REVSPEC. |
diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el index c9508251c8d..5f8dd0bf0e8 100644 --- a/lisp/vc/vc-bzr.el +++ b/lisp/vc/vc-bzr.el | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | ;; ========== | 34 | ;; ========== |
| 35 | 35 | ||
| 36 | ;; When editing a symlink and *both* the symlink and its target | 36 | ;; When editing a symlink and *both* the symlink and its target |
| 37 | ;; are bzr-versioned, `vc-bzr` presently runs `bzr status` on the | 37 | ;; are bzr-versioned, `vc-bzr' presently runs `bzr status' on the |
| 38 | ;; symlink, thereby not detecting whether the actual contents | 38 | ;; symlink, thereby not detecting whether the actual contents |
| 39 | ;; (that is, the target contents) are changed. | 39 | ;; (that is, the target contents) are changed. |
| 40 | 40 | ||
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el index cbf3da3003f..e3cd5d4e3dc 100644 --- a/lisp/vc/vc-git.el +++ b/lisp/vc/vc-git.el | |||
| @@ -960,14 +960,13 @@ or BRANCH^ (where \"^\" can be repeated)." | |||
| 960 | 960 | ||
| 961 | (defun vc-git-expanded-log-entry (revision) | 961 | (defun vc-git-expanded-log-entry (revision) |
| 962 | (with-temp-buffer | 962 | (with-temp-buffer |
| 963 | (apply 'vc-git-command t nil nil (list "log" revision "-1")) | 963 | (apply 'vc-git-command t nil nil (list "log" revision "-1" "--")) |
| 964 | (goto-char (point-min)) | 964 | (goto-char (point-min)) |
| 965 | (unless (eobp) | 965 | (unless (eobp) |
| 966 | ;; Indent the expanded log entry. | 966 | ;; Indent the expanded log entry. |
| 967 | (indent-region (point-min) (point-max) 2) | 967 | (indent-region (point-min) (point-max) 2) |
| 968 | (buffer-string)))) | 968 | (buffer-string)))) |
| 969 | 969 | ||
| 970 | |||
| 971 | (defun vc-git-region-history (file buffer lfrom lto) | 970 | (defun vc-git-region-history (file buffer lfrom lto) |
| 972 | (vc-git-command buffer 'async nil "log" "-p" ;"--follow" ;FIXME: not supported? | 971 | (vc-git-command buffer 'async nil "log" "-p" ;"--follow" ;FIXME: not supported? |
| 973 | (format "-L%d,%d:%s" lfrom lto (file-relative-name file)))) | 972 | (format "-L%d,%d:%s" lfrom lto (file-relative-name file)))) |
| @@ -1019,12 +1018,18 @@ or BRANCH^ (where \"^\" can be repeated)." | |||
| 1019 | 1018 | ||
| 1020 | (defun vc-git-diff (files &optional rev1 rev2 buffer async) | 1019 | (defun vc-git-diff (files &optional rev1 rev2 buffer async) |
| 1021 | "Get a difference report using Git between two revisions of FILES." | 1020 | "Get a difference report using Git between two revisions of FILES." |
| 1022 | (let (process-file-side-effects) | 1021 | (let (process-file-side-effects |
| 1022 | (command "diff-tree")) | ||
| 1023 | (if rev2 | ||
| 1024 | ;; Diffing against the empty tree. | ||
| 1025 | (unless rev1 (setq rev1 "4b825dc642cb6eb9a060e54bf8d69288fbee4904")) | ||
| 1026 | (setq command "diff-index") | ||
| 1027 | (unless rev1 (setq rev1 "HEAD"))) | ||
| 1023 | (if vc-git-diff-switches | 1028 | (if vc-git-diff-switches |
| 1024 | (apply #'vc-git-command (or buffer "*vc-diff*") | 1029 | (apply #'vc-git-command (or buffer "*vc-diff*") |
| 1025 | (if async 'async 1) | 1030 | (if async 'async 1) |
| 1026 | files | 1031 | files |
| 1027 | (if (and rev1 rev2) "diff-tree" "diff-index") | 1032 | command |
| 1028 | "--exit-code" | 1033 | "--exit-code" |
| 1029 | (append (vc-switches 'git 'diff) | 1034 | (append (vc-switches 'git 'diff) |
| 1030 | (list "-p" (or rev1 "HEAD") rev2 "--"))) | 1035 | (list "-p" (or rev1 "HEAD") rev2 "--"))) |
| @@ -1033,7 +1038,7 @@ or BRANCH^ (where \"^\" can be repeated)." | |||
| 1033 | (concat "diff " | 1038 | (concat "diff " |
| 1034 | (mapconcat 'identity | 1039 | (mapconcat 'identity |
| 1035 | (vc-switches nil 'diff) " ")) | 1040 | (vc-switches nil 'diff) " ")) |
| 1036 | (or rev1 "HEAD") rev2 "--")))) | 1041 | rev1 rev2 "--")))) |
| 1037 | 1042 | ||
| 1038 | (defun vc-git-revision-table (_files) | 1043 | (defun vc-git-revision-table (_files) |
| 1039 | ;; What about `files'?!? --Stef | 1044 | ;; What about `files'?!? --Stef |
| @@ -1061,7 +1066,7 @@ or BRANCH^ (where \"^\" can be repeated)." | |||
| 1061 | (declare-function vc-annotate-convert-time "vc-annotate" (&optional time)) | 1066 | (declare-function vc-annotate-convert-time "vc-annotate" (&optional time)) |
| 1062 | 1067 | ||
| 1063 | (defun vc-git-annotate-time () | 1068 | (defun vc-git-annotate-time () |
| 1064 | (and (re-search-forward "^[0-9a-f]+[^()]+(.*?\\([0-9]+\\)-\\([0-9]+\\)-\\([0-9]+\\) \\(:?\\([0-9]+\\):\\([0-9]+\\):\\([0-9]+\\) \\([-+0-9]+\\)\\)? *[0-9]+) " nil t) | 1069 | (and (re-search-forward "^[0-9a-f^]+[^()]+(.*?\\([0-9]+\\)-\\([0-9]+\\)-\\([0-9]+\\) \\(:?\\([0-9]+\\):\\([0-9]+\\):\\([0-9]+\\) \\([-+0-9]+\\)\\)? *[0-9]+) " nil t) |
| 1065 | (vc-annotate-convert-time | 1070 | (vc-annotate-convert-time |
| 1066 | (apply #'encode-time (mapcar (lambda (match) | 1071 | (apply #'encode-time (mapcar (lambda (match) |
| 1067 | (if (match-beginning match) | 1072 | (if (match-beginning match) |
| @@ -1072,7 +1077,7 @@ or BRANCH^ (where \"^\" can be repeated)." | |||
| 1072 | (defun vc-git-annotate-extract-revision-at-line () | 1077 | (defun vc-git-annotate-extract-revision-at-line () |
| 1073 | (save-excursion | 1078 | (save-excursion |
| 1074 | (beginning-of-line) | 1079 | (beginning-of-line) |
| 1075 | (when (looking-at "\\([0-9a-f^][0-9a-f]+\\) \\(\\([^(]+\\) \\)?") | 1080 | (when (looking-at "\\^?\\([0-9a-f]+\\) \\(\\([^(]+\\) \\)?") |
| 1076 | (let ((revision (match-string-no-properties 1))) | 1081 | (let ((revision (match-string-no-properties 1))) |
| 1077 | (if (match-beginning 2) | 1082 | (if (match-beginning 2) |
| 1078 | (let ((fname (match-string-no-properties 3))) | 1083 | (let ((fname (match-string-no-properties 3))) |
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index d5d0abe6517..1bd04e13430 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el | |||
| @@ -367,7 +367,8 @@ | |||
| 367 | ;; BUFFER is nil. If ASYNC is non-nil, run asynchronously. If REV1 | 367 | ;; BUFFER is nil. If ASYNC is non-nil, run asynchronously. If REV1 |
| 368 | ;; and REV2 are non-nil, report differences from REV1 to REV2. If | 368 | ;; and REV2 are non-nil, report differences from REV1 to REV2. If |
| 369 | ;; REV1 is nil, use the working revision (as found in the | 369 | ;; REV1 is nil, use the working revision (as found in the |
| 370 | ;; repository) as the older revision; if REV2 is nil, use the | 370 | ;; repository) as the older revision if REV2 is nil as well; |
| 371 | ;; otherwise, diff against an empty tree. If REV2 is nil, use the | ||
| 371 | ;; current working-copy contents as the newer revision. This | 372 | ;; current working-copy contents as the newer revision. This |
| 372 | ;; function should pass the value of (vc-switches BACKEND 'diff) to | 373 | ;; function should pass the value of (vc-switches BACKEND 'diff) to |
| 373 | ;; the backend command. It should return a status of either 0 (no | 374 | ;; the backend command. It should return a status of either 0 (no |
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el index 0a9578391e0..d09214b42a3 100644 --- a/lisp/wid-edit.el +++ b/lisp/wid-edit.el | |||
| @@ -3319,7 +3319,7 @@ It reads a directory name from an editable text field." | |||
| 3319 | ;; Avoid a confusing end-of-file error. | 3319 | ;; Avoid a confusing end-of-file error. |
| 3320 | (skip-syntax-forward "\\s-") | 3320 | (skip-syntax-forward "\\s-") |
| 3321 | (if (eobp) | 3321 | (if (eobp) |
| 3322 | (setq err "Empty sexp -- use `nil'?") | 3322 | (setq err "Empty sexp -- use nil?") |
| 3323 | (unless (widget-apply widget :match (read (current-buffer))) | 3323 | (unless (widget-apply widget :match (read (current-buffer))) |
| 3324 | (setq err (widget-get widget :type-error)))) | 3324 | (setq err (widget-get widget :type-error)))) |
| 3325 | ;; Allow whitespace after expression. | 3325 | ;; Allow whitespace after expression. |
diff --git a/lisp/widget.el b/lisp/widget.el index 539f91e63a0..d62f7ffd8d1 100644 --- a/lisp/widget.el +++ b/lisp/widget.el | |||
| @@ -85,7 +85,7 @@ create identical widgets: | |||
| 85 | The third argument DOC is a documentation string for the widget." | 85 | The third argument DOC is a documentation string for the widget." |
| 86 | ;; | 86 | ;; |
| 87 | (unless (or (null doc) (stringp doc)) | 87 | (unless (or (null doc) (stringp doc)) |
| 88 | (error "widget documentation must be `nil' or a string.")) | 88 | (error "widget documentation must be nil or a string.")) |
| 89 | (put name 'widget-type (cons class args)) | 89 | (put name 'widget-type (cons class args)) |
| 90 | (put name 'widget-documentation (purecopy doc)) | 90 | (put name 'widget-documentation (purecopy doc)) |
| 91 | name) | 91 | name) |
diff --git a/lisp/windmove.el b/lisp/windmove.el index c461a00740a..1df74a2d271 100644 --- a/lisp/windmove.el +++ b/lisp/windmove.el | |||
| @@ -488,8 +488,8 @@ If no window is at direction DIR, an error is signaled." | |||
| 488 | 488 | ||
| 489 | 489 | ||
| 490 | ;;; end-user functions | 490 | ;;; end-user functions |
| 491 | ;; these are all simple interactive wrappers to `windmove-do- | 491 | ;; these are all simple interactive wrappers to |
| 492 | ;; window-select', meant to be bound to keys. | 492 | ;; `windmove-do-window-select', meant to be bound to keys. |
| 493 | 493 | ||
| 494 | ;;;###autoload | 494 | ;;;###autoload |
| 495 | (defun windmove-left (&optional arg) | 495 | (defun windmove-left (&optional arg) |
diff --git a/lisp/window.el b/lisp/window.el index 49b7e2cc55d..fad9b2f69fa 100644 --- a/lisp/window.el +++ b/lisp/window.el | |||
| @@ -4311,7 +4311,7 @@ one. If non-nil, reset `quit-restore' parameter to nil. | |||
| 4311 | Optional second argument BURY-OR-KILL tells how to proceed with | 4311 | Optional second argument BURY-OR-KILL tells how to proceed with |
| 4312 | the buffer of WINDOW. The following values are handled: | 4312 | the buffer of WINDOW. The following values are handled: |
| 4313 | 4313 | ||
| 4314 | `nil' means to not handle the buffer in a particular way. This | 4314 | nil means to not handle the buffer in a particular way. This |
| 4315 | means that if WINDOW is not deleted by this function, invoking | 4315 | means that if WINDOW is not deleted by this function, invoking |
| 4316 | `switch-to-prev-buffer' will usually show the buffer again. | 4316 | `switch-to-prev-buffer' will usually show the buffer again. |
| 4317 | 4317 | ||
| @@ -6884,6 +6884,33 @@ the selected window or never appeared in it before, or if | |||
| 6884 | :group 'windows | 6884 | :group 'windows |
| 6885 | :version "24.3") | 6885 | :version "24.3") |
| 6886 | 6886 | ||
| 6887 | (defcustom switch-to-buffer-in-dedicated-window nil | ||
| 6888 | "Allow switching to buffer in strongly dedicated windows. | ||
| 6889 | If non-nil, allow `switch-to-buffer' to proceed when called | ||
| 6890 | interactively and the selected window is strongly dedicated to | ||
| 6891 | its buffer. | ||
| 6892 | |||
| 6893 | The following values are recognized: | ||
| 6894 | |||
| 6895 | nil - disallow switching; signal an error | ||
| 6896 | |||
| 6897 | prompt - prompt user whether to allow switching | ||
| 6898 | |||
| 6899 | pop - perform `pop-to-buffer' instead | ||
| 6900 | |||
| 6901 | t - undedicate selected window and switch | ||
| 6902 | |||
| 6903 | When called non-interactively, `switch-to-buffer' always signals | ||
| 6904 | an error when the selected window is dedicated to its buffer and | ||
| 6905 | FORCE-SAME-WINDOW is non-nil." | ||
| 6906 | :type '(choice | ||
| 6907 | (const :tag "Disallow" nil) | ||
| 6908 | (const :tag "Prompt" prompt) | ||
| 6909 | (const :tag "Pop" pop) | ||
| 6910 | (const :tag "Allow" t)) | ||
| 6911 | :group 'windows | ||
| 6912 | :version "25.1") | ||
| 6913 | |||
| 6887 | (defun switch-to-buffer (buffer-or-name &optional norecord force-same-window) | 6914 | (defun switch-to-buffer (buffer-or-name &optional norecord force-same-window) |
| 6888 | "Display buffer BUFFER-OR-NAME in the selected window. | 6915 | "Display buffer BUFFER-OR-NAME in the selected window. |
| 6889 | 6916 | ||
| @@ -6891,10 +6918,12 @@ WARNING: This is NOT the way to work on another buffer temporarily | |||
| 6891 | within a Lisp program! Use `set-buffer' instead. That avoids | 6918 | within a Lisp program! Use `set-buffer' instead. That avoids |
| 6892 | messing with the window-buffer correspondences. | 6919 | messing with the window-buffer correspondences. |
| 6893 | 6920 | ||
| 6894 | If the selected window cannot display the specified | 6921 | If the selected window cannot display the specified buffer |
| 6895 | buffer (e.g. if it is a minibuffer window or strongly dedicated | 6922 | because it is a minibuffer window or strongly dedicated to |
| 6896 | to another buffer), call `pop-to-buffer' to select the buffer in | 6923 | another buffer, call `pop-to-buffer' to select the buffer in |
| 6897 | another window. | 6924 | another window. In interactive use, if the selected window is |
| 6925 | strongly dedicated to its buffer, the value of the option | ||
| 6926 | `switch-to-buffer-in-dedicated-window' specifies how to proceed. | ||
| 6898 | 6927 | ||
| 6899 | If called interactively, read the buffer name using the | 6928 | If called interactively, read the buffer name using the |
| 6900 | minibuffer. The variable `confirm-nonexistent-file-or-buffer' | 6929 | minibuffer. The variable `confirm-nonexistent-file-or-buffer' |
| @@ -6911,8 +6940,9 @@ at the front of the buffer list, and do not make the window | |||
| 6911 | displaying it the most recently selected one. | 6940 | displaying it the most recently selected one. |
| 6912 | 6941 | ||
| 6913 | If optional argument FORCE-SAME-WINDOW is non-nil, the buffer | 6942 | If optional argument FORCE-SAME-WINDOW is non-nil, the buffer |
| 6914 | must be displayed in the selected window; if that is impossible, | 6943 | must be displayed in the selected window when called |
| 6915 | signal an error rather than calling `pop-to-buffer'. | 6944 | non-interactively; if that is impossible, signal an error rather |
| 6945 | than calling `pop-to-buffer'. | ||
| 6916 | 6946 | ||
| 6917 | The option `switch-to-buffer-preserve-window-point' can be used | 6947 | The option `switch-to-buffer-preserve-window-point' can be used |
| 6918 | to make the buffer appear at its last position in the selected | 6948 | to make the buffer appear at its last position in the selected |
| @@ -6920,7 +6950,25 @@ window. | |||
| 6920 | 6950 | ||
| 6921 | Return the buffer switched to." | 6951 | Return the buffer switched to." |
| 6922 | (interactive | 6952 | (interactive |
| 6923 | (list (read-buffer-to-switch "Switch to buffer: ") nil 'force-same-window)) | 6953 | (let ((force-same-window |
| 6954 | (cond | ||
| 6955 | ((window-minibuffer-p) nil) | ||
| 6956 | ((not (eq (window-dedicated-p) t)) 'force-same-window) | ||
| 6957 | ((pcase switch-to-buffer-in-dedicated-window | ||
| 6958 | (`nil (user-error | ||
| 6959 | "Cannot switch buffers in a dedicated window")) | ||
| 6960 | (`prompt | ||
| 6961 | (if (y-or-n-p | ||
| 6962 | (format "Window is dedicated to %s; undedicate it" | ||
| 6963 | (window-buffer))) | ||
| 6964 | (progn | ||
| 6965 | (set-window-dedicated-p nil nil) | ||
| 6966 | 'force-same-window) | ||
| 6967 | (user-error | ||
| 6968 | "Cannot switch buffers in a dedicated window"))) | ||
| 6969 | (`pop nil) | ||
| 6970 | (_ (set-window-dedicated-p nil nil) 'force-same-window)))))) | ||
| 6971 | (list (read-buffer-to-switch "Switch to buffer: ") nil force-same-window))) | ||
| 6924 | (let ((buffer (window-normalize-buffer-to-switch-to buffer-or-name))) | 6972 | (let ((buffer (window-normalize-buffer-to-switch-to buffer-or-name))) |
| 6925 | (cond | 6973 | (cond |
| 6926 | ;; Don't call set-window-buffer if it's not needed since it | 6974 | ;; Don't call set-window-buffer if it's not needed since it |
| @@ -8059,7 +8107,7 @@ This function is responsible for combining the sizes of the | |||
| 8059 | displayed windows and returning a cons (WIDTH . HEIGHT) | 8107 | displayed windows and returning a cons (WIDTH . HEIGHT) |
| 8060 | describing the width and height with which Emacs will call | 8108 | describing the width and height with which Emacs will call |
| 8061 | `set-process-window-size' for that process. If the function | 8109 | `set-process-window-size' for that process. If the function |
| 8062 | returns `nil', Emacs does not call `set-process-window-size'. | 8110 | returns nil, Emacs does not call `set-process-window-size'. |
| 8063 | 8111 | ||
| 8064 | This function is called with the process buffer as the current | 8112 | This function is called with the process buffer as the current |
| 8065 | buffer and with two arguments: the process and a list of windows | 8113 | buffer and with two arguments: the process and a list of windows |
diff --git a/lisp/woman.el b/lisp/woman.el index 611ba743652..75c3d2e3822 100644 --- a/lisp/woman.el +++ b/lisp/woman.el | |||
| @@ -161,7 +161,7 @@ | |||
| 161 | 161 | ||
| 162 | ;; The WoMan menu provides an option to make a contents menu for the | 162 | ;; The WoMan menu provides an option to make a contents menu for the |
| 163 | ;; current man page (using imenu). Alternatively, if you set the | 163 | ;; current man page (using imenu). Alternatively, if you set the |
| 164 | ;; variable `woman-imenu' to `t' then WoMan will do it automatically | 164 | ;; variable `woman-imenu' to t then WoMan will do it automatically |
| 165 | ;; for every man page. The menu title is the value of the variable | 165 | ;; for every man page. The menu title is the value of the variable |
| 166 | ;; `woman-imenu-title', which is "CONTENTS" by default. By default, | 166 | ;; `woman-imenu-title', which is "CONTENTS" by default. By default, |
| 167 | ;; the menu shows manual sections and subsections, but you can change | 167 | ;; the menu shows manual sections and subsections, but you can change |
| @@ -179,7 +179,7 @@ | |||
| 179 | ;; Howard Melman made (essentially) the following suggestions, which | 179 | ;; Howard Melman made (essentially) the following suggestions, which |
| 180 | ;; are slightly different from the expression that I currently use. | 180 | ;; are slightly different from the expression that I currently use. |
| 181 | ;; You may prefer one of Howard's suggestions, which I think assume | 181 | ;; You may prefer one of Howard's suggestions, which I think assume |
| 182 | ;; that `case-fold-search' is `t' (which it is by default): | 182 | ;; that `case-fold-search' is t (which it is by default): |
| 183 | 183 | ||
| 184 | ;; (setq woman-imenu-generic-expression | 184 | ;; (setq woman-imenu-generic-expression |
| 185 | ;; '((nil "^\\( \\)?\\([A-Z][A-Z ]+[A-Z]\\)[ \t]*$" 2))) | 185 | ;; '((nil "^\\( \\)?\\([A-Z][A-Z ]+[A-Z]\\)[ \t]*$" 2))) |
| @@ -217,7 +217,7 @@ | |||
| 217 | ;; This is modeled on the byte-compiler. It logs all files formatted | 217 | ;; This is modeled on the byte-compiler. It logs all files formatted |
| 218 | ;; by WoMan, and if WoMan finds anything that it cannot handle then it | 218 | ;; by WoMan, and if WoMan finds anything that it cannot handle then it |
| 219 | ;; writes a warning to this buffer. If the variable `woman-show-log' | 219 | ;; writes a warning to this buffer. If the variable `woman-show-log' |
| 220 | ;; is non-nil (by default it is `nil') then WoMan automatically | 220 | ;; is non-nil (by default it is nil) then WoMan automatically |
| 221 | ;; displays this buffer. Many WoMan warnings can be completely | 221 | ;; displays this buffer. Many WoMan warnings can be completely |
| 222 | ;; ignored, because they are reporting the fact that WoMan has ignored | 222 | ;; ignored, because they are reporting the fact that WoMan has ignored |
| 223 | ;; requests that it is correct to ignore. In some future version this | 223 | ;; requests that it is correct to ignore. In some future version this |
| @@ -228,8 +228,8 @@ | |||
| 228 | 228 | ||
| 229 | ;; Uninterpreted ?roff requests can optionally be left in the | 229 | ;; Uninterpreted ?roff requests can optionally be left in the |
| 230 | ;; formatted buffer to indicate precisely where they occur by | 230 | ;; formatted buffer to indicate precisely where they occur by |
| 231 | ;; resetting the variable `woman-ignore' to `nil' (by default it is | 231 | ;; resetting the variable `woman-ignore' to nil (by default it is |
| 232 | ;; `t'). | 232 | ;; t). |
| 233 | 233 | ||
| 234 | ;; Automatic initiation of woman decoding | 234 | ;; Automatic initiation of woman decoding |
| 235 | 235 | ||
| @@ -278,7 +278,7 @@ | |||
| 278 | ;; CASE-DEPENDENCE OF FILENAMES. By default, WoMan ignores case in | 278 | ;; CASE-DEPENDENCE OF FILENAMES. By default, WoMan ignores case in |
| 279 | ;; file pathnames only when it seems appropriate. MS-Windows users | 279 | ;; file pathnames only when it seems appropriate. MS-Windows users |
| 280 | ;; who want complete case independence should set the NTEmacs variable | 280 | ;; who want complete case independence should set the NTEmacs variable |
| 281 | ;; `w32-downcase-file-names' to `t' and use all lower case when | 281 | ;; `w32-downcase-file-names' to t and use all lower case when |
| 282 | ;; setting WoMan file paths. | 282 | ;; setting WoMan file paths. |
| 283 | 283 | ||
| 284 | ;; (1) INCOMPATIBLE CHANGE! WoMan no longer uses a persistent topic | 284 | ;; (1) INCOMPATIBLE CHANGE! WoMan no longer uses a persistent topic |
diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el index f8ae73c7b75..2bb71549564 100644 --- a/lisp/xt-mouse.el +++ b/lisp/xt-mouse.el | |||
| @@ -321,21 +321,21 @@ Enables basic mouse tracking, mouse motion events and finally | |||
| 321 | extended tracking on terminals that support it. The following | 321 | extended tracking on terminals that support it. The following |
| 322 | escape sequences are understood by modern xterms: | 322 | escape sequences are understood by modern xterms: |
| 323 | 323 | ||
| 324 | \"\\e[?1000h\" `Basic mouse mode´: Enables reports for mouse | 324 | \"\\e[?1000h\" \"Basic mouse mode\": Enables reports for mouse |
| 325 | clicks. There is a limit to the maximum row/column | 325 | clicks. There is a limit to the maximum row/column |
| 326 | position (<= 223), which can be reported in this | 326 | position (<= 223), which can be reported in this |
| 327 | basic mode. | 327 | basic mode. |
| 328 | 328 | ||
| 329 | \"\\e[?1002h\" `Mouse motion mode´: Enables reports for mouse | 329 | \"\\e[?1002h\" \"Mouse motion mode\": Enables reports for mouse |
| 330 | motion events during dragging operations. | 330 | motion events during dragging operations. |
| 331 | 331 | ||
| 332 | \"\\e[?1005h\" `UTF-8 coordinate extension`: Enables an extension | 332 | \"\\e[?1005h\" \"UTF-8 coordinate extension\": Enables an extension |
| 333 | to the basic mouse mode, which uses UTF-8 | 333 | to the basic mouse mode, which uses UTF-8 |
| 334 | characters to overcome the 223 row/column limit. This | 334 | characters to overcome the 223 row/column limit. This |
| 335 | extension may conflict with non UTF-8 applications or | 335 | extension may conflict with non UTF-8 applications or |
| 336 | non UTF-8 locales. | 336 | non UTF-8 locales. |
| 337 | 337 | ||
| 338 | \"\\e[?1006h\" `SGR coordinate extension´: Enables a newer | 338 | \"\\e[?1006h\" \"SGR coordinate extension\": Enables a newer |
| 339 | alternative extension to the basic mouse mode, which | 339 | alternative extension to the basic mouse mode, which |
| 340 | overcomes the 223 row/column limit without the | 340 | overcomes the 223 row/column limit without the |
| 341 | drawbacks of the UTF-8 coordinate extension. | 341 | drawbacks of the UTF-8 coordinate extension. |
diff --git a/src/buffer.c b/src/buffer.c index b09676c438d..c78d08c53d2 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -1467,15 +1467,15 @@ DEFUN ("other-buffer", Fother_buffer, Sother_buffer, 0, 3, 0, | |||
| 1467 | Buffers not visible in windows are preferred to visible buffers, unless | 1467 | Buffers not visible in windows are preferred to visible buffers, unless |
| 1468 | optional second argument VISIBLE-OK is non-nil. Ignore the argument | 1468 | optional second argument VISIBLE-OK is non-nil. Ignore the argument |
| 1469 | BUFFER unless it denotes a live buffer. If the optional third argument | 1469 | BUFFER unless it denotes a live buffer. If the optional third argument |
| 1470 | FRAME is non-nil, use that frame's buffer list instead of the selected | 1470 | FRAME specifies a live frame, then use that frame's buffer list instead |
| 1471 | frame's buffer list. | 1471 | of the selected frame's buffer list. |
| 1472 | 1472 | ||
| 1473 | The buffer is found by scanning the selected or specified frame's buffer | 1473 | The buffer is found by scanning the selected or specified frame's buffer |
| 1474 | list first, followed by the list of all buffers. If no other buffer | 1474 | list first, followed by the list of all buffers. If no other buffer |
| 1475 | exists, return the buffer `*scratch*' (creating it if necessary). */) | 1475 | exists, return the buffer `*scratch*' (creating it if necessary). */) |
| 1476 | (Lisp_Object buffer, Lisp_Object visible_ok, Lisp_Object frame) | 1476 | (Lisp_Object buffer, Lisp_Object visible_ok, Lisp_Object frame) |
| 1477 | { | 1477 | { |
| 1478 | struct frame *f = decode_any_frame (frame); | 1478 | struct frame *f = decode_live_frame (frame); |
| 1479 | Lisp_Object tail = f->buffer_list, pred = f->buffer_predicate; | 1479 | Lisp_Object tail = f->buffer_list, pred = f->buffer_predicate; |
| 1480 | Lisp_Object buf, notsogood = Qnil; | 1480 | Lisp_Object buf, notsogood = Qnil; |
| 1481 | 1481 | ||
| @@ -6106,7 +6106,7 @@ An entry of the form POSITION indicates that point was at the buffer | |||
| 6106 | location given by the integer. Undoing an entry of this form places | 6106 | location given by the integer. Undoing an entry of this form places |
| 6107 | point at POSITION. | 6107 | point at POSITION. |
| 6108 | 6108 | ||
| 6109 | Entries with value `nil' mark undo boundaries. The undo command treats | 6109 | Entries with value nil mark undo boundaries. The undo command treats |
| 6110 | the changes between two undo boundaries as a single step to be undone. | 6110 | the changes between two undo boundaries as a single step to be undone. |
| 6111 | 6111 | ||
| 6112 | If the value of the variable is t, undo information is not recorded. */); | 6112 | If the value of the variable is t, undo information is not recorded. */); |
diff --git a/src/cmds.c b/src/cmds.c index b590805ea8a..6f9982eebb2 100644 --- a/src/cmds.c +++ b/src/cmds.c | |||
| @@ -110,10 +110,17 @@ DEFUN ("forward-line", Fforward_line, Sforward_line, 0, 1, "^p", | |||
| 110 | Precisely, if point is on line I, move to the start of line I + N | 110 | Precisely, if point is on line I, move to the start of line I + N |
| 111 | \("start of line" in the logical order). | 111 | \("start of line" in the logical order). |
| 112 | If there isn't room, go as far as possible (no error). | 112 | If there isn't room, go as far as possible (no error). |
| 113 | |||
| 113 | Returns the count of lines left to move. If moving forward, | 114 | Returns the count of lines left to move. If moving forward, |
| 114 | that is N - number of lines moved; if backward, N + number moved. | 115 | that is N minus number of lines moved; if backward, N plus number |
| 115 | With positive N, a non-empty line at the end counts as one line | 116 | moved. |
| 116 | successfully moved (for the return value). */) | 117 | |
| 118 | Exception: With positive N, a non-empty line at the end of the | ||
| 119 | buffer, or of its accessible portion, counts as one line | ||
| 120 | successfully moved (for the return value). This means that the | ||
| 121 | function will move point to the end of such a line and will count | ||
| 122 | it as a line moved across, even though there is no next line to | ||
| 123 | go to its beginning. */) | ||
| 117 | (Lisp_Object n) | 124 | (Lisp_Object n) |
| 118 | { | 125 | { |
| 119 | ptrdiff_t opoint = PT, pos, pos_byte, shortage, count; | 126 | ptrdiff_t opoint = PT, pos, pos_byte, shortage, count; |
diff --git a/src/font.c b/src/font.c index 603e998ed3f..2ccfd15d436 100644 --- a/src/font.c +++ b/src/font.c | |||
| @@ -3822,17 +3822,17 @@ They are the same as face attributes of the same name. See | |||
| 3822 | 3822 | ||
| 3823 | `:foundry' | 3823 | `:foundry' |
| 3824 | 3824 | ||
| 3825 | VALUE must be a string or a symbol specifying the font foundry, e.g. ``misc''. | 3825 | VALUE must be a string or a symbol specifying the font foundry, e.g. `misc'. |
| 3826 | 3826 | ||
| 3827 | `:adstyle' | 3827 | `:adstyle' |
| 3828 | 3828 | ||
| 3829 | VALUE must be a string or a symbol specifying the additional | 3829 | VALUE must be a string or a symbol specifying the additional |
| 3830 | typographic style information of a font, e.g. ``sans''. | 3830 | typographic style information of a font, e.g. `sans'. |
| 3831 | 3831 | ||
| 3832 | `:registry' | 3832 | `:registry' |
| 3833 | 3833 | ||
| 3834 | VALUE must be a string or a symbol specifying the charset registry and | 3834 | VALUE must be a string or a symbol specifying the charset registry and |
| 3835 | encoding of a font, e.g. ``iso8859-1''. | 3835 | encoding of a font, e.g. `iso8859-1'. |
| 3836 | 3836 | ||
| 3837 | `:size' | 3837 | `:size' |
| 3838 | 3838 | ||
| @@ -3866,7 +3866,7 @@ required OpenType features. | |||
| 3866 | GSUB: List of OpenType GSUB feature tag symbols, or nil if none required. | 3866 | GSUB: List of OpenType GSUB feature tag symbols, or nil if none required. |
| 3867 | GPOS: List of OpenType GPOS feature tag symbols, or nil if none required. | 3867 | GPOS: List of OpenType GPOS feature tag symbols, or nil if none required. |
| 3868 | 3868 | ||
| 3869 | GSUB and GPOS may contain `nil' element. In such a case, the font | 3869 | GSUB and GPOS may contain nil elements. In such a case, the font |
| 3870 | must not have any of the remaining elements. | 3870 | must not have any of the remaining elements. |
| 3871 | 3871 | ||
| 3872 | For instance, if the VALUE is `(thai nil nil (mark))', the font must | 3872 | For instance, if the VALUE is `(thai nil nil (mark))', the font must |
| @@ -5011,7 +5011,7 @@ build_style_table (const struct table_entry *entry, int nelement) | |||
| 5011 | static Lisp_Object Vfont_log_deferred; | 5011 | static Lisp_Object Vfont_log_deferred; |
| 5012 | 5012 | ||
| 5013 | /* Prepend the font-related logging data in Vfont_log if it is not | 5013 | /* Prepend the font-related logging data in Vfont_log if it is not |
| 5014 | `t'. ACTION describes a kind of font-related action (e.g. listing, | 5014 | t. ACTION describes a kind of font-related action (e.g. listing, |
| 5015 | opening), ARG is the argument for the action, and RESULT is the | 5015 | opening), ARG is the argument for the action, and RESULT is the |
| 5016 | result of the action. */ | 5016 | result of the action. */ |
| 5017 | void | 5017 | void |
diff --git a/src/frame.c b/src/frame.c index 22086552ea3..478bb00337b 100644 --- a/src/frame.c +++ b/src/frame.c | |||
| @@ -1823,9 +1823,10 @@ DEFUN ("delete-frame", Fdelete_frame, Sdelete_frame, 0, 2, "", | |||
| 1823 | doc: /* Delete FRAME, permanently eliminating it from use. | 1823 | doc: /* Delete FRAME, permanently eliminating it from use. |
| 1824 | FRAME defaults to the selected frame. | 1824 | FRAME defaults to the selected frame. |
| 1825 | 1825 | ||
| 1826 | A frame may not be deleted if its minibuffer is used by other frames. | 1826 | A frame may not be deleted if its minibuffer serves as surrogate |
| 1827 | Normally, you may not delete a frame if all other frames are invisible, | 1827 | minibuffer for another frame. Normally, you may not delete a frame if |
| 1828 | but if the second optional argument FORCE is non-nil, you may do so. | 1828 | all other frames are invisible, but if the second optional argument |
| 1829 | FORCE is non-nil, you may do so. | ||
| 1829 | 1830 | ||
| 1830 | This function runs `delete-frame-functions' before actually | 1831 | This function runs `delete-frame-functions' before actually |
| 1831 | deleting the frame, unless the frame is a tooltip. | 1832 | deleting the frame, unless the frame is a tooltip. |
| @@ -5151,7 +5152,7 @@ a non-nil value in your init file. */); | |||
| 5151 | If this option is nil, setting font, menu bar, tool bar, internal | 5152 | If this option is nil, setting font, menu bar, tool bar, internal |
| 5152 | borders, fringes or scroll bars of a specific frame may resize the frame | 5153 | borders, fringes or scroll bars of a specific frame may resize the frame |
| 5153 | in order to preserve the number of columns or lines it displays. If | 5154 | in order to preserve the number of columns or lines it displays. If |
| 5154 | this option is `t', no such resizing is done. Note that the size of | 5155 | this option is t, no such resizing is done. Note that the size of |
| 5155 | fullscreen and maximized frames, the height of fullheight frames and the | 5156 | fullscreen and maximized frames, the height of fullheight frames and the |
| 5156 | width of fullwidth frames never change implicitly. | 5157 | width of fullwidth frames never change implicitly. |
| 5157 | 5158 | ||
| @@ -5167,14 +5168,14 @@ Changing any of the parameters `scroll-bar-width', `scroll-bar-height', | |||
| 5167 | window. This means, for example, that removing vertical scroll bars on | 5168 | window. This means, for example, that removing vertical scroll bars on |
| 5168 | a frame containing several side by side windows will shrink the frame | 5169 | a frame containing several side by side windows will shrink the frame |
| 5169 | width by the width of one scroll bar provided this option is nil and | 5170 | width by the width of one scroll bar provided this option is nil and |
| 5170 | keep it unchanged if this option is either `t' or a list containing | 5171 | keep it unchanged if this option is either t or a list containing |
| 5171 | `vertical-scroll-bars'. | 5172 | `vertical-scroll-bars'. |
| 5172 | 5173 | ||
| 5173 | The default value is '(tool-bar-lines) on Lucid, Motif and Windows | 5174 | The default value is '(tool-bar-lines) on Lucid, Motif and Windows |
| 5174 | \(which means that adding/removing a tool bar does not change the frame | 5175 | \(which means that adding/removing a tool bar does not change the frame |
| 5175 | height), nil on all other window systems including GTK+ (which means | 5176 | height), nil on all other window systems including GTK+ (which means |
| 5176 | that changing any of the parameters listed above may change the size of | 5177 | that changing any of the parameters listed above may change the size of |
| 5177 | the frame), and `t' otherwise (which means the frame size never changes | 5178 | the frame), and t otherwise (which means the frame size never changes |
| 5178 | implicitly when there's no window system support). | 5179 | implicitly when there's no window system support). |
| 5179 | 5180 | ||
| 5180 | Note that when a frame is not large enough to accommodate a change of | 5181 | Note that when a frame is not large enough to accommodate a change of |
diff --git a/src/gnutls.c b/src/gnutls.c index 9b8ae2bd1a8..9c2d86ecdfc 100644 --- a/src/gnutls.c +++ b/src/gnutls.c | |||
| @@ -1181,7 +1181,7 @@ gnutls_certificate_set_verify_flags. | |||
| 1181 | instead. | 1181 | instead. |
| 1182 | 1182 | ||
| 1183 | :verify-error is a list of symbols to express verification checks or | 1183 | :verify-error is a list of symbols to express verification checks or |
| 1184 | `t' to do all checks. Currently it can contain `:trustfiles' and | 1184 | t to do all checks. Currently it can contain `:trustfiles' and |
| 1185 | `:hostname' to verify the certificate or the hostname respectively. | 1185 | `:hostname' to verify the certificate or the hostname respectively. |
| 1186 | 1186 | ||
| 1187 | :min-prime-bits is the minimum accepted number of bits the client will | 1187 | :min-prime-bits is the minimum accepted number of bits the client will |
diff --git a/src/keyboard.c b/src/keyboard.c index 77f7fb97898..eb66c445559 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -1702,7 +1702,8 @@ adjust_point_for_property (ptrdiff_t last_pt, bool modified) | |||
| 1702 | if (check_display | 1702 | if (check_display |
| 1703 | && PT > BEGV && PT < ZV | 1703 | && PT > BEGV && PT < ZV |
| 1704 | && !NILP (val = get_char_property_and_overlay | 1704 | && !NILP (val = get_char_property_and_overlay |
| 1705 | (make_number (PT), Qdisplay, Qnil, &overlay)) | 1705 | (make_number (PT), Qdisplay, selected_window, |
| 1706 | &overlay)) | ||
| 1706 | && display_prop_intangible_p (val, overlay, PT, PT_BYTE) | 1707 | && display_prop_intangible_p (val, overlay, PT, PT_BYTE) |
| 1707 | && (!OVERLAYP (overlay) | 1708 | && (!OVERLAYP (overlay) |
| 1708 | ? get_property_and_range (PT, Qdisplay, &val, &beg, &end, Qnil) | 1709 | ? get_property_and_range (PT, Qdisplay, &val, &beg, &end, Qnil) |
diff --git a/src/keymap.c b/src/keymap.c index d10c00489d1..e9898051dc7 100644 --- a/src/keymap.c +++ b/src/keymap.c | |||
| @@ -498,7 +498,7 @@ access_keymap_1 (Lisp_Object map, Lisp_Object idx, | |||
| 498 | if (INTEGERP (idx) && (XFASTINT (idx) & CHAR_MODIFIER_MASK) == 0) | 498 | if (INTEGERP (idx) && (XFASTINT (idx) & CHAR_MODIFIER_MASK) == 0) |
| 499 | { | 499 | { |
| 500 | val = Faref (binding, idx); | 500 | val = Faref (binding, idx); |
| 501 | /* `nil' has a special meaning for char-tables, so | 501 | /* nil has a special meaning for char-tables, so |
| 502 | we use something else to record an explicitly | 502 | we use something else to record an explicitly |
| 503 | unbound entry. */ | 503 | unbound entry. */ |
| 504 | if (NILP (val)) | 504 | if (NILP (val)) |
| @@ -849,7 +849,7 @@ store_in_keymap (Lisp_Object keymap, register Lisp_Object idx, Lisp_Object def) | |||
| 849 | if (NATNUMP (idx) && !(XFASTINT (idx) & CHAR_MODIFIER_MASK)) | 849 | if (NATNUMP (idx) && !(XFASTINT (idx) & CHAR_MODIFIER_MASK)) |
| 850 | { | 850 | { |
| 851 | Faset (elt, idx, | 851 | Faset (elt, idx, |
| 852 | /* `nil' has a special meaning for char-tables, so | 852 | /* nil has a special meaning for char-tables, so |
| 853 | we use something else to record an explicitly | 853 | we use something else to record an explicitly |
| 854 | unbound entry. */ | 854 | unbound entry. */ |
| 855 | NILP (def) ? Qt : def); | 855 | NILP (def) ? Qt : def); |
diff --git a/src/nsfns.m b/src/nsfns.m index 8a3c6ccf2b0..6a2e2ff14a4 100644 --- a/src/nsfns.m +++ b/src/nsfns.m | |||
| @@ -749,7 +749,7 @@ ns_implicitly_set_icon_type (struct frame *f) | |||
| 749 | chain = XCDR (chain)) | 749 | chain = XCDR (chain)) |
| 750 | { | 750 | { |
| 751 | elt = XCAR (chain); | 751 | elt = XCAR (chain); |
| 752 | /* special case: 't' means go by file type */ | 752 | /* special case: t means go by file type */ |
| 753 | if (SYMBOLP (elt) && EQ (elt, Qt) && SSDATA (f->name)[0] == '/') | 753 | if (SYMBOLP (elt) && EQ (elt, Qt) && SSDATA (f->name)[0] == '/') |
| 754 | { | 754 | { |
| 755 | NSString *str | 755 | NSString *str |
| @@ -2836,13 +2836,13 @@ elements (all size values are in pixels). | |||
| 2836 | 2836 | ||
| 2837 | - `title-bar-height' is the height of the title bar of FRAME. | 2837 | - `title-bar-height' is the height of the title bar of FRAME. |
| 2838 | 2838 | ||
| 2839 | - `menu-bar-external' if `t' means the menu bar is external (not | 2839 | - `menu-bar-external' if t means the menu bar is external (not |
| 2840 | included in the inner edges of FRAME). | 2840 | included in the inner edges of FRAME). |
| 2841 | 2841 | ||
| 2842 | - `menu-bar-size' is a cons of the width and height of the menu bar of | 2842 | - `menu-bar-size' is a cons of the width and height of the menu bar of |
| 2843 | FRAME. | 2843 | FRAME. |
| 2844 | 2844 | ||
| 2845 | - `tool-bar-external' if `t' means the tool bar is external (not | 2845 | - `tool-bar-external' if t means the tool bar is external (not |
| 2846 | included in the inner edges of FRAME). | 2846 | included in the inner edges of FRAME). |
| 2847 | 2847 | ||
| 2848 | - `tool-bar-side' tells tells on which side the tool bar on FRAME is and | 2848 | - `tool-bar-side' tells tells on which side the tool bar on FRAME is and |
diff --git a/src/w32fns.c b/src/w32fns.c index b9d7bd4d75b..3a6fa624056 100644 --- a/src/w32fns.c +++ b/src/w32fns.c | |||
| @@ -7535,13 +7535,13 @@ elements (all size values are in pixels). | |||
| 7535 | 7535 | ||
| 7536 | - `title-bar-height' is the height of the title bar of FRAME. | 7536 | - `title-bar-height' is the height of the title bar of FRAME. |
| 7537 | 7537 | ||
| 7538 | - `menu-bar-external' if `t' means the menu bar is by default external | 7538 | - `menu-bar-external' if t means the menu bar is by default external |
| 7539 | (not included in the inner size of FRAME). | 7539 | (not included in the inner size of FRAME). |
| 7540 | 7540 | ||
| 7541 | - `menu-bar-size' is a cons of the width and height of the menu bar of | 7541 | - `menu-bar-size' is a cons of the width and height of the menu bar of |
| 7542 | FRAME. | 7542 | FRAME. |
| 7543 | 7543 | ||
| 7544 | - `tool-bar-external' if `t' means the tool bar is by default external | 7544 | - `tool-bar-external' if t means the tool bar is by default external |
| 7545 | (not included in the inner size of FRAME). | 7545 | (not included in the inner size of FRAME). |
| 7546 | 7546 | ||
| 7547 | - `tool-bar-side' tells tells on which side the tool bar on FRAME is by | 7547 | - `tool-bar-side' tells tells on which side the tool bar on FRAME is by |
diff --git a/src/w32heap.c b/src/w32heap.c index ee0eb161502..47ffec1c303 100644 --- a/src/w32heap.c +++ b/src/w32heap.c | |||
| @@ -115,9 +115,9 @@ typedef struct _RTL_HEAP_PARAMETERS { | |||
| 115 | to build only the first bootstrap-emacs.exe with the large size, | 115 | to build only the first bootstrap-emacs.exe with the large size, |
| 116 | and reset that to a lower value afterwards. */ | 116 | and reset that to a lower value afterwards. */ |
| 117 | #if defined _WIN64 || defined WIDE_EMACS_INT | 117 | #if defined _WIN64 || defined WIDE_EMACS_INT |
| 118 | # define DUMPED_HEAP_SIZE (18*1024*1024) | 118 | # define DUMPED_HEAP_SIZE (19*1024*1024) |
| 119 | #else | 119 | #else |
| 120 | # define DUMPED_HEAP_SIZE (11*1024*1024) | 120 | # define DUMPED_HEAP_SIZE (12*1024*1024) |
| 121 | #endif | 121 | #endif |
| 122 | 122 | ||
| 123 | static unsigned char dumped_data[DUMPED_HEAP_SIZE]; | 123 | static unsigned char dumped_data[DUMPED_HEAP_SIZE]; |
diff --git a/src/w32term.c b/src/w32term.c index d415b13f715..089c43c8a26 100644 --- a/src/w32term.c +++ b/src/w32term.c | |||
| @@ -1410,7 +1410,7 @@ x_draw_glyphless_glyph_string_foreground (struct glyph_string *s) | |||
| 1410 | 1410 | ||
| 1411 | if (glyph->u.glyphless.method == GLYPHLESS_DISPLAY_ACRONYM) | 1411 | if (glyph->u.glyphless.method == GLYPHLESS_DISPLAY_ACRONYM) |
| 1412 | { | 1412 | { |
| 1413 | if (len > 1 | 1413 | if (len > 0 |
| 1414 | && CHAR_TABLE_P (Vglyphless_char_display) | 1414 | && CHAR_TABLE_P (Vglyphless_char_display) |
| 1415 | && (CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (Vglyphless_char_display)) | 1415 | && (CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (Vglyphless_char_display)) |
| 1416 | >= 1)) | 1416 | >= 1)) |
diff --git a/src/xdisp.c b/src/xdisp.c index c2f0b747c6e..87f110e667d 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -4899,6 +4899,20 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object, | |||
| 4899 | { | 4899 | { |
| 4900 | start_pos = *position; | 4900 | start_pos = *position; |
| 4901 | *position = display_prop_end (it, object, start_pos); | 4901 | *position = display_prop_end (it, object, start_pos); |
| 4902 | /* If the display property comes from an overlay, don't consider | ||
| 4903 | any potential stop_charpos values before the end of that | ||
| 4904 | overlay. Since display_prop_end will happily find another | ||
| 4905 | 'display' property coming from some other overlay or text | ||
| 4906 | property on buffer positions before this overlay's end, we | ||
| 4907 | need to ignore them, or else we risk displaying this | ||
| 4908 | overlay's display string/image twice. */ | ||
| 4909 | if (!NILP (overlay)) | ||
| 4910 | { | ||
| 4911 | ptrdiff_t ovendpos = OVERLAY_POSITION (OVERLAY_END (overlay)); | ||
| 4912 | |||
| 4913 | if (ovendpos > CHARPOS (*position)) | ||
| 4914 | SET_TEXT_POS (*position, ovendpos, CHAR_TO_BYTE (ovendpos)); | ||
| 4915 | } | ||
| 4902 | } | 4916 | } |
| 4903 | value = Qnil; | 4917 | value = Qnil; |
| 4904 | 4918 | ||
| @@ -29145,6 +29159,7 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, | |||
| 29145 | } | 29159 | } |
| 29146 | 29160 | ||
| 29147 | /* Change the mouse face according to what is under X/Y. */ | 29161 | /* Change the mouse face according to what is under X/Y. */ |
| 29162 | bool mouse_face_shown = false; | ||
| 29148 | if (STRINGP (string)) | 29163 | if (STRINGP (string)) |
| 29149 | { | 29164 | { |
| 29150 | mouse_face = Fget_text_property (pos, Qmouse_face, string); | 29165 | mouse_face = Fget_text_property (pos, Qmouse_face, string); |
| @@ -29267,13 +29282,18 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, | |||
| 29267 | glyph->face_id, | 29282 | glyph->face_id, |
| 29268 | true); | 29283 | true); |
| 29269 | show_mouse_face (hlinfo, DRAW_MOUSE_FACE); | 29284 | show_mouse_face (hlinfo, DRAW_MOUSE_FACE); |
| 29285 | mouse_face_shown = true; | ||
| 29270 | 29286 | ||
| 29271 | if (NILP (pointer)) | 29287 | if (NILP (pointer)) |
| 29272 | pointer = Qhand; | 29288 | pointer = Qhand; |
| 29273 | } | 29289 | } |
| 29274 | else if ((area == ON_MODE_LINE) || (area == ON_HEADER_LINE)) | ||
| 29275 | clear_mouse_face (hlinfo); | ||
| 29276 | } | 29290 | } |
| 29291 | |||
| 29292 | /* If mouse-face doesn't need to be shown, clear any existing | ||
| 29293 | mouse-face. */ | ||
| 29294 | if ((area == ON_MODE_LINE || area == ON_HEADER_LINE) && !mouse_face_shown) | ||
| 29295 | clear_mouse_face (hlinfo); | ||
| 29296 | |||
| 29277 | #ifdef HAVE_WINDOW_SYSTEM | 29297 | #ifdef HAVE_WINDOW_SYSTEM |
| 29278 | if (FRAME_WINDOW_P (f)) | 29298 | if (FRAME_WINDOW_P (f)) |
| 29279 | define_frame_cursor1 (f, cursor, pointer); | 29299 | define_frame_cursor1 (f, cursor, pointer); |
diff --git a/src/xfns.c b/src/xfns.c index 80c214a7a56..5ac58e9c7e0 100644 --- a/src/xfns.c +++ b/src/xfns.c | |||
| @@ -4320,13 +4320,13 @@ elements (all size values are in pixels). | |||
| 4320 | 4320 | ||
| 4321 | - `title-bar-height' is the height of the title bar of FRAME. | 4321 | - `title-bar-height' is the height of the title bar of FRAME. |
| 4322 | 4322 | ||
| 4323 | - `menu-bar-external' if `t' means the menu bar is external (not | 4323 | - `menu-bar-external' if t means the menu bar is external (not |
| 4324 | included in the inner edges of FRAME). | 4324 | included in the inner edges of FRAME). |
| 4325 | 4325 | ||
| 4326 | - `menu-bar-size' is a cons of the width and height of the menu bar of | 4326 | - `menu-bar-size' is a cons of the width and height of the menu bar of |
| 4327 | FRAME. | 4327 | FRAME. |
| 4328 | 4328 | ||
| 4329 | - `tool-bar-external' if `t' means the tool bar is external (not | 4329 | - `tool-bar-external' if t means the tool bar is external (not |
| 4330 | included in the inner edges of FRAME). | 4330 | included in the inner edges of FRAME). |
| 4331 | 4331 | ||
| 4332 | - `tool-bar-side' tells tells on which side the tool bar on FRAME is and | 4332 | - `tool-bar-side' tells tells on which side the tool bar on FRAME is and |
diff --git a/src/xterm.c b/src/xterm.c index 4590e34fe8b..3734fbfee92 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -7847,17 +7847,18 @@ handle_one_xevent (struct x_display_info *dpyinfo, | |||
| 7847 | 7847 | ||
| 7848 | f = any; | 7848 | f = any; |
| 7849 | 7849 | ||
| 7850 | #if ! defined (USE_GTK) | ||
| 7851 | /* If mouse-highlight is an integer, input clears out | 7850 | /* If mouse-highlight is an integer, input clears out |
| 7852 | mouse highlighting. */ | 7851 | mouse highlighting. */ |
| 7853 | if (!hlinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight) | 7852 | if (!hlinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight) |
| 7853 | #if ! defined (USE_GTK) | ||
| 7854 | && (f == 0 | 7854 | && (f == 0 |
| 7855 | || !EQ (f->tool_bar_window, hlinfo->mouse_face_window))) | 7855 | || !EQ (f->tool_bar_window, hlinfo->mouse_face_window)) |
| 7856 | #endif | ||
| 7857 | ) | ||
| 7856 | { | 7858 | { |
| 7857 | clear_mouse_face (hlinfo); | 7859 | clear_mouse_face (hlinfo); |
| 7858 | hlinfo->mouse_face_hidden = true; | 7860 | hlinfo->mouse_face_hidden = true; |
| 7859 | } | 7861 | } |
| 7860 | #endif | ||
| 7861 | 7862 | ||
| 7862 | #if defined USE_MOTIF && defined USE_TOOLKIT_SCROLL_BARS | 7863 | #if defined USE_MOTIF && defined USE_TOOLKIT_SCROLL_BARS |
| 7863 | if (f == 0) | 7864 | if (f == 0) |
| @@ -12256,7 +12257,7 @@ static struct redisplay_interface x_redisplay_interface = | |||
| 12256 | x_draw_window_cursor, | 12257 | x_draw_window_cursor, |
| 12257 | x_draw_vertical_window_border, | 12258 | x_draw_vertical_window_border, |
| 12258 | x_draw_window_divider, | 12259 | x_draw_window_divider, |
| 12259 | x_shift_glyphs_for_insert, /* Never called, se comment in function. */ | 12260 | x_shift_glyphs_for_insert, /* Never called; see comment in function. */ |
| 12260 | x_show_hourglass, | 12261 | x_show_hourglass, |
| 12261 | x_hide_hourglass | 12262 | x_hide_hourglass |
| 12262 | }; | 12263 | }; |
diff --git a/test/automated/cl-generic-tests.el b/test/automated/cl-generic-tests.el index a6035d1cba2..2703b44dee5 100644 --- a/test/automated/cl-generic-tests.el +++ b/test/automated/cl-generic-tests.el | |||
| @@ -26,15 +26,18 @@ | |||
| 26 | (eval-when-compile (require 'ert)) ;Don't indirectly require cl-lib at run-time. | 26 | (eval-when-compile (require 'ert)) ;Don't indirectly require cl-lib at run-time. |
| 27 | (require 'cl-generic) | 27 | (require 'cl-generic) |
| 28 | 28 | ||
| 29 | (fmakunbound 'cl--generic-1) | ||
| 29 | (cl-defgeneric cl--generic-1 (x y)) | 30 | (cl-defgeneric cl--generic-1 (x y)) |
| 30 | (cl-defgeneric (setf cl--generic-1) (v y z) "My generic doc.") | 31 | (cl-defgeneric (setf cl--generic-1) (v y z) "My generic doc.") |
| 31 | 32 | ||
| 32 | (ert-deftest cl-generic-test-00 () | 33 | (ert-deftest cl-generic-test-00 () |
| 34 | (fmakunbound 'cl--generic-1) | ||
| 33 | (cl-defgeneric cl--generic-1 (x y)) | 35 | (cl-defgeneric cl--generic-1 (x y)) |
| 34 | (cl-defmethod cl--generic-1 ((x t) y) (cons x y)) | 36 | (cl-defmethod cl--generic-1 ((x t) y) (cons x y)) |
| 35 | (should (equal (cl--generic-1 'a 'b) '(a . b)))) | 37 | (should (equal (cl--generic-1 'a 'b) '(a . b)))) |
| 36 | 38 | ||
| 37 | (ert-deftest cl-generic-test-01-eql () | 39 | (ert-deftest cl-generic-test-01-eql () |
| 40 | (fmakunbound 'cl--generic-1) | ||
| 38 | (cl-defgeneric cl--generic-1 (x y)) | 41 | (cl-defgeneric cl--generic-1 (x y)) |
| 39 | (cl-defmethod cl--generic-1 ((x t) y) (cons x y)) | 42 | (cl-defmethod cl--generic-1 ((x t) y) (cons x y)) |
| 40 | (cl-defmethod cl--generic-1 ((_x (eql 4)) _y) | 43 | (cl-defmethod cl--generic-1 ((_x (eql 4)) _y) |
| @@ -54,6 +57,7 @@ | |||
| 54 | (cl-defstruct (cl-generic-struct-child2 (:include cl-generic-struct-parent)) e) | 57 | (cl-defstruct (cl-generic-struct-child2 (:include cl-generic-struct-parent)) e) |
| 55 | 58 | ||
| 56 | (ert-deftest cl-generic-test-02-struct () | 59 | (ert-deftest cl-generic-test-02-struct () |
| 60 | (fmakunbound 'cl--generic-1) | ||
| 57 | (cl-defgeneric cl--generic-1 (x y) "My doc.") | 61 | (cl-defgeneric cl--generic-1 (x y) "My doc.") |
| 58 | (cl-defmethod cl--generic-1 ((x t) y) "Doc 1." (cons x y)) | 62 | (cl-defmethod cl--generic-1 ((x t) y) "Doc 1." (cons x y)) |
| 59 | (cl-defmethod cl--generic-1 ((_x cl-generic-struct-parent) y) | 63 | (cl-defmethod cl--generic-1 ((_x cl-generic-struct-parent) y) |
| @@ -91,6 +95,7 @@ | |||
| 91 | (should (equal x '(3 2 1))))) | 95 | (should (equal x '(3 2 1))))) |
| 92 | 96 | ||
| 93 | (ert-deftest cl-generic-test-04-overlapping-tagcodes () | 97 | (ert-deftest cl-generic-test-04-overlapping-tagcodes () |
| 98 | (fmakunbound 'cl--generic-1) | ||
| 94 | (cl-defgeneric cl--generic-1 (x y) "My doc.") | 99 | (cl-defgeneric cl--generic-1 (x y) "My doc.") |
| 95 | (cl-defmethod cl--generic-1 ((y t) z) (list y z)) | 100 | (cl-defmethod cl--generic-1 ((y t) z) (list y z)) |
| 96 | (cl-defmethod cl--generic-1 ((_y (eql 4)) _z) | 101 | (cl-defmethod cl--generic-1 ((_y (eql 4)) _z) |
| @@ -104,6 +109,7 @@ | |||
| 104 | (should (equal (cl--generic-1 4 'b) '("four" "integer" "number" 4 b)))) | 109 | (should (equal (cl--generic-1 4 'b) '("four" "integer" "number" 4 b)))) |
| 105 | 110 | ||
| 106 | (ert-deftest cl-generic-test-05-alias () | 111 | (ert-deftest cl-generic-test-05-alias () |
| 112 | (fmakunbound 'cl--generic-1) | ||
| 107 | (cl-defgeneric cl--generic-1 (x y) "My doc.") | 113 | (cl-defgeneric cl--generic-1 (x y) "My doc.") |
| 108 | (defalias 'cl--generic-2 #'cl--generic-1) | 114 | (defalias 'cl--generic-2 #'cl--generic-1) |
| 109 | (cl-defmethod cl--generic-1 ((y t) z) (list y z)) | 115 | (cl-defmethod cl--generic-1 ((y t) z) (list y z)) |
| @@ -112,6 +118,7 @@ | |||
| 112 | (should (equal (cl--generic-1 4 'b) '("four" 4 b)))) | 118 | (should (equal (cl--generic-1 4 'b) '("four" 4 b)))) |
| 113 | 119 | ||
| 114 | (ert-deftest cl-generic-test-06-multiple-dispatch () | 120 | (ert-deftest cl-generic-test-06-multiple-dispatch () |
| 121 | (fmakunbound 'cl--generic-1) | ||
| 115 | (cl-defgeneric cl--generic-1 (x y) "My doc.") | 122 | (cl-defgeneric cl--generic-1 (x y) "My doc.") |
| 116 | (cl-defmethod cl--generic-1 (x y) (list x y)) | 123 | (cl-defmethod cl--generic-1 (x y) (list x y)) |
| 117 | (cl-defmethod cl--generic-1 (_x (_y integer)) | 124 | (cl-defmethod cl--generic-1 (_x (_y integer)) |
| @@ -123,6 +130,7 @@ | |||
| 123 | (should (equal (cl--generic-1 1 2) '("x&y-int" "x-int" "y-int" 1 2)))) | 130 | (should (equal (cl--generic-1 1 2) '("x&y-int" "x-int" "y-int" 1 2)))) |
| 124 | 131 | ||
| 125 | (ert-deftest cl-generic-test-07-apo () | 132 | (ert-deftest cl-generic-test-07-apo () |
| 133 | (fmakunbound 'cl--generic-1) | ||
| 126 | (cl-defgeneric cl--generic-1 (x y) | 134 | (cl-defgeneric cl--generic-1 (x y) |
| 127 | (:documentation "My doc.") (:argument-precedence-order y x)) | 135 | (:documentation "My doc.") (:argument-precedence-order y x)) |
| 128 | (cl-defmethod cl--generic-1 (x y) (list x y)) | 136 | (cl-defmethod cl--generic-1 (x y) (list x y)) |
| @@ -136,6 +144,7 @@ | |||
| 136 | 144 | ||
| 137 | (ert-deftest cl-generic-test-08-after/before () | 145 | (ert-deftest cl-generic-test-08-after/before () |
| 138 | (let ((log ())) | 146 | (let ((log ())) |
| 147 | (fmakunbound 'cl--generic-1) | ||
| 139 | (cl-defgeneric cl--generic-1 (x y)) | 148 | (cl-defgeneric cl--generic-1 (x y)) |
| 140 | (cl-defmethod cl--generic-1 ((_x t) y) (cons y log)) | 149 | (cl-defmethod cl--generic-1 ((_x t) y) (cons y log)) |
| 141 | (cl-defmethod cl--generic-1 ((_x (eql 4)) _y) | 150 | (cl-defmethod cl--generic-1 ((_x (eql 4)) _y) |
| @@ -150,6 +159,7 @@ | |||
| 150 | (defun cl--generic-test-advice (&rest args) (cons "advice" (apply args))) | 159 | (defun cl--generic-test-advice (&rest args) (cons "advice" (apply args))) |
| 151 | 160 | ||
| 152 | (ert-deftest cl-generic-test-09-advice () | 161 | (ert-deftest cl-generic-test-09-advice () |
| 162 | (fmakunbound 'cl--generic-1) | ||
| 153 | (cl-defgeneric cl--generic-1 (x y) "My doc.") | 163 | (cl-defgeneric cl--generic-1 (x y) "My doc.") |
| 154 | (cl-defmethod cl--generic-1 (x y) (list x y)) | 164 | (cl-defmethod cl--generic-1 (x y) (list x y)) |
| 155 | (advice-add 'cl--generic-1 :around #'cl--generic-test-advice) | 165 | (advice-add 'cl--generic-1 :around #'cl--generic-test-advice) |
| @@ -161,6 +171,7 @@ | |||
| 161 | (should (equal (cl--generic-1 4 5) '("integer" 4 5)))) | 171 | (should (equal (cl--generic-1 4 5) '("integer" 4 5)))) |
| 162 | 172 | ||
| 163 | (ert-deftest cl-generic-test-10-weird () | 173 | (ert-deftest cl-generic-test-10-weird () |
| 174 | (fmakunbound 'cl--generic-1) | ||
| 164 | (cl-defgeneric cl--generic-1 (x &rest r) "My doc.") | 175 | (cl-defgeneric cl--generic-1 (x &rest r) "My doc.") |
| 165 | (cl-defmethod cl--generic-1 (x &rest r) (cons x r)) | 176 | (cl-defmethod cl--generic-1 (x &rest r) (cons x r)) |
| 166 | ;; This kind of definition is not valid according to CLHS, but it does show | 177 | ;; This kind of definition is not valid according to CLHS, but it does show |
| @@ -172,6 +183,7 @@ | |||
| 172 | (should (equal (cl--generic-1 1 2) '("integer" 2 1)))) | 183 | (should (equal (cl--generic-1 1 2) '("integer" 2 1)))) |
| 173 | 184 | ||
| 174 | (ert-deftest cl-generic-test-11-next-method-p () | 185 | (ert-deftest cl-generic-test-11-next-method-p () |
| 186 | (fmakunbound 'cl--generic-1) | ||
| 175 | (cl-defgeneric cl--generic-1 (x y)) | 187 | (cl-defgeneric cl--generic-1 (x y)) |
| 176 | (cl-defmethod cl--generic-1 ((x t) y) | 188 | (cl-defmethod cl--generic-1 ((x t) y) |
| 177 | (list x y (cl-next-method-p))) | 189 | (list x y (cl-next-method-p))) |
| @@ -179,15 +191,33 @@ | |||
| 179 | (cl-list* "quatre" (cl-next-method-p) (cl-call-next-method))) | 191 | (cl-list* "quatre" (cl-next-method-p) (cl-call-next-method))) |
| 180 | (should (equal (cl--generic-1 4 5) '("quatre" t 4 5 nil)))) | 192 | (should (equal (cl--generic-1 4 5) '("quatre" t 4 5 nil)))) |
| 181 | 193 | ||
| 182 | (ert-deftest sm-generic-test-12-context () | 194 | (ert-deftest cl-generic-test-12-context () |
| 195 | (fmakunbound 'cl--generic-1) | ||
| 183 | (cl-defgeneric cl--generic-1 ()) | 196 | (cl-defgeneric cl--generic-1 ()) |
| 184 | (cl-defmethod cl--generic-1 (&context (overwrite-mode (eql t))) 'is-t) | 197 | (cl-defmethod cl--generic-1 (&context (overwrite-mode (eql t))) |
| 185 | (cl-defmethod cl--generic-1 (&context (overwrite-mode (eql nil))) 'is-nil) | 198 | (list 'is-t (cl-call-next-method))) |
| 186 | (cl-defmethod cl--generic-1 () 'other) | 199 | (cl-defmethod cl--generic-1 (&context (overwrite-mode (eql nil))) |
| 200 | (list 'is-nil (cl-call-next-method))) | ||
| 201 | (cl-defmethod cl--generic-1 () 'any) | ||
| 187 | (should (equal (list (let ((overwrite-mode t)) (cl--generic-1)) | 202 | (should (equal (list (let ((overwrite-mode t)) (cl--generic-1)) |
| 188 | (let ((overwrite-mode nil)) (cl--generic-1)) | 203 | (let ((overwrite-mode nil)) (cl--generic-1)) |
| 189 | (let ((overwrite-mode 1)) (cl--generic-1))) | 204 | (let ((overwrite-mode 1)) (cl--generic-1))) |
| 190 | '(is-t is-nil other)))) | 205 | '((is-t any) (is-nil any) any)))) |
| 206 | |||
| 207 | (ert-deftest cl-generic-test-13-head () | ||
| 208 | (fmakunbound 'cl--generic-1) | ||
| 209 | (cl-defgeneric cl--generic-1 (x y)) | ||
| 210 | (cl-defmethod cl--generic-1 ((x t) y) (cons x y)) | ||
| 211 | (cl-defmethod cl--generic-1 ((_x (head 4)) _y) | ||
| 212 | (cons "quatre" (cl-call-next-method))) | ||
| 213 | (cl-defmethod cl--generic-1 ((_x (head 5)) _y) | ||
| 214 | (cons "cinq" (cl-call-next-method))) | ||
| 215 | (cl-defmethod cl--generic-1 ((_x (head 6)) y) | ||
| 216 | (cons "six" (cl-call-next-method 'a y))) | ||
| 217 | (should (equal (cl--generic-1 'a nil) '(a))) | ||
| 218 | (should (equal (cl--generic-1 '(4) nil) '("quatre" (4)))) | ||
| 219 | (should (equal (cl--generic-1 '(5) nil) '("cinq" (5)))) | ||
| 220 | (should (equal (cl--generic-1 '(6) nil) '("six" a)))) | ||
| 191 | 221 | ||
| 192 | (provide 'cl-generic-tests) | 222 | (provide 'cl-generic-tests) |
| 193 | ;;; cl-generic-tests.el ends here | 223 | ;;; cl-generic-tests.el ends here |
diff --git a/test/automated/compile-tests.el b/test/automated/compile-tests.el index 24c4fdec14e..0c383f7c7b6 100644 --- a/test/automated/compile-tests.el +++ b/test/automated/compile-tests.el | |||
| @@ -204,9 +204,11 @@ | |||
| 204 | ("makepp: bla bla `/foo/bar.c' and `/foo/bar.h'" 35 nil nil "/foo/bar.h") | 204 | ("makepp: bla bla `/foo/bar.c' and `/foo/bar.h'" 35 nil nil "/foo/bar.h") |
| 205 | ;; maven | 205 | ;; maven |
| 206 | ("FooBar.java:[111,53] no interface expected here" | 206 | ("FooBar.java:[111,53] no interface expected here" |
| 207 | 1 53 111 "FooBar.java") | 207 | 1 53 111 "FooBar.java" 2) |
| 208 | (" [ERROR] /Users/cinsk/hello.java:[651,96] ';' expected" | 208 | (" [ERROR] /Users/cinsk/hello.java:[651,96] ';' expected" |
| 209 | 15 96 651 "/Users/cinsk/hello.java") ;Bug#11517. | 209 | 15 96 651 "/Users/cinsk/hello.java" 2) ;Bug#11517. |
| 210 | ("[WARNING] /foo/bar/Test.java:[27,43] unchecked conversion" | ||
| 211 | 11 43 27 "/foo/bar/Test.java" 1) ;Bug#20556 | ||
| 210 | ;; mips-1 mips-2 | 212 | ;; mips-1 mips-2 |
| 211 | ("TrimMask (255) in solomon.c may be indistinguishable from TrimMasks (93) in solomo.c due to truncation" | 213 | ("TrimMask (255) in solomon.c may be indistinguishable from TrimMasks (93) in solomo.c due to truncation" |
| 212 | 11 nil 255 "solomon.c") | 214 | 11 nil 255 "solomon.c") |
| @@ -335,6 +337,7 @@ END-LINE, if that matched.") | |||
| 335 | (col (nth 2 test)) | 337 | (col (nth 2 test)) |
| 336 | (line (nth 3 test)) | 338 | (line (nth 3 test)) |
| 337 | (file (nth 4 test)) | 339 | (file (nth 4 test)) |
| 340 | (type (nth 5 test)) | ||
| 338 | end-col end-line) | 341 | end-col end-line) |
| 339 | (if (consp col) | 342 | (if (consp col) |
| 340 | (setq end-col (cdr col) col (car col))) | 343 | (setq end-col (cdr col) col (car col))) |
| @@ -342,13 +345,15 @@ END-LINE, if that matched.") | |||
| 342 | (setq end-line (cdr line) line (car line))) | 345 | (setq end-line (cdr line) line (car line))) |
| 343 | (and (equal (compilation--loc->col loc) col) | 346 | (and (equal (compilation--loc->col loc) col) |
| 344 | (equal (compilation--loc->line loc) line) | 347 | (equal (compilation--loc->line loc) line) |
| 345 | (or (not file) | 348 | (or (not file) |
| 346 | (equal (caar (compilation--loc->file-struct loc)) file)) | 349 | (equal (caar (compilation--loc->file-struct loc)) file)) |
| 347 | (or (null end-col) | 350 | (or (null end-col) |
| 348 | (equal (car (cadr (nth 2 (compilation--loc->file-struct loc)))) | 351 | (equal (car (cadr (nth 2 (compilation--loc->file-struct loc)))) |
| 349 | end-col)) | 352 | end-col)) |
| 350 | (equal (car (nth 2 (compilation--loc->file-struct loc))) | 353 | (equal (car (nth 2 (compilation--loc->file-struct loc))) |
| 351 | (or end-line line))))))) | 354 | (or end-line line)) |
| 355 | (or (null type) | ||
| 356 | (equal type (compilation--message->type msg)))))))) | ||
| 352 | 357 | ||
| 353 | (ert-deftest compile-test-error-regexps () | 358 | (ert-deftest compile-test-error-regexps () |
| 354 | "Test the `compilation-error-regexp-alist' regexps. | 359 | "Test the `compilation-error-regexp-alist' regexps. |
diff --git a/test/automated/data/decompress/foo-gzipped b/test/automated/data/decompress/foo.gz index a68653fcbb9..a68653fcbb9 100644 --- a/test/automated/data/decompress/foo-gzipped +++ b/test/automated/data/decompress/foo.gz | |||
| Binary files differ | |||
diff --git a/test/automated/data/package/newer-versions/simple-single-1.4.el b/test/automated/data/package/newer-versions/simple-single-1.4.el index 7d8178c05a5..7b1c00c06db 100644 --- a/test/automated/data/package/newer-versions/simple-single-1.4.el +++ b/test/automated/data/package/newer-versions/simple-single-1.4.el | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | 19 | ||
| 20 | (defcustom simple-single-super-sunday nil | 20 | (defcustom simple-single-super-sunday nil |
| 21 | "How great is this? | 21 | "How great is this? |
| 22 | Default changed to `nil'." | 22 | Default changed to nil." |
| 23 | :type 'boolean | 23 | :type 'boolean |
| 24 | :group 'simple-single | 24 | :group 'simple-single |
| 25 | :package-version "1.4") | 25 | :package-version "1.4") |
diff --git a/test/automated/file-notify-tests.el b/test/automated/file-notify-tests.el index 8e3a7918c80..46d287fe60d 100644 --- a/test/automated/file-notify-tests.el +++ b/test/automated/file-notify-tests.el | |||
| @@ -72,7 +72,7 @@ | |||
| 72 | (defun file-notify--test-local-enabled () | 72 | (defun file-notify--test-local-enabled () |
| 73 | "Whether local file notification is enabled. | 73 | "Whether local file notification is enabled. |
| 74 | This is needed for local `temporary-file-directory' only, in the | 74 | This is needed for local `temporary-file-directory' only, in the |
| 75 | remote case we return always `t'." | 75 | remote case we return always t." |
| 76 | (or file-notify--library | 76 | (or file-notify--library |
| 77 | (file-remote-p temporary-file-directory))) | 77 | (file-remote-p temporary-file-directory))) |
| 78 | 78 | ||
diff --git a/test/automated/package-test.el b/test/automated/package-test.el index ed2e3cf25aa..677bfa613fc 100644 --- a/test/automated/package-test.el +++ b/test/automated/package-test.el | |||
| @@ -124,7 +124,7 @@ | |||
| 124 | ,@(if upload-base | 124 | ,@(if upload-base |
| 125 | '((package-test-archive-upload-base (make-temp-file "pkg-archive-base-" t)) | 125 | '((package-test-archive-upload-base (make-temp-file "pkg-archive-base-" t)) |
| 126 | (package-archive-upload-base package-test-archive-upload-base)) | 126 | (package-archive-upload-base package-test-archive-upload-base)) |
| 127 | (list (cl-gensym)))) ;; Dummy value so `let' doesn't try to bind `nil' | 127 | (list (cl-gensym)))) ;; Dummy value so `let' doesn't try to bind nil |
| 128 | (let ((buf (get-buffer "*Packages*"))) | 128 | (let ((buf (get-buffer "*Packages*"))) |
| 129 | (when (buffer-live-p buf) | 129 | (when (buffer-live-p buf) |
| 130 | (kill-buffer buf))) | 130 | (kill-buffer buf))) |
diff --git a/test/automated/sgml-mode-tests.el b/test/automated/sgml-mode-tests.el new file mode 100644 index 00000000000..eeb5c7d60ae --- /dev/null +++ b/test/automated/sgml-mode-tests.el | |||
| @@ -0,0 +1,135 @@ | |||
| 1 | ;;; sgml-mode-tests.el --- Tests for sgml-mode | ||
| 2 | |||
| 3 | ;; Copyright (C) 2015 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: Przemysław Wojnowski <esperanto@cumego.com> | ||
| 6 | ;; Keywords: tests | ||
| 7 | |||
| 8 | ;; This file is part of GNU Emacs. | ||
| 9 | |||
| 10 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 11 | ;; it under the terms of the GNU General Public License as published by | ||
| 12 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 13 | ;; (at your option) any later version. | ||
| 14 | |||
| 15 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 16 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 17 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 18 | ;; GNU General Public License for more details. | ||
| 19 | |||
| 20 | ;; You should have received a copy of the GNU General Public License | ||
| 21 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| 22 | |||
| 23 | ;;; Commentary: | ||
| 24 | |||
| 25 | ;;; Code: | ||
| 26 | |||
| 27 | (require 'sgml-mode) | ||
| 28 | (require 'ert) | ||
| 29 | |||
| 30 | (defmacro sgml-with-content (content &rest body) | ||
| 31 | "Insert CONTENT into a temporary `sgml-mode' buffer and execute BODY on it. | ||
| 32 | The point is set to the beginning of the buffer." | ||
| 33 | `(with-temp-buffer | ||
| 34 | (sgml-mode) | ||
| 35 | (insert ,content) | ||
| 36 | (goto-char (point-min)) | ||
| 37 | ,@body)) | ||
| 38 | |||
| 39 | ;;; sgml-delete-tag | ||
| 40 | |||
| 41 | (ert-deftest sgml-delete-tag-should-not-delete-tags-when-wrong-args () | ||
| 42 | "Don't delete tag, when number of tags to delete is not positive number." | ||
| 43 | (let ((content "<p>Valar Morghulis</p>")) | ||
| 44 | (sgml-with-content | ||
| 45 | content | ||
| 46 | (sgml-delete-tag -1) | ||
| 47 | (should (string= content (buffer-string))) | ||
| 48 | (sgml-delete-tag 0) | ||
| 49 | (should (string= content (buffer-string)))))) | ||
| 50 | |||
| 51 | (ert-deftest sgml-delete-tag-should-delete-tags-n-times () | ||
| 52 | ;; Delete only 1, when 1 available: | ||
| 53 | (sgml-with-content | ||
| 54 | "<br />" | ||
| 55 | (sgml-delete-tag 1) | ||
| 56 | (should (string= "" (buffer-string)))) | ||
| 57 | ;; Delete from position on whitespaces before tag: | ||
| 58 | (sgml-with-content | ||
| 59 | " \t\n<br />" | ||
| 60 | (sgml-delete-tag 1) | ||
| 61 | (should (string= "" (buffer-string)))) | ||
| 62 | ;; Delete from position on tag: | ||
| 63 | (sgml-with-content | ||
| 64 | "<br />" | ||
| 65 | (goto-char 3) | ||
| 66 | (sgml-delete-tag 1) | ||
| 67 | (should (string= "" (buffer-string)))) | ||
| 68 | ;; Delete one by one: | ||
| 69 | (sgml-with-content | ||
| 70 | "<h1><p>You know nothing, Jon Snow.</p></h1>" | ||
| 71 | (sgml-delete-tag 1) | ||
| 72 | (should (string= "<p>You know nothing, Jon Snow.</p>" (buffer-string))) | ||
| 73 | (sgml-delete-tag 1) | ||
| 74 | (should (string= "You know nothing, Jon Snow." (buffer-string)))) | ||
| 75 | ;; Delete 2 at a time, when 2 available: | ||
| 76 | (sgml-with-content | ||
| 77 | "<h1><p>You know nothing, Jon Snow.</p></h1>" | ||
| 78 | (sgml-delete-tag 2) | ||
| 79 | (should (string= "You know nothing, Jon Snow." (buffer-string))))) | ||
| 80 | |||
| 81 | (ert-deftest sgml-delete-tag-should-delete-unclosed-tag () | ||
| 82 | (sgml-with-content | ||
| 83 | "<ul><li>Keep your stones connected.</ul>" | ||
| 84 | (goto-char 5) ; position on "li" tag | ||
| 85 | (sgml-delete-tag 1) | ||
| 86 | (should (string= "<ul>Keep your stones connected.</ul>" (buffer-string))))) | ||
| 87 | |||
| 88 | (ert-deftest sgml-delete-tag-should-signal-error-for-malformed-tags () | ||
| 89 | (let ((content "<h1><h2>Drakaris!</h1></h2>")) | ||
| 90 | ;; Delete outside tag: | ||
| 91 | (sgml-with-content | ||
| 92 | content | ||
| 93 | (sgml-delete-tag 1) | ||
| 94 | (should (string= "<h2>Drakaris!</h2>" (buffer-string)))) | ||
| 95 | ;; Delete inner tag: | ||
| 96 | (sgml-with-content | ||
| 97 | content | ||
| 98 | (goto-char 5) ; position the inner tag | ||
| 99 | (sgml-delete-tag 1) | ||
| 100 | (should (string= "<h1>Drakaris!</h1>" (buffer-string)))))) | ||
| 101 | |||
| 102 | (ert-deftest sgml-delete-tag-should-signal-error-when-deleting-too-much () | ||
| 103 | (let ((content "<emph>Drakaris!</emph>")) | ||
| 104 | ;; No tags to delete: | ||
| 105 | (sgml-with-content | ||
| 106 | "Drakaris!" | ||
| 107 | (should-error (sgml-delete-tag 1) :type 'error) | ||
| 108 | (should (string= "Drakaris!" (buffer-string)))) | ||
| 109 | ;; Trying to delete 2 tags, when only 1 available: | ||
| 110 | (sgml-with-content | ||
| 111 | content | ||
| 112 | (should-error (sgml-delete-tag 2) :type 'error) | ||
| 113 | (should (string= "Drakaris!" (buffer-string)))) | ||
| 114 | ;; Trying to delete a tag, but not on/before a tag: | ||
| 115 | (sgml-with-content | ||
| 116 | content | ||
| 117 | (goto-char 7) ; D in Drakaris | ||
| 118 | (should-error (sgml-delete-tag 1) :type 'error) | ||
| 119 | (should (string= content (buffer-string)))) | ||
| 120 | ;; Trying to delete a tag from position outside tag: | ||
| 121 | (sgml-with-content | ||
| 122 | content | ||
| 123 | (goto-char (point-max)) | ||
| 124 | (should-error (sgml-delete-tag 1) :type 'error) | ||
| 125 | (should (string= content (buffer-string)))))) | ||
| 126 | |||
| 127 | (ert-deftest sgml-delete-tag-bug-8203-should-not-delete-apostrophe () | ||
| 128 | :expected-result :failed | ||
| 129 | (sgml-with-content | ||
| 130 | "<title>Winter is comin'</title>" | ||
| 131 | (sgml-delete-tag 1) | ||
| 132 | (should (string= "Winter is comin'" (buffer-string))))) | ||
| 133 | |||
| 134 | (provide 'sgml-mode-tests) | ||
| 135 | ;;; sgml-mode-tests.el ends here | ||
diff --git a/test/automated/subr-tests.el b/test/automated/subr-tests.el new file mode 100644 index 00000000000..d29efc6f330 --- /dev/null +++ b/test/automated/subr-tests.el | |||
| @@ -0,0 +1,64 @@ | |||
| 1 | ;;; subr-tests.el --- Tests for subr.el | ||
| 2 | |||
| 3 | ;; Copyright (C) 2015 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: Oleh Krehel <ohwoeowho@gmail.com> | ||
| 6 | ;; Keywords: | ||
| 7 | |||
| 8 | ;; This file is part of GNU Emacs. | ||
| 9 | |||
| 10 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 11 | ;; it under the terms of the GNU General Public License as published by | ||
| 12 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 13 | ;; (at your option) any later version. | ||
| 14 | |||
| 15 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 16 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 17 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 18 | ;; GNU General Public License for more details. | ||
| 19 | |||
| 20 | ;; You should have received a copy of the GNU General Public License | ||
| 21 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| 22 | |||
| 23 | ;;; Commentary: | ||
| 24 | |||
| 25 | ;; | ||
| 26 | |||
| 27 | ;;; Code: | ||
| 28 | |||
| 29 | (require 'ert) | ||
| 30 | |||
| 31 | (ert-deftest let-when-compile () | ||
| 32 | ;; good case | ||
| 33 | (should (equal (macroexpand '(let-when-compile ((foo (+ 2 3))) | ||
| 34 | (setq bar (eval-when-compile (+ foo foo))) | ||
| 35 | (setq boo (eval-when-compile (* foo foo))))) | ||
| 36 | '(progn | ||
| 37 | (setq bar (quote 10)) | ||
| 38 | (setq boo (quote 25))))) | ||
| 39 | ;; bad case: `eval-when-compile' omitted, byte compiler should catch this | ||
| 40 | (should (equal (macroexpand | ||
| 41 | '(let-when-compile ((foo (+ 2 3))) | ||
| 42 | (setq bar (+ foo foo)) | ||
| 43 | (setq boo (eval-when-compile (* foo foo))))) | ||
| 44 | '(progn | ||
| 45 | (setq bar (+ foo foo)) | ||
| 46 | (setq boo (quote 25))))) | ||
| 47 | ;; something practical | ||
| 48 | (should (equal (macroexpand | ||
| 49 | '(let-when-compile ((keywords '("true" "false"))) | ||
| 50 | (font-lock-add-keywords | ||
| 51 | 'c++-mode | ||
| 52 | `((,(eval-when-compile | ||
| 53 | (format "\\<%s\\>" (regexp-opt keywords))) | ||
| 54 | 0 font-lock-keyword-face))))) | ||
| 55 | '(font-lock-add-keywords | ||
| 56 | (quote c++-mode) | ||
| 57 | (list | ||
| 58 | (cons (quote | ||
| 59 | "\\<\\(?:\\(?:fals\\|tru\\)e\\)\\>") | ||
| 60 | (quote | ||
| 61 | (0 font-lock-keyword-face)))))))) | ||
| 62 | |||
| 63 | (provide 'subr-tests) | ||
| 64 | ;;; subr-tests.el ends here | ||
diff --git a/test/automated/zlib-tests.el b/test/automated/zlib-tests.el index 671860182a1..c6c084dd69f 100644 --- a/test/automated/zlib-tests.el +++ b/test/automated/zlib-tests.el | |||
| @@ -35,7 +35,7 @@ | |||
| 35 | (with-temp-buffer | 35 | (with-temp-buffer |
| 36 | (set-buffer-multibyte nil) | 36 | (set-buffer-multibyte nil) |
| 37 | (insert-file-contents-literally | 37 | (insert-file-contents-literally |
| 38 | (expand-file-name "foo-gzipped" zlib-tests-data-directory)) | 38 | (expand-file-name "foo.gz" zlib-tests-data-directory)) |
| 39 | (zlib-decompress-region (point-min) (point-max)) | 39 | (zlib-decompress-region (point-min) (point-max)) |
| 40 | (buffer-string)) | 40 | (buffer-string)) |
| 41 | "foo\n")))) | 41 | "foo\n")))) |
diff --git a/test/etags/CTAGS.good b/test/etags/CTAGS.good index 1a885cc95fa..d747265bcf3 100644 --- a/test/etags/CTAGS.good +++ b/test/etags/CTAGS.good | |||
| @@ -47,7 +47,6 @@ $user_comment_lc php-src/lce_functions.php 115 | |||
| 47 | (a-forth-constant forth-src/test-forth.fth /^constant (a-forth-constant$/ | 47 | (a-forth-constant forth-src/test-forth.fth /^constant (a-forth-constant$/ |
| 48 | (another-forth-word forth-src/test-forth.fth /^: (another-forth-word) ( -- )$/ | 48 | (another-forth-word forth-src/test-forth.fth /^: (another-forth-word) ( -- )$/ |
| 49 | + tex-src/texinfo.tex /^\\def+{{\\tt \\char 43}}$/ | 49 | + tex-src/texinfo.tex /^\\def+{{\\tt \\char 43}}$/ |
| 50 | .PRECIOUS Makefile /^.PRECIOUS: ETAGS.good CTAGS.good$/ | ||
| 51 | /.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/ | 50 | /.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/ |
| 52 | /.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/ | 51 | /.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/ |
| 53 | /.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/ | 52 | /.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/ |
| @@ -244,7 +243,6 @@ A::operator+ cp-src/c.C /^ A operator+(A& a) {};$/ | |||
| 244 | A::rosso cp-src/c.C 40 | 243 | A::rosso cp-src/c.C 40 |
| 245 | A::verde cp-src/c.C 40 | 244 | A::verde cp-src/c.C 40 |
| 246 | A::~A cp-src/c.C /^A::~A() {}$/ | 245 | A::~A cp-src/c.C /^A::~A() {}$/ |
| 247 | ADASRC Makefile /^ADASRC=$(addprefix .\/ada-src\/,etags-test-for.ada 2/ | ||
| 248 | ADDRESS c-src/emacs/src/gmalloc.c /^#define ADDRESS(B) ((void *) (((B) - 1) * BLOCKSIZ/ | 246 | ADDRESS c-src/emacs/src/gmalloc.c /^#define ADDRESS(B) ((void *) (((B) - 1) * BLOCKSIZ/ |
| 249 | ALIGNOF_STRUCT_LISP_VECTOR c-src/emacs/src/lisp.h 1378 | 247 | ALIGNOF_STRUCT_LISP_VECTOR c-src/emacs/src/lisp.h 1378 |
| 250 | ALLOCATED_BEFORE_DUMPING c-src/emacs/src/gmalloc.c /^#define ALLOCATED_BEFORE_DUMPING(P) \\$/ | 248 | ALLOCATED_BEFORE_DUMPING c-src/emacs/src/gmalloc.c /^#define ALLOCATED_BEFORE_DUMPING(P) \\$/ |
| @@ -254,7 +252,6 @@ AND y-src/cccp.c 11 | |||
| 254 | ANSIC c-src/h.h 84 | 252 | ANSIC c-src/h.h 84 |
| 255 | ANSIC c-src/h.h 85 | 253 | ANSIC c-src/h.h 85 |
| 256 | AREF c-src/emacs/src/lisp.h /^AREF (Lisp_Object array, ptrdiff_t idx)$/ | 254 | AREF c-src/emacs/src/lisp.h /^AREF (Lisp_Object array, ptrdiff_t idx)$/ |
| 257 | ARGS Makefile /^ARGS=- < srclist$/ | ||
| 258 | ARITH_EQUAL c-src/emacs/src/lisp.h 3498 | 255 | ARITH_EQUAL c-src/emacs/src/lisp.h 3498 |
| 259 | ARITH_GRTR c-src/emacs/src/lisp.h 3501 | 256 | ARITH_GRTR c-src/emacs/src/lisp.h 3501 |
| 260 | ARITH_GRTR_OR_EQUAL c-src/emacs/src/lisp.h 3503 | 257 | ARITH_GRTR_OR_EQUAL c-src/emacs/src/lisp.h 3503 |
| @@ -267,7 +264,6 @@ ARRAY_MARK_FLAG c-src/emacs/src/lisp.h 768 | |||
| 267 | ASCII_CHAR_P c-src/emacs/src/lisp.h /^#define ASCII_CHAR_P(c) UNSIGNED_CMP (c, <, 0x80)$/ | 264 | ASCII_CHAR_P c-src/emacs/src/lisp.h /^#define ASCII_CHAR_P(c) UNSIGNED_CMP (c, <, 0x80)$/ |
| 268 | ASET c-src/emacs/src/lisp.h /^ASET (Lisp_Object array, ptrdiff_t idx, Lisp_Objec/ | 265 | ASET c-src/emacs/src/lisp.h /^ASET (Lisp_Object array, ptrdiff_t idx, Lisp_Objec/ |
| 269 | ASIZE c-src/emacs/src/lisp.h /^ASIZE (Lisp_Object array)$/ | 266 | ASIZE c-src/emacs/src/lisp.h /^ASIZE (Lisp_Object array)$/ |
| 270 | ASRC Makefile /^ASRC=$(addprefix .\/a-src\/,empty.zz empty.zz.gz)$/ | ||
| 271 | AST_Array::AST_Array cp-src/c.C /^AST_Array::AST_Array(UTL_ScopedName *n, unsigned l/ | 267 | AST_Array::AST_Array cp-src/c.C /^AST_Array::AST_Array(UTL_ScopedName *n, unsigned l/ |
| 272 | AST_ConcreteType::AST_ConcreteType cp-src/c.C /^AST_ConcreteType::AST_ConcreteType(AST_Decl::NodeT/ | 268 | AST_ConcreteType::AST_ConcreteType cp-src/c.C /^AST_ConcreteType::AST_ConcreteType(AST_Decl::NodeT/ |
| 273 | AST_Root cp-src/c.C 92 | 269 | AST_Root cp-src/c.C 92 |
| @@ -465,13 +461,9 @@ CONSTYPE_PURE c-src/emacs/src/lisp.h 3739 | |||
| 465 | CONS_TO_INTEGER c-src/emacs/src/lisp.h /^#define CONS_TO_INTEGER(cons, type, var) \\$/ | 461 | CONS_TO_INTEGER c-src/emacs/src/lisp.h /^#define CONS_TO_INTEGER(cons, type, var) \\$/ |
| 466 | CONVERT_CHARSTRING_TO_VALUE pas-src/common.pas /^procedure CONVERT_CHARSTRING_TO_VALUE;(*($/ | 462 | CONVERT_CHARSTRING_TO_VALUE pas-src/common.pas /^procedure CONVERT_CHARSTRING_TO_VALUE;(*($/ |
| 467 | CPPFLAGS make-src/Makefile 49 | 463 | CPPFLAGS make-src/Makefile 49 |
| 468 | CPSRC Makefile /^CPSRC=$(addprefix .\/cp-src\/,c.C burton.cpp burton./ | ||
| 469 | CSRC Makefile /^CSRC=$(addprefix .\/c-src\/,abbrev.c .\/\/c.c torture./ | ||
| 470 | CTAGS Makefile /^CTAGS: FRC ${infiles}$/ | ||
| 471 | CTAGS c-src/etags.c 146 | 464 | CTAGS c-src/etags.c 146 |
| 472 | CTAGS c-src/etags.c 147 | 465 | CTAGS c-src/etags.c 147 |
| 473 | CTAGS c-src/etags.c 149 | 466 | CTAGS c-src/etags.c 149 |
| 474 | CTAGS_PROG Makefile /^CTAGS_PROG=..\/..\/lib-src\/ctags$/ | ||
| 475 | C_AUTO c-src/etags.c 2198 | 467 | C_AUTO c-src/etags.c 2198 |
| 476 | C_EXT c-src/etags.c 2193 | 468 | C_EXT c-src/etags.c 2193 |
| 477 | C_JAVA c-src/etags.c 2197 | 469 | C_JAVA c-src/etags.c 2197 |
| @@ -580,7 +572,6 @@ Debug cp-src/functions.cpp /^void Debug ( int lineno, int level, char* func , c/ | |||
| 580 | DisposeANameList pas-src/common.pas /^procedure DisposeANameList( $/ | 572 | DisposeANameList pas-src/common.pas /^procedure DisposeANameList( $/ |
| 581 | DisposeNameList pas-src/common.pas /^procedure DisposeNameList;$/ | 573 | DisposeNameList pas-src/common.pas /^procedure DisposeNameList;$/ |
| 582 | ELEM_I c-src/h.h 3 | 574 | ELEM_I c-src/h.h 3 |
| 583 | ELSRC Makefile /^ELSRC=$(addprefix .\/el-src\/,TAGTEST.EL emacs\/lisp\// | ||
| 584 | EMACS_INT c-src/emacs/src/lisp.h 91 | 575 | EMACS_INT c-src/emacs/src/lisp.h 91 |
| 585 | EMACS_INT c-src/emacs/src/lisp.h 96 | 576 | EMACS_INT c-src/emacs/src/lisp.h 96 |
| 586 | EMACS_INT c-src/emacs/src/lisp.h 103 | 577 | EMACS_INT c-src/emacs/src/lisp.h 103 |
| @@ -610,12 +601,9 @@ ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind : CHAR_BIT;$/ | |||
| 610 | ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind : CHAR_BIT;$/ | 601 | ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind : CHAR_BIT;$/ |
| 611 | EQ c-src/emacs/src/lisp.h /^# define EQ(x, y) lisp_h_EQ (x, y)$/ | 602 | EQ c-src/emacs/src/lisp.h /^# define EQ(x, y) lisp_h_EQ (x, y)$/ |
| 612 | EQUAL y-src/cccp.c 12 | 603 | EQUAL y-src/cccp.c 12 |
| 613 | ERLSRC Makefile /^ERLSRC=$(addprefix .\/erl-src\/,gs_dialog.erl)$/ | ||
| 614 | ERROR y-src/parse.y 303 | 604 | ERROR y-src/parse.y 303 |
| 615 | ERROR parse.y 303 | 605 | ERROR parse.y 303 |
| 616 | ERROR y-src/cccp.c 9 | 606 | ERROR y-src/cccp.c 9 |
| 617 | ETAGS Makefile /^ETAGS: FRC ${infiles}$/ | ||
| 618 | ETAGS_PROG Makefile /^ETAGS_PROG=..\/..\/lib-src\/etags$/ | ||
| 619 | EXFUN c-src/emacs/src/lisp.h /^#define EXFUN(fnname, maxargs) \\$/ | 607 | EXFUN c-src/emacs/src/lisp.h /^#define EXFUN(fnname, maxargs) \\$/ |
| 620 | EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 3497 | 608 | EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 3497 |
| 621 | EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 4372 | 609 | EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 4372 |
| @@ -638,13 +626,10 @@ FIXNUM_OVERFLOW_P c-src/emacs/src/lisp.h /^#define FIXNUM_OVERFLOW_P(i) \\$/ | |||
| 638 | FIXNUM_OVERFLOW_P c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (EQ, bool, (Lisp_Object x, Lisp_O/ | 626 | FIXNUM_OVERFLOW_P c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (EQ, bool, (Lisp_Object x, Lisp_O/ |
| 639 | FLOATP c-src/emacs/src/lisp.h /^# define FLOATP(x) lisp_h_FLOATP (x)$/ | 627 | FLOATP c-src/emacs/src/lisp.h /^# define FLOATP(x) lisp_h_FLOATP (x)$/ |
| 640 | FLOAT_TO_STRING_BUFSIZE c-src/emacs/src/lisp.h 3927 | 628 | FLOAT_TO_STRING_BUFSIZE c-src/emacs/src/lisp.h 3927 |
| 641 | FORTHSRC Makefile /^FORTHSRC=$(addprefix .\/forth-src\/,test-forth.fth)$/ | ||
| 642 | FOR_EACH_ALIST_VALUE c-src/emacs/src/lisp.h /^#define FOR_EACH_ALIST_VALUE(head_var, list_var, v/ | 629 | FOR_EACH_ALIST_VALUE c-src/emacs/src/lisp.h /^#define FOR_EACH_ALIST_VALUE(head_var, list_var, v/ |
| 643 | FOR_EACH_TAIL c-src/emacs/src/lisp.h /^#define FOR_EACH_TAIL(hare, list, tortoise, n) \\$/ | 630 | FOR_EACH_TAIL c-src/emacs/src/lisp.h /^#define FOR_EACH_TAIL(hare, list, tortoise, n) \\$/ |
| 644 | FRAMEP c-src/emacs/src/lisp.h /^FRAMEP (Lisp_Object a)$/ | 631 | FRAMEP c-src/emacs/src/lisp.h /^FRAMEP (Lisp_Object a)$/ |
| 645 | FRC Makefile /^FRC:;$/ | ||
| 646 | FREEFLOOD c-src/emacs/src/gmalloc.c 1858 | 632 | FREEFLOOD c-src/emacs/src/gmalloc.c 1858 |
| 647 | FSRC Makefile /^FSRC=$(addprefix .\/f-src\/,entry.for entry.strange_/ | ||
| 648 | FUN0 y-src/parse.y /^yylex FUN0()$/ | 633 | FUN0 y-src/parse.y /^yylex FUN0()$/ |
| 649 | FUN0 parse.y /^yylex FUN0()$/ | 634 | FUN0 parse.y /^yylex FUN0()$/ |
| 650 | FUN1 y-src/parse.y /^yyerror FUN1(char *, s)$/ | 635 | FUN1 y-src/parse.y /^yyerror FUN1(char *, s)$/ |
| @@ -735,7 +720,6 @@ HASH_TABLE_SIZE c-src/emacs/src/lisp.h /^HASH_TABLE_SIZE (struct Lisp_Hash_Table | |||
| 735 | HASH_VALUE c-src/emacs/src/lisp.h /^HASH_VALUE (struct Lisp_Hash_Table *h, ptrdiff_t i/ | 720 | HASH_VALUE c-src/emacs/src/lisp.h /^HASH_VALUE (struct Lisp_Hash_Table *h, ptrdiff_t i/ |
| 736 | HAVE_NTGUI c-src/etags.c 116 | 721 | HAVE_NTGUI c-src/etags.c 116 |
| 737 | HEAP c-src/emacs/src/gmalloc.c 131 | 722 | HEAP c-src/emacs/src/gmalloc.c 131 |
| 738 | HTMLSRC Makefile /^HTMLSRC=$(addprefix .\/html-src\/,softwarelibero.htm/ | ||
| 739 | HTML_help c-src/etags.c 584 | 723 | HTML_help c-src/etags.c 584 |
| 740 | HTML_labels c-src/etags.c /^HTML_labels (FILE *inf)$/ | 724 | HTML_labels c-src/etags.c /^HTML_labels (FILE *inf)$/ |
| 741 | HTML_suffixes c-src/etags.c 582 | 725 | HTML_suffixes c-src/etags.c 582 |
| @@ -851,7 +835,6 @@ LTGT cp-src/MDiagArray2.h 35 | |||
| 851 | LTGT cp-src/MDiagArray2.h 39 | 835 | LTGT cp-src/MDiagArray2.h 39 |
| 852 | LTGT cp-src/MDiagArray2.h 42 | 836 | LTGT cp-src/MDiagArray2.h 42 |
| 853 | LTGT cp-src/MDiagArray2.h 144 | 837 | LTGT cp-src/MDiagArray2.h 144 |
| 854 | LUASRC Makefile /^LUASRC=$(addprefix .\/lua-src\/,allegro.lua)$/ | ||
| 855 | L_CELL y-src/parse.c 10 | 838 | L_CELL y-src/parse.c 10 |
| 856 | L_CONST y-src/parse.c 13 | 839 | L_CONST y-src/parse.c 13 |
| 857 | L_FN0 y-src/parse.c 14 | 840 | L_FN0 y-src/parse.c 14 |
| @@ -938,7 +921,6 @@ Lua_suffixes c-src/etags.c 598 | |||
| 938 | MAGICBYTE c-src/emacs/src/gmalloc.c 1856 | 921 | MAGICBYTE c-src/emacs/src/gmalloc.c 1856 |
| 939 | MAGICFREE c-src/emacs/src/gmalloc.c 1855 | 922 | MAGICFREE c-src/emacs/src/gmalloc.c 1855 |
| 940 | MAGICWORD c-src/emacs/src/gmalloc.c 1854 | 923 | MAGICWORD c-src/emacs/src/gmalloc.c 1854 |
| 941 | MAKESRC Makefile /^MAKESRC=$(addprefix .\/make-src\/,Makefile)$/ | ||
| 942 | MALLOCFLOOD c-src/emacs/src/gmalloc.c 1857 | 924 | MALLOCFLOOD c-src/emacs/src/gmalloc.c 1857 |
| 943 | MANY c-src/emacs/src/lisp.h 2833 | 925 | MANY c-src/emacs/src/lisp.h 2833 |
| 944 | MARKERP c-src/emacs/src/lisp.h /^# define MARKERP(x) lisp_h_MARKERP (x)$/ | 926 | MARKERP c-src/emacs/src/lisp.h /^# define MARKERP(x) lisp_h_MARKERP (x)$/ |
| @@ -1016,7 +998,6 @@ NILP c-src/emacs/src/lisp.h /^# define NILP(x) lisp_h_NILP (x)$/ | |||
| 1016 | NIL_IS_ZERO c-src/emacs/src/lisp.h 1515 | 998 | NIL_IS_ZERO c-src/emacs/src/lisp.h 1515 |
| 1017 | NONPOINTER_BITS c-src/emacs/src/lisp.h 78 | 999 | NONPOINTER_BITS c-src/emacs/src/lisp.h 78 |
| 1018 | NONPOINTER_BITS c-src/emacs/src/lisp.h 80 | 1000 | NONPOINTER_BITS c-src/emacs/src/lisp.h 80 |
| 1019 | NONSRCS Makefile /^NONSRCS=.\/f-src\/entry.strange .\/erl-src\/lists.erl / | ||
| 1020 | NONSRCS make-src/Makefile 35 | 1001 | NONSRCS make-src/Makefile 35 |
| 1021 | NOTEQUAL y-src/cccp.c 13 | 1002 | NOTEQUAL y-src/cccp.c 13 |
| 1022 | NULL cccp.y 51 | 1003 | NULL cccp.y 51 |
| @@ -1033,20 +1014,14 @@ NewLayerSet lua-src/allegro.lua /^function NewLayerSet (name)$/ | |||
| 1033 | NewNameString pas-src/common.pas /^procedure NewNameString; (* (var NSP: NameStringPo/ | 1014 | NewNameString pas-src/common.pas /^procedure NewNameString; (* (var NSP: NameStringPo/ |
| 1034 | NmStrToErrStr pas-src/common.pas /^function NmStrToErrStr;(*($/ | 1015 | NmStrToErrStr pas-src/common.pas /^function NmStrToErrStr;(*($/ |
| 1035 | NmStrToInteger pas-src/common.pas /^function NmStrToInteger; (* (Str : NameString) : i/ | 1016 | NmStrToInteger pas-src/common.pas /^function NmStrToInteger; (* (Str : NameString) : i/ |
| 1036 | OBJCPPSRC Makefile /^OBJCPPSRC=$(addprefix .\/objcpp-src\/,SimpleCalc.H S/ | ||
| 1037 | OBJCSRC Makefile /^OBJCSRC=$(addprefix .\/objc-src\/,Subprocess.h Subpr/ | ||
| 1038 | OPENBUTTON objc-src/PackInsp.m 47 | 1017 | OPENBUTTON objc-src/PackInsp.m 47 |
| 1039 | OPTIONS Makefile /^OPTIONS=--members --declarations --regex=@regexfil/ | ||
| 1040 | OR y-src/cccp.c 10 | 1018 | OR y-src/cccp.c 10 |
| 1041 | OVERLAYP c-src/emacs/src/lisp.h /^OVERLAYP (Lisp_Object x)$/ | 1019 | OVERLAYP c-src/emacs/src/lisp.h /^OVERLAYP (Lisp_Object x)$/ |
| 1042 | Objc_help c-src/etags.c 613 | 1020 | Objc_help c-src/etags.c 613 |
| 1043 | Objc_suffixes c-src/etags.c 609 | 1021 | Objc_suffixes c-src/etags.c 609 |
| 1044 | OperatorFun c-src/h.h 88 | 1022 | OperatorFun c-src/h.h 88 |
| 1045 | Overview tex-src/gzip.texi /^@node Overview, Sample, Copying, Top$/ | 1023 | Overview tex-src/gzip.texi /^@node Overview, Sample, Copying, Top$/ |
| 1046 | PASSRC Makefile /^PASSRC=$(addprefix .\/pas-src\/,common.pas)$/ | ||
| 1047 | PDT c-src/h.h /^ Date 04 May 87 235311 PDT (Mon)$/ | 1024 | PDT c-src/h.h /^ Date 04 May 87 235311 PDT (Mon)$/ |
| 1048 | PERLSRC Makefile /^PERLSRC=$(addprefix .\/perl-src\/,htlmify-cystic yag/ | ||
| 1049 | PHPSRC Makefile /^PHPSRC=$(addprefix .\/php-src\/,lce_functions.php pt/ | ||
| 1050 | PHP_functions c-src/etags.c /^PHP_functions (FILE *inf)$/ | 1025 | PHP_functions c-src/etags.c /^PHP_functions (FILE *inf)$/ |
| 1051 | PHP_help c-src/etags.c 639 | 1026 | PHP_help c-src/etags.c 639 |
| 1052 | PHP_suffixes c-src/etags.c 637 | 1027 | PHP_suffixes c-src/etags.c 637 |
| @@ -1059,13 +1034,13 @@ POReader php-src/lce_functions.php 163 | |||
| 1059 | POReader php-src/lce_functions.php /^ function POReader($domain, $filename)$/ | 1034 | POReader php-src/lce_functions.php /^ function POReader($domain, $filename)$/ |
| 1060 | PRINT_UNDOCUMENTED_OPTIONS_HELP c-src/etags.c 804 | 1035 | PRINT_UNDOCUMENTED_OPTIONS_HELP c-src/etags.c 804 |
| 1061 | PROCESSP c-src/emacs/src/lisp.h /^PROCESSP (Lisp_Object a)$/ | 1036 | PROCESSP c-src/emacs/src/lisp.h /^PROCESSP (Lisp_Object a)$/ |
| 1062 | PROLSRC Makefile /^PROLSRC=$(addprefix .\/prol-src\/,ordsets.prolog nat/ | ||
| 1063 | PROP c-src/emacs/src/keyboard.c /^#define PROP(IDX) AREF (tool_bar_item_properties, / | 1037 | PROP c-src/emacs/src/keyboard.c /^#define PROP(IDX) AREF (tool_bar_item_properties, / |
| 1064 | PROP c-src/emacs/src/keyboard.c 8379 | 1038 | PROP c-src/emacs/src/keyboard.c 8379 |
| 1065 | PROTECT_MALLOC_STATE c-src/emacs/src/gmalloc.c /^#define PROTECT_MALLOC_STATE(PROT) protect_malloc_/ | 1039 | PROTECT_MALLOC_STATE c-src/emacs/src/gmalloc.c /^#define PROTECT_MALLOC_STATE(PROT) protect_malloc_/ |
| 1066 | PROTECT_MALLOC_STATE c-src/emacs/src/gmalloc.c /^#define PROTECT_MALLOC_STATE(PROT) \/* empty *\/$/ | 1040 | PROTECT_MALLOC_STATE c-src/emacs/src/gmalloc.c /^#define PROTECT_MALLOC_STATE(PROT) \/* empty *\/$/ |
| 1067 | PRTPKG f-src/entry.for /^ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/ | 1041 | PRTPKG f-src/entry.for /^ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/ |
| 1068 | PRTPKG f-src/entry.strange_suffix /^ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/ | 1042 | PRTPKG f-src/entry.strange_suffix /^ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/ |
| 1043 | PRTPKG f-src/entry.strange /^ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/ | ||
| 1069 | PSEUDO c-src/sysdep.h /^#define PSEUDO(name, syscall_name, args) / | 1044 | PSEUDO c-src/sysdep.h /^#define PSEUDO(name, syscall_name, args) / |
| 1070 | PSEUDOVECSIZE c-src/emacs/src/lisp.h /^#define PSEUDOVECSIZE(type, nonlispfield) \\$/ | 1045 | PSEUDOVECSIZE c-src/emacs/src/lisp.h /^#define PSEUDOVECSIZE(type, nonlispfield) \\$/ |
| 1071 | PSEUDOVECTORP c-src/emacs/src/lisp.h /^PSEUDOVECTORP (Lisp_Object a, int code)$/ | 1046 | PSEUDOVECTORP c-src/emacs/src/lisp.h /^PSEUDOVECTORP (Lisp_Object a, int code)$/ |
| @@ -1076,7 +1051,6 @@ PSEUDOVECTOR_REST_MASK c-src/emacs/src/lisp.h 814 | |||
| 1076 | PSEUDOVECTOR_SIZE_BITS c-src/emacs/src/lisp.h 808 | 1051 | PSEUDOVECTOR_SIZE_BITS c-src/emacs/src/lisp.h 808 |
| 1077 | PSEUDOVECTOR_SIZE_MASK c-src/emacs/src/lisp.h 809 | 1052 | PSEUDOVECTOR_SIZE_MASK c-src/emacs/src/lisp.h 809 |
| 1078 | PSEUDOVECTOR_TYPEP c-src/emacs/src/lisp.h /^PSEUDOVECTOR_TYPEP (struct vectorlike_header *a, i/ | 1053 | PSEUDOVECTOR_TYPEP c-src/emacs/src/lisp.h /^PSEUDOVECTOR_TYPEP (struct vectorlike_header *a, i/ |
| 1079 | PSSRC Makefile /^PSSRC=$(addprefix .\/ps-src\/,rfc1245.ps)$/ | ||
| 1080 | PS_functions c-src/etags.c /^PS_functions (FILE *inf)$/ | 1054 | PS_functions c-src/etags.c /^PS_functions (FILE *inf)$/ |
| 1081 | PS_help c-src/etags.c 649 | 1055 | PS_help c-src/etags.c 649 |
| 1082 | PS_suffixes c-src/etags.c 647 | 1056 | PS_suffixes c-src/etags.c 647 |
| @@ -1101,7 +1075,6 @@ PVEC_TERMINAL c-src/emacs/src/lisp.h 790 | |||
| 1101 | PVEC_TYPE_MASK c-src/emacs/src/lisp.h 819 | 1075 | PVEC_TYPE_MASK c-src/emacs/src/lisp.h 819 |
| 1102 | PVEC_WINDOW c-src/emacs/src/lisp.h 786 | 1076 | PVEC_WINDOW c-src/emacs/src/lisp.h 786 |
| 1103 | PVEC_WINDOW_CONFIGURATION c-src/emacs/src/lisp.h 791 | 1077 | PVEC_WINDOW_CONFIGURATION c-src/emacs/src/lisp.h 791 |
| 1104 | PYTSRC Makefile /^PYTSRC=$(addprefix .\/pyt-src\/,server.py)$/ | ||
| 1105 | PackageInspector objc-src/PackInsp.h /^@interface PackageInspector:WMInspector$/ | 1078 | PackageInspector objc-src/PackInsp.h /^@interface PackageInspector:WMInspector$/ |
| 1106 | Pascal_functions c-src/etags.c /^Pascal_functions (FILE *inf)$/ | 1079 | Pascal_functions c-src/etags.c /^Pascal_functions (FILE *inf)$/ |
| 1107 | Pascal_help c-src/etags.c 621 | 1080 | Pascal_help c-src/etags.c 621 |
| @@ -1192,7 +1165,6 @@ RECC_UNIBYTE c-src/emacs/src/regex.h 617 | |||
| 1192 | RECC_UPPER c-src/emacs/src/regex.h 612 | 1165 | RECC_UPPER c-src/emacs/src/regex.h 612 |
| 1193 | RECC_WORD c-src/emacs/src/regex.h 610 | 1166 | RECC_WORD c-src/emacs/src/regex.h 610 |
| 1194 | RECC_XDIGIT c-src/emacs/src/regex.h 614 | 1167 | RECC_XDIGIT c-src/emacs/src/regex.h 614 |
| 1195 | REGEX Makefile /^REGEX=\/[ \\t]*DEFVAR_[A-Z_ \\t\\n(]+"\\([^"]+\\)"\/$/ | ||
| 1196 | REGS_FIXED c-src/emacs/src/regex.h 378 | 1168 | REGS_FIXED c-src/emacs/src/regex.h 378 |
| 1197 | REGS_REALLOCATE c-src/emacs/src/regex.h 377 | 1169 | REGS_REALLOCATE c-src/emacs/src/regex.h 377 |
| 1198 | REGS_UNALLOCATED c-src/emacs/src/regex.h 376 | 1170 | REGS_UNALLOCATED c-src/emacs/src/regex.h 376 |
| @@ -1267,7 +1239,6 @@ RE_TRANSLATE_TYPE c-src/emacs/src/regex.h 332 | |||
| 1267 | RE_UNMATCHED_RIGHT_PAREN_ORD c-src/emacs/src/regex.h 136 | 1239 | RE_UNMATCHED_RIGHT_PAREN_ORD c-src/emacs/src/regex.h 136 |
| 1268 | RSH y-src/cccp.c 17 | 1240 | RSH y-src/cccp.c 17 |
| 1269 | RTE/s ada-src/2ataspri.adb /^ package RTE renames Interfaces.C.POSIX_RTE;$/ | 1241 | RTE/s ada-src/2ataspri.adb /^ package RTE renames Interfaces.C.POSIX_RTE;$/ |
| 1270 | RUN Makefile /^RUN=$/ | ||
| 1271 | Range cp-src/Range.h 35 | 1242 | Range cp-src/Range.h 35 |
| 1272 | Range::Range cp-src/Range.h /^ Range (void)$/ | 1243 | Range::Range cp-src/Range.h /^ Range (void)$/ |
| 1273 | Range::Range cp-src/Range.h /^ Range (const Range& r)$/ | 1244 | Range::Range cp-src/Range.h /^ Range (const Range& r)$/ |
| @@ -1328,6 +1299,7 @@ SDTrefSkipSpaces pas-src/common.pas /^procedure SDTrefSkipSpaces;$/ | |||
| 1328 | SDTrefStringToRec pas-src/common.pas /^procedure SDTrefStringToRec (* ($/ | 1299 | SDTrefStringToRec pas-src/common.pas /^procedure SDTrefStringToRec (* ($/ |
| 1329 | SETPRT f-src/entry.for /^ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, D/ | 1300 | SETPRT f-src/entry.for /^ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, D/ |
| 1330 | SETPRT f-src/entry.strange_suffix /^ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, D/ | 1301 | SETPRT f-src/entry.strange_suffix /^ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, D/ |
| 1302 | SETPRT f-src/entry.strange /^ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, D/ | ||
| 1331 | SET_SYMBOL_BLV c-src/emacs/src/lisp.h /^SET_SYMBOL_BLV (struct Lisp_Symbol *sym, struct Li/ | 1303 | SET_SYMBOL_BLV c-src/emacs/src/lisp.h /^SET_SYMBOL_BLV (struct Lisp_Symbol *sym, struct Li/ |
| 1332 | SET_SYMBOL_FWD c-src/emacs/src/lisp.h /^SET_SYMBOL_FWD (struct Lisp_Symbol *sym, union Lis/ | 1304 | SET_SYMBOL_FWD c-src/emacs/src/lisp.h /^SET_SYMBOL_FWD (struct Lisp_Symbol *sym, union Lis/ |
| 1333 | SET_SYMBOL_VAL c-src/emacs/src/lisp.h /^# define SET_SYMBOL_VAL(sym, v) lisp_h_SET_SYMBOL_/ | 1305 | SET_SYMBOL_VAL c-src/emacs/src/lisp.h /^# define SET_SYMBOL_VAL(sym, v) lisp_h_SET_SYMBOL_/ |
| @@ -1344,7 +1316,6 @@ SPECPDL_UNWIND c-src/emacs/src/lisp.h 2944 | |||
| 1344 | SPECPDL_UNWIND_INT c-src/emacs/src/lisp.h 2946 | 1316 | SPECPDL_UNWIND_INT c-src/emacs/src/lisp.h 2946 |
| 1345 | SPECPDL_UNWIND_PTR c-src/emacs/src/lisp.h 2945 | 1317 | SPECPDL_UNWIND_PTR c-src/emacs/src/lisp.h 2945 |
| 1346 | SPECPDL_UNWIND_VOID c-src/emacs/src/lisp.h 2947 | 1318 | SPECPDL_UNWIND_VOID c-src/emacs/src/lisp.h 2947 |
| 1347 | SRCS Makefile /^SRCS=Makefile ${ADASRC} ${ASRC} ${CSRC} ${CPSRC} $/ | ||
| 1348 | SREF c-src/emacs/src/lisp.h /^SREF (Lisp_Object string, ptrdiff_t index)$/ | 1319 | SREF c-src/emacs/src/lisp.h /^SREF (Lisp_Object string, ptrdiff_t index)$/ |
| 1349 | SSDATA c-src/emacs/src/lisp.h /^SSDATA (Lisp_Object string)$/ | 1320 | SSDATA c-src/emacs/src/lisp.h /^SSDATA (Lisp_Object string)$/ |
| 1350 | SSET c-src/emacs/src/lisp.h /^SSET (Lisp_Object string, ptrdiff_t index, unsigne/ | 1321 | SSET c-src/emacs/src/lisp.h /^SSET (Lisp_Object string, ptrdiff_t index, unsigne/ |
| @@ -1419,7 +1390,6 @@ TAS_Cell/t ada-src/2ataspri.ads /^ type TAS_Cell is$/ | |||
| 1419 | TCB_Ptr/t ada-src/2ataspri.ads /^ type TCB_Ptr is access all Task_Control_Block;$/ | 1390 | TCB_Ptr/t ada-src/2ataspri.ads /^ type TCB_Ptr is access all Task_Control_Block;$/ |
| 1420 | TERMINALP c-src/emacs/src/lisp.h /^TERMINALP (Lisp_Object a)$/ | 1391 | TERMINALP c-src/emacs/src/lisp.h /^TERMINALP (Lisp_Object a)$/ |
| 1421 | TEST php-src/ptest.php 1 | 1392 | TEST php-src/ptest.php 1 |
| 1422 | TEXSRC Makefile /^TEXSRC=$(addprefix .\/tex-src\/,testenv.tex gzip.tex/ | ||
| 1423 | TEXTAGS make-src/Makefile 204 | 1393 | TEXTAGS make-src/Makefile 204 |
| 1424 | TEXTAGS make-src/Makefile 219 | 1394 | TEXTAGS make-src/Makefile 219 |
| 1425 | TEX_LESC c-src/etags.c 4986 | 1395 | TEX_LESC c-src/etags.c 4986 |
| @@ -1604,7 +1574,6 @@ XUNTAG c-src/emacs/src/lisp.h /^XUNTAG (Lisp_Object a, int type)$/ | |||
| 1604 | XWINDOW c-src/emacs/src/lisp.h /^XWINDOW (Lisp_Object a)$/ | 1574 | XWINDOW c-src/emacs/src/lisp.h /^XWINDOW (Lisp_Object a)$/ |
| 1605 | Y c-src/h.h 100 | 1575 | Y c-src/h.h 100 |
| 1606 | YACC c-src/etags.c 2199 | 1576 | YACC c-src/etags.c 2199 |
| 1607 | YSRC Makefile /^YSRC=$(addprefix .\/y-src\/,parse.y parse.c atest.y / | ||
| 1608 | YYABORT /usr/share/bison/bison.simple 153 | 1577 | YYABORT /usr/share/bison/bison.simple 153 |
| 1609 | YYABORT /usr/share/bison/bison.simple 153 | 1578 | YYABORT /usr/share/bison/bison.simple 153 |
| 1610 | YYACCEPT /usr/share/bison/bison.simple 152 | 1579 | YYACCEPT /usr/share/bison/bison.simple 152 |
| @@ -2574,7 +2543,7 @@ b c-src/h.h 41 | |||
| 2574 | b c-src/h.h 103 | 2543 | b c-src/h.h 103 |
| 2575 | b c-src/h.h 104 | 2544 | b c-src/h.h 104 |
| 2576 | backslash=0 tex-src/texinfo.tex /^\\let\\indexbackslash=0 %overridden during \\printin/ | 2545 | backslash=0 tex-src/texinfo.tex /^\\let\\indexbackslash=0 %overridden during \\printin/ |
| 2577 | bar c-src//c.c /^void bar() {while(0) {}}$/ | 2546 | bar c-src/c.c /^void bar() {while(0) {}}$/ |
| 2578 | bar c.c 143 | 2547 | bar c.c 143 |
| 2579 | bar c-src/h.h 19 | 2548 | bar c-src/h.h 19 |
| 2580 | bas_syn prol-src/natded.prolog /^bas_syn(n(_)).$/ | 2549 | bas_syn prol-src/natded.prolog /^bas_syn(n(_)).$/ |
| @@ -2667,7 +2636,6 @@ cat c-src/h.h 81 | |||
| 2667 | cat prol-src/natded.prolog /^cat(A, Alpha@Beta, Ass3, Qs3, tree(fe,A:Alpha@Beta/ | 2636 | cat prol-src/natded.prolog /^cat(A, Alpha@Beta, Ass3, Qs3, tree(fe,A:Alpha@Beta/ |
| 2668 | cat_atoms prol-src/natded.prolog /^cat_atoms(A1,A2,A3):-$/ | 2637 | cat_atoms prol-src/natded.prolog /^cat_atoms(A1,A2,A3):-$/ |
| 2669 | cccccccccc c-src/h.h 115 | 2638 | cccccccccc c-src/h.h 115 |
| 2670 | cdiff Makefile /^cdiff: CTAGS.good CTAGS ${infiles}$/ | ||
| 2671 | cdr c-src/emacs/src/lisp.h 1159 | 2639 | cdr c-src/emacs/src/lisp.h 1159 |
| 2672 | cell y-src/parse.y 278 | 2640 | cell y-src/parse.y 278 |
| 2673 | cgrep html-src/software.html /^cgrep$/ | 2641 | cgrep html-src/software.html /^cgrep$/ |
| @@ -2677,7 +2645,6 @@ char_bits c-src/emacs/src/lisp.h 2443 | |||
| 2677 | char_table_specials c-src/emacs/src/lisp.h 1692 | 2645 | char_table_specials c-src/emacs/src/lisp.h 1692 |
| 2678 | charset_unibyte c-src/emacs/src/regex.h 410 | 2646 | charset_unibyte c-src/emacs/src/regex.h 410 |
| 2679 | chartonmstr pas-src/common.pas /^function chartonmstr; (*($/ | 2647 | chartonmstr pas-src/common.pas /^function chartonmstr; (*($/ |
| 2680 | check Makefile /^check:$/ | ||
| 2681 | checkQuotation php-src/lce_functions.php /^ function checkQuotation($str)$/ | 2648 | checkQuotation php-src/lce_functions.php /^ function checkQuotation($str)$/ |
| 2682 | check_cons_list c-src/emacs/src/lisp.h /^# define check_cons_list() lisp_h_check_cons_list/ | 2649 | check_cons_list c-src/emacs/src/lisp.h /^# define check_cons_list() lisp_h_check_cons_list/ |
| 2683 | checkhdr c-src/emacs/src/gmalloc.c /^checkhdr (const struct hdr *hdr)$/ | 2650 | checkhdr c-src/emacs/src/gmalloc.c /^checkhdr (const struct hdr *hdr)$/ |
| @@ -2846,7 +2813,6 @@ echo_message_buffer c-src/emacs/src/keyboard.c 171 | |||
| 2846 | echo_now c-src/emacs/src/keyboard.c /^echo_now (void)$/ | 2813 | echo_now c-src/emacs/src/keyboard.c /^echo_now (void)$/ |
| 2847 | echo_truncate c-src/emacs/src/keyboard.c /^echo_truncate (ptrdiff_t nchars)$/ | 2814 | echo_truncate c-src/emacs/src/keyboard.c /^echo_truncate (ptrdiff_t nchars)$/ |
| 2848 | echoing c-src/emacs/src/keyboard.c 154 | 2815 | echoing c-src/emacs/src/keyboard.c 154 |
| 2849 | ediff% Makefile /^ediff%: ETAGS.good% ETAGS ${infiles}$/ | ||
| 2850 | editItem pyt-src/server.py /^ def editItem(self):$/ | 2816 | editItem pyt-src/server.py /^ def editItem(self):$/ |
| 2851 | editsite pyt-src/server.py /^ def editsite(self, site):$/ | 2817 | editsite pyt-src/server.py /^ def editsite(self, site):$/ |
| 2852 | edituser pyt-src/server.py /^ def edituser(self, user):$/ | 2818 | edituser pyt-src/server.py /^ def edituser(self, user):$/ |
| @@ -2918,7 +2884,7 @@ expression_value cccp.y 68 | |||
| 2918 | expression_value y-src/cccp.y 68 | 2884 | expression_value y-src/cccp.y 68 |
| 2919 | extras c-src/emacs/src/lisp.h 1603 | 2885 | extras c-src/emacs/src/lisp.h 1603 |
| 2920 | extvar c-src/h.h 109 | 2886 | extvar c-src/h.h 109 |
| 2921 | f c-src//c.c /^T f(){if(x){}$/ | 2887 | f c-src/c.c /^T f(){if(x){}$/ |
| 2922 | f c.c 145 | 2888 | f c.c 145 |
| 2923 | f c.c 156 | 2889 | f c.c 156 |
| 2924 | f c.c 168 | 2890 | f c.c 168 |
| @@ -3002,7 +2968,7 @@ foo f-src/entry.strange /^ character*(*) function foo()$/ | |||
| 3002 | foo php-src/ptest.php /^foo()$/ | 2968 | foo php-src/ptest.php /^foo()$/ |
| 3003 | foo::f cp-src/c.C /^ void f() {}$/ | 2969 | foo::f cp-src/c.C /^ void f() {}$/ |
| 3004 | foo::x cp-src/c.C 80 | 2970 | foo::x cp-src/c.C 80 |
| 3005 | foobar c-src//c.c /^int foobar() {;}$/ | 2971 | foobar c-src/c.c /^int foobar() {;}$/ |
| 3006 | foobar c.c /^extern void foobar (void) __attribute__ ((section / | 2972 | foobar c.c /^extern void foobar (void) __attribute__ ((section / |
| 3007 | foobar2 c-src/h.h 20 | 2973 | foobar2 c-src/h.h 20 |
| 3008 | foobar2_ c-src/h.h 16 | 2974 | foobar2_ c-src/h.h 16 |
| @@ -3124,7 +3090,7 @@ hybrid_get_current_dir_name c-src/emacs/src/gmalloc.c /^hybrid_get_current_dir_n | |||
| 3124 | hybrid_malloc c-src/emacs/src/gmalloc.c /^hybrid_malloc (size_t size)$/ | 3090 | hybrid_malloc c-src/emacs/src/gmalloc.c /^hybrid_malloc (size_t size)$/ |
| 3125 | hybrid_realloc c-src/emacs/src/gmalloc.c /^hybrid_realloc (void *ptr, size_t size)$/ | 3091 | hybrid_realloc c-src/emacs/src/gmalloc.c /^hybrid_realloc (void *ptr, size_t size)$/ |
| 3126 | hypothetical_mem prol-src/natded.prolog /^hypothetical_mem(fi(N),Ass,_):-$/ | 3092 | hypothetical_mem prol-src/natded.prolog /^hypothetical_mem(fi(N),Ass,_):-$/ |
| 3127 | i c-src//c.c 2 | 3093 | i c-src/c.c 2 |
| 3128 | i c.c 169 | 3094 | i c.c 169 |
| 3129 | i c-src/emacs/src/lisp.h 567 | 3095 | i c-src/emacs/src/lisp.h 567 |
| 3130 | i c-src/emacs/src/lisp.h 4673 | 3096 | i c-src/emacs/src/lisp.h 4673 |
| @@ -3145,7 +3111,6 @@ inattribute c-src/etags.c 2400 | |||
| 3145 | index c-src/emacs/src/lisp.h 1856 | 3111 | index c-src/emacs/src/lisp.h 1856 |
| 3146 | infabsdir c-src/etags.c 206 | 3112 | infabsdir c-src/etags.c 206 |
| 3147 | infabsname c-src/etags.c 205 | 3113 | infabsname c-src/etags.c 205 |
| 3148 | infiles Makefile /^infiles = $(filter-out ${NONSRCS},${SRCS}) srclist/ | ||
| 3149 | infname c-src/etags.c 204 | 3114 | infname c-src/etags.c 204 |
| 3150 | info c-src/emacs/src/gmalloc.c 157 | 3115 | info c-src/emacs/src/gmalloc.c 157 |
| 3151 | infoPanel: objcpp-src/SimpleCalc.M /^- infoPanel:sender$/ | 3116 | infoPanel: objcpp-src/SimpleCalc.M /^- infoPanel:sender$/ |
| @@ -3183,7 +3148,7 @@ integertonmstr pas-src/common.pas /^function integertonmstr; (* (TheInteger : in | |||
| 3183 | intensity1 f-src/entry.for /^ & intensity1(efv,fv,svin,svquad,sfpv,maxp,val/ | 3148 | intensity1 f-src/entry.for /^ & intensity1(efv,fv,svin,svquad,sfpv,maxp,val/ |
| 3184 | intensity1 f-src/entry.strange_suffix /^ & intensity1(efv,fv,svin,svquad,sfpv,maxp,val/ | 3149 | intensity1 f-src/entry.strange_suffix /^ & intensity1(efv,fv,svin,svquad,sfpv,maxp,val/ |
| 3185 | intensity1 f-src/entry.strange /^ & intensity1(efv,fv,svin,svquad,sfpv,maxp,val/ | 3150 | intensity1 f-src/entry.strange /^ & intensity1(efv,fv,svin,svquad,sfpv,maxp,val/ |
| 3186 | interface_locate c-src//c.c /^interface_locate(void)$/ | 3151 | interface_locate c-src/c.c /^interface_locate(void)$/ |
| 3187 | intern c-src/emacs/src/lisp.h /^intern (const char *str)$/ | 3152 | intern c-src/emacs/src/lisp.h /^intern (const char *str)$/ |
| 3188 | intern_c_string c-src/emacs/src/lisp.h /^intern_c_string (const char *str)$/ | 3153 | intern_c_string c-src/emacs/src/lisp.h /^intern_c_string (const char *str)$/ |
| 3189 | internal_last_event_frame c-src/emacs/src/keyboard.c 228 | 3154 | internal_last_event_frame c-src/emacs/src/keyboard.c 228 |
| @@ -3615,9 +3580,7 @@ not_bol c-src/emacs/src/regex.h 391 | |||
| 3615 | not_eol c-src/emacs/src/regex.h 394 | 3580 | not_eol c-src/emacs/src/regex.h 394 |
| 3616 | not_single_kboard_state c-src/emacs/src/keyboard.c /^not_single_kboard_state (KBOARD *kboard)$/ | 3581 | not_single_kboard_state c-src/emacs/src/keyboard.c /^not_single_kboard_state (KBOARD *kboard)$/ |
| 3617 | notag2 c-src/torture.c 26 | 3582 | notag2 c-src/torture.c 26 |
| 3618 | notag2 c-src/dostorture.c 26 | ||
| 3619 | notag4 c-src/torture.c 45 | 3583 | notag4 c-src/torture.c 45 |
| 3620 | notag4 c-src/dostorture.c 45 | ||
| 3621 | notinname c-src/etags.c /^#define notinname(c) (_nin[CHAR (c)]) \/* c is not / | 3584 | notinname c-src/etags.c /^#define notinname(c) (_nin[CHAR (c)]) \/* c is not / |
| 3622 | npending c-src/emacs/src/keyboard.c 7244 | 3585 | npending c-src/emacs/src/keyboard.c 7244 |
| 3623 | ntool_bar_items c-src/emacs/src/keyboard.c 7974 | 3586 | ntool_bar_items c-src/emacs/src/keyboard.c 7974 |
| @@ -3772,11 +3735,8 @@ post pyt-src/server.py /^ def post(self):$/ | |||
| 3772 | post pyt-src/server.py /^ def post(self):$/ | 3735 | post pyt-src/server.py /^ def post(self):$/ |
| 3773 | pot_etags_version c-src/etags.c 81 | 3736 | pot_etags_version c-src/etags.c 81 |
| 3774 | pp1 c-src/torture.c /^int pp1($/ | 3737 | pp1 c-src/torture.c /^int pp1($/ |
| 3775 | pp1 c-src/dostorture.c /^int pp1($/ | ||
| 3776 | pp2 c-src/torture.c /^pp2$/ | 3738 | pp2 c-src/torture.c /^pp2$/ |
| 3777 | pp2 c-src/dostorture.c /^pp2$/ | ||
| 3778 | pp3 c-src/torture.c /^pp3(int bar)$/ | 3739 | pp3 c-src/torture.c /^pp3(int bar)$/ |
| 3779 | pp3 c-src/dostorture.c /^pp3(int bar)$/ | ||
| 3780 | pp_bas_cat prol-src/natded.prolog /^pp_bas_cat(Cat):-$/ | 3740 | pp_bas_cat prol-src/natded.prolog /^pp_bas_cat(Cat):-$/ |
| 3781 | pp_cat prol-src/natded.prolog /^pp_cat(Syn:Sem):-$/ | 3741 | pp_cat prol-src/natded.prolog /^pp_cat(Syn:Sem):-$/ |
| 3782 | pp_exp prol-src/natded.prolog /^pp_exp('NIL'):-$/ | 3742 | pp_exp prol-src/natded.prolog /^pp_exp('NIL'):-$/ |
| @@ -3901,7 +3861,6 @@ regex make-src/Makefile 216 | |||
| 3901 | regex make-src/Makefile 219 | 3861 | regex make-src/Makefile 219 |
| 3902 | regex_t c-src/emacs/src/regex.h 416 | 3862 | regex_t c-src/emacs/src/regex.h 416 |
| 3903 | regex_tag_multiline c-src/etags.c /^regex_tag_multiline (void)$/ | 3863 | regex_tag_multiline c-src/etags.c /^regex_tag_multiline (void)$/ |
| 3904 | regexfile Makefile /^regexfile: Makefile$/ | ||
| 3905 | regexp c-src/etags.c 256 | 3864 | regexp c-src/etags.c 256 |
| 3906 | regexp c-src/etags.c 268 | 3865 | regexp c-src/etags.c 268 |
| 3907 | registerAction: objcpp-src/SimpleCalc.M /^- registerAction:(SEL)action$/ | 3866 | registerAction: objcpp-src/SimpleCalc.M /^- registerAction:(SEL)action$/ |
| @@ -4053,7 +4012,6 @@ specbind_tag c-src/emacs/src/lisp.h 2943 | |||
| 4053 | specbinding c-src/emacs/src/lisp.h 2955 | 4012 | specbinding c-src/emacs/src/lisp.h 2955 |
| 4054 | specialsymbol prol-src/natded.prolog /^specialsymbol(C1,C2,S):-$/ | 4013 | specialsymbol prol-src/natded.prolog /^specialsymbol(C1,C2,S):-$/ |
| 4055 | splitexp prol-src/natded.prolog /^splitexp(E,E,('NIL','NIL')):-!.$/ | 4014 | splitexp prol-src/natded.prolog /^splitexp(E,E,('NIL','NIL')):-!.$/ |
| 4056 | srclist Makefile /^srclist: Makefile$/ | ||
| 4057 | ss3 c.c 255 | 4015 | ss3 c.c 255 |
| 4058 | sss1 c.c 252 | 4016 | sss1 c.c 252 |
| 4059 | sss2 c.c 253 | 4017 | sss2 c.c 253 |
| @@ -4155,18 +4113,12 @@ tag-re-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-re-match-p (re) | |||
| 4155 | tag-symbol-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-symbol-match-p (tag)$/ | 4113 | tag-symbol-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-symbol-match-p (tag)$/ |
| 4156 | tag-word-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-word-match-p (tag)$/ | 4114 | tag-word-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-word-match-p (tag)$/ |
| 4157 | tag1 c-src/torture.c /^(*tag1 (sig, handler)) ()$/ | 4115 | tag1 c-src/torture.c /^(*tag1 (sig, handler)) ()$/ |
| 4158 | tag1 c-src/dostorture.c /^(*tag1 (sig, handler)) ()$/ | ||
| 4159 | tag1 c-src/h.h 110 | 4116 | tag1 c-src/h.h 110 |
| 4160 | tag2 c-src/torture.c /^(*tag2 (sig, handler)) ()$/ | 4117 | tag2 c-src/torture.c /^(*tag2 (sig, handler)) ()$/ |
| 4161 | tag2 c-src/dostorture.c /^(*tag2 (sig, handler)) ()$/ | ||
| 4162 | tag3 c-src/torture.c /^(*tag3 (int sig, void (*handler) (int))) (int)$/ | 4118 | tag3 c-src/torture.c /^(*tag3 (int sig, void (*handler) (int))) (int)$/ |
| 4163 | tag3 c-src/dostorture.c /^(*tag3 (int sig, void (*handler) (int))) (int)$/ | ||
| 4164 | tag4 c-src/torture.c /^(*tag4 (int sig, void (*handler) (int))) (int)$/ | 4119 | tag4 c-src/torture.c /^(*tag4 (int sig, void (*handler) (int))) (int)$/ |
| 4165 | tag4 c-src/dostorture.c /^(*tag4 (int sig, void (*handler) (int))) (int)$/ | ||
| 4166 | tag5 c-src/torture.c /^tag5 (handler, arg)$/ | 4120 | tag5 c-src/torture.c /^tag5 (handler, arg)$/ |
| 4167 | tag5 c-src/dostorture.c /^tag5 (handler, arg)$/ | ||
| 4168 | tag6 c-src/torture.c /^tag6 (void (*handler) (void *), void *arg)$/ | 4121 | tag6 c-src/torture.c /^tag6 (void (*handler) (void *), void *arg)$/ |
| 4169 | tag6 c-src/dostorture.c /^tag6 (void (*handler) (void *), void *arg)$/ | ||
| 4170 | tag_or_ch c-src/emacs/src/lisp.h 3026 | 4122 | tag_or_ch c-src/emacs/src/lisp.h 3026 |
| 4171 | taggedfname c-src/etags.c 207 | 4123 | taggedfname c-src/etags.c 207 |
| 4172 | tags-add-tables el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-add-tables 'ask-user$/ | 4124 | tags-add-tables el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-add-tables 'ask-user$/ |
| @@ -4419,7 +4371,6 @@ xref-location-line el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod xref-loc | |||
| 4419 | xref-location-marker el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod xref-location-marker ((l xref-etags-/ | 4371 | xref-location-marker el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod xref-location-marker ((l xref-etags-/ |
| 4420 | xref-make-etags-location el-src/emacs/lisp/progmodes/etags.el /^(defun xref-make-etags-location (tag-info file)$/ | 4372 | xref-make-etags-location el-src/emacs/lisp/progmodes/etags.el /^(defun xref-make-etags-location (tag-info file)$/ |
| 4421 | xrnew c-src/etags.c /^#define xrnew(op, n, Type) ((op) = (Type *) xreall/ | 4373 | xrnew c-src/etags.c /^#define xrnew(op, n, Type) ((op) = (Type *) xreall/ |
| 4422 | xx Makefile /^xx="this line is here because of a fontlock bug$/ | ||
| 4423 | y-get-selection-internal c.c /^ Fy_get_selection_internal, Sy_get_selection_/ | 4374 | y-get-selection-internal c.c /^ Fy_get_selection_internal, Sy_get_selection_/ |
| 4424 | yyalloc /usr/share/bison/bison.simple 83 | 4375 | yyalloc /usr/share/bison/bison.simple 83 |
| 4425 | yyalloc /usr/share/bison/bison.simple 83 | 4376 | yyalloc /usr/share/bison/bison.simple 83 |
diff --git a/test/etags/ETAGS.good_1 b/test/etags/ETAGS.good_1 index 6762bf30b44..cabcd2c41a1 100644 --- a/test/etags/ETAGS.good_1 +++ b/test/etags/ETAGS.good_1 | |||
| @@ -1,46 +1,4 @@ | |||
| 1 | 1 | ||
| 2 | Makefile,683 | ||
| 3 | ADASRC=1,0 | ||
| 4 | ASRC=2,91 | ||
| 5 | CSRC=3,139 | ||
| 6 | CPSRC=7,410 | ||
| 7 | ELSRC=10,584 | ||
| 8 | ERLSRC=11,654 | ||
| 9 | FORTHSRC=12,699 | ||
| 10 | FSRC=13,749 | ||
| 11 | HTMLSRC=14,821 | ||
| 12 | LUASRC=16,950 | ||
| 13 | MAKESRC=17,993 | ||
| 14 | OBJCSRC=18,1035 | ||
| 15 | OBJCPPSRC=19,1116 | ||
| 16 | PASSRC=20,1179 | ||
| 17 | PERLSRC=21,1221 | ||
| 18 | PHPSRC=22,1291 | ||
| 19 | PSSRC=23,1363 | ||
| 20 | PROLSRC=24,1403 | ||
| 21 | PYTSRC=25,1465 | ||
| 22 | TEXSRC=26,1506 | ||
| 23 | YSRC=27,1585 | ||
| 24 | SRCS=28,1650 | ||
| 25 | NONSRCS=32,1902 | ||
| 26 | ETAGS_PROG=34,1976 | ||
| 27 | CTAGS_PROG=35,2007 | ||
| 28 | REGEX=37,2039 | ||
| 29 | xx=38,2085 | ||
| 30 | RUN=40,2134 | ||
| 31 | OPTIONS=42,2140 | ||
| 32 | ARGS=43,2192 | ||
| 33 | infiles 45,2210 | ||
| 34 | check:check47,2272 | ||
| 35 | ediff%:ediff%55,2575 | ||
| 36 | cdiff:cdiff58,2676 | ||
| 37 | ETAGS:ETAGS61,2773 | ||
| 38 | CTAGS:CTAGS64,2843 | ||
| 39 | srclist:srclist67,2921 | ||
| 40 | regexfile:regexfile71,3012 | ||
| 41 | .PRECIOUS:.PRECIOUS77,3189 | ||
| 42 | FRC:FRC79,3223 | ||
| 43 | |||
| 44 | ada-src/etags-test-for.ada,1969 | 2 | ada-src/etags-test-for.ada,1969 |
| 45 | type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0 | 3 | type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0 |
| 46 | function Body_RequiredBody_Required/f3,78 | 4 | function Body_RequiredBody_Required/f3,78 |
| @@ -621,19 +579,6 @@ char **tab_fill(tab_fill70,1129 | |||
| 621 | int tab_delete_first(91,1638 | 579 | int tab_delete_first(91,1638 |
| 622 | int tab_count_words(103,1820 | 580 | int tab_count_words(103,1820 |
| 623 | 581 | ||
| 624 | c-src/dostorture.c,197 | ||
| 625 | (*tag1 tag118,451 | ||
| 626 | #define notag2 26,552 | ||
| 627 | (*tag2 tag229,629 | ||
| 628 | (*tag3 tag339,771 | ||
| 629 | #define notag4 45,860 | ||
| 630 | (*tag4 tag448,954 | ||
| 631 | tag5 57,1080 | ||
| 632 | tag6 66,1207 | ||
| 633 | int pp1(74,1316 | ||
| 634 | pp287,1418 | ||
| 635 | pp3(100,1517 | ||
| 636 | |||
| 637 | c-src/emacs/src/gmalloc.c,3539 | 582 | c-src/emacs/src/gmalloc.c,3539 |
| 638 | #define USE_PTHREAD25,1002 | 583 | #define USE_PTHREAD25,1002 |
| 639 | #undef get_current_dir_name33,1126 | 584 | #undef get_current_dir_name33,1126 |
| @@ -2298,10 +2243,12 @@ f-src/entry.strange_suffix,172 | |||
| 2298 | & intensity1(577,12231 | 2243 | & intensity1(577,12231 |
| 2299 | character*(*) function foo(579,12307 | 2244 | character*(*) function foo(579,12307 |
| 2300 | 2245 | ||
| 2301 | f-src/entry.strange,103 | 2246 | f-src/entry.strange,172 |
| 2302 | ENTRY MSGSEL 193,4382 | 2247 | LOGICAL FUNCTION PRTPKG 3,75 |
| 2303 | & intensity1(375,8135 | 2248 | ENTRY SETPRT 194,3866 |
| 2304 | character*(*) function foo(377,8211 | 2249 | ENTRY MSGSEL 395,8478 |
| 2250 | & intensity1(577,12231 | ||
| 2251 | character*(*) function foo(579,12307 | ||
| 2305 | 2252 | ||
| 2306 | forth-src/test-forth.fth,408 | 2253 | forth-src/test-forth.fth,408 |
| 2307 | : a-forth-word 20,301 | 2254 | : a-forth-word 20,301 |
| @@ -2317,44 +2264,44 @@ constant (a-forth-constant(a-forth-constant38,628 | |||
| 2317 | code assemby-code-word 43,685 | 2264 | code assemby-code-word 43,685 |
| 2318 | : a-forth-word 50,870 | 2265 | : a-forth-word 50,870 |
| 2319 | 2266 | ||
| 2320 | html-src/softwarelibero.html,198 | 2267 | html-src/softwarelibero.html,200 |
| 2321 | Cos'è il software libero?4,38 | 2268 | Cos'è il software libero?4,38 |
| 2322 | Licenze d'uso di un programmalicenze65,2474 | 2269 | Licenze d'uso di un programmalicenze65,2500 |
| 2323 | Sfatiamo alcuni miti138,6064 | 2270 | Sfatiamo alcuni miti138,6118 |
| 2324 | Il movimento open sourceoss191,7968 | 2271 | Il movimento open sourceoss191,8037 |
| 2325 | Impatto pratico del software liberoimpatto231,9986 | 2272 | Impatto pratico del software liberoimpatto231,10066 |
| 2326 | 2273 | ||
| 2327 | html-src/index.shtml,104 | 2274 | html-src/index.shtml,104 |
| 2328 | 8,281 | 2275 | 8,281 |
| 2329 | In evidenza15,446 | 2276 | In evidenza15,447 |
| 2330 | Comunicati e iniziative32,974 | 2277 | Comunicati e iniziative32,976 |
| 2331 | Ultime notizie dall'associazione63,2027 | 2278 | Ultime notizie dall'associazione63,2030 |
| 2332 | 2279 | ||
| 2333 | html-src/algrthms.html,467 | 2280 | html-src/algrthms.html,467 |
| 2334 | Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms7,276 | 2281 | Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms7,271 |
| 2335 | Descriptionalgorithms10,477 | 2282 | Descriptionalgorithms10,472 |
| 2336 | Generating the Datagenalgorithm48,1953 | 2283 | Generating the Datagenalgorithm48,1948 |
| 2337 | Convolutionallyconalgorithm55,2463 | 2284 | Convolutionallyconalgorithm55,2458 |
| 2338 | Nextstatetable262,11331 | 2285 | Nextstatetable262,11326 |
| 2339 | Outputoutputtable350,13571 | 2286 | Outputoutputtable350,13566 |
| 2340 | Mapping the Channel Symbolsmapping433,15786 | 2287 | Mapping the Channel Symbolsmapping433,15781 |
| 2341 | Adding Noise to theaddnoise439,16174 | 2288 | Adding Noise to theaddnoise439,16169 |
| 2342 | Quantizing the Receivedquantizing469,18637 | 2289 | Quantizing the Receivedquantizing469,18632 |
| 2343 | 2290 | ||
| 2344 | html-src/software.html,438 | 2291 | html-src/software.html,439 |
| 2345 | Francesco Potortì Software Page9,280 | 2292 | Francesco Potortì Software Page9,280 |
| 2346 | Software that I wrote for supporting my research activitysimulation36,1400 | 2293 | Software that I wrote for supporting my research activitysimulation36,1398 |
| 2347 | MTGmtg41,1484 | 2294 | MTGmtg41,1482 |
| 2348 | Fracasfracas65,2626 | 2295 | Fracasfracas65,2624 |
| 2349 | GaliLEOgalileo101,4234 | 2296 | GaliLEOgalileo101,4232 |
| 2350 | Leasqrleasqr114,4679 | 2297 | Leasqrleasqr114,4677 |
| 2351 | Free software that I wrote for the GNU project or for my personal or workgnu142,6067 | 2298 | Free software that I wrote for the GNU project or for my personal or workgnu142,6065 |
| 2352 | Etagsetags148,6182 | 2299 | Etagsetags148,6180 |
| 2353 | checkiso161,6731 | 2300 | checkiso161,6729 |
| 2354 | cgrep178,7549 | 2301 | cgrep178,7547 |
| 2355 | debian-bug.eldebian-bug190,7981 | 2302 | debian-bug.eldebian-bug190,7979 |
| 2356 | tcpdump205,8566 | 2303 | tcpdump205,8564 |
| 2357 | Links to interesting softwarelinks216,8893 | 2304 | Links to interesting softwarelinks216,8891 |
| 2358 | 2305 | ||
| 2359 | lua-src/allegro.lua,400 | 2306 | lua-src/allegro.lua,400 |
| 2360 | local function get_layer_by_name 7,175 | 2307 | local function get_layer_by_name 7,175 |
| @@ -3730,7 +3677,7 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno % | |||
| 3730 | \global\def={=3306,107486 | 3677 | \global\def={=3306,107486 |
| 3731 | \def\normalbackslash{\normalbackslash3320,107868 | 3678 | \def\normalbackslash{\normalbackslash3320,107868 |
| 3732 | 3679 | ||
| 3733 | c-src//c.c,76 | 3680 | c-src/c.c,76 |
| 3734 | T f(1,0 | 3681 | T f(1,0 |
| 3735 | }T i;2,14 | 3682 | }T i;2,14 |
| 3736 | void bar(5,69 | 3683 | void bar(5,69 |
diff --git a/test/etags/ETAGS.good_2 b/test/etags/ETAGS.good_2 index 32b58d87984..5d4f7061e0a 100644 --- a/test/etags/ETAGS.good_2 +++ b/test/etags/ETAGS.good_2 | |||
| @@ -1,46 +1,4 @@ | |||
| 1 | 1 | ||
| 2 | Makefile,683 | ||
| 3 | ADASRC=1,0 | ||
| 4 | ASRC=2,91 | ||
| 5 | CSRC=3,139 | ||
| 6 | CPSRC=7,410 | ||
| 7 | ELSRC=10,584 | ||
| 8 | ERLSRC=11,654 | ||
| 9 | FORTHSRC=12,699 | ||
| 10 | FSRC=13,749 | ||
| 11 | HTMLSRC=14,821 | ||
| 12 | LUASRC=16,950 | ||
| 13 | MAKESRC=17,993 | ||
| 14 | OBJCSRC=18,1035 | ||
| 15 | OBJCPPSRC=19,1116 | ||
| 16 | PASSRC=20,1179 | ||
| 17 | PERLSRC=21,1221 | ||
| 18 | PHPSRC=22,1291 | ||
| 19 | PSSRC=23,1363 | ||
| 20 | PROLSRC=24,1403 | ||
| 21 | PYTSRC=25,1465 | ||
| 22 | TEXSRC=26,1506 | ||
| 23 | YSRC=27,1585 | ||
| 24 | SRCS=28,1650 | ||
| 25 | NONSRCS=32,1902 | ||
| 26 | ETAGS_PROG=34,1976 | ||
| 27 | CTAGS_PROG=35,2007 | ||
| 28 | REGEX=37,2039 | ||
| 29 | xx=38,2085 | ||
| 30 | RUN=40,2134 | ||
| 31 | OPTIONS=42,2140 | ||
| 32 | ARGS=43,2192 | ||
| 33 | infiles 45,2210 | ||
| 34 | check:check47,2272 | ||
| 35 | ediff%:ediff%55,2575 | ||
| 36 | cdiff:cdiff58,2676 | ||
| 37 | ETAGS:ETAGS61,2773 | ||
| 38 | CTAGS:CTAGS64,2843 | ||
| 39 | srclist:srclist67,2921 | ||
| 40 | regexfile:regexfile71,3012 | ||
| 41 | .PRECIOUS:.PRECIOUS77,3189 | ||
| 42 | FRC:FRC79,3223 | ||
| 43 | |||
| 44 | ada-src/etags-test-for.ada,1969 | 2 | ada-src/etags-test-for.ada,1969 |
| 45 | type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0 | 3 | type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0 |
| 46 | function Body_RequiredBody_Required/f3,78 | 4 | function Body_RequiredBody_Required/f3,78 |
| @@ -688,19 +646,6 @@ char **tab_fill(tab_fill70,1129 | |||
| 688 | int tab_delete_first(91,1638 | 646 | int tab_delete_first(91,1638 |
| 689 | int tab_count_words(103,1820 | 647 | int tab_count_words(103,1820 |
| 690 | 648 | ||
| 691 | c-src/dostorture.c,197 | ||
| 692 | (*tag1 tag118,451 | ||
| 693 | #define notag2 26,552 | ||
| 694 | (*tag2 tag229,629 | ||
| 695 | (*tag3 tag339,771 | ||
| 696 | #define notag4 45,860 | ||
| 697 | (*tag4 tag448,954 | ||
| 698 | tag5 57,1080 | ||
| 699 | tag6 66,1207 | ||
| 700 | int pp1(74,1316 | ||
| 701 | pp287,1418 | ||
| 702 | pp3(100,1517 | ||
| 703 | |||
| 704 | c-src/emacs/src/gmalloc.c,6643 | 649 | c-src/emacs/src/gmalloc.c,6643 |
| 705 | #define USE_PTHREAD25,1002 | 650 | #define USE_PTHREAD25,1002 |
| 706 | #undef get_current_dir_name33,1126 | 651 | #undef get_current_dir_name33,1126 |
| @@ -2865,10 +2810,12 @@ f-src/entry.strange_suffix,172 | |||
| 2865 | & intensity1(577,12231 | 2810 | & intensity1(577,12231 |
| 2866 | character*(*) function foo(579,12307 | 2811 | character*(*) function foo(579,12307 |
| 2867 | 2812 | ||
| 2868 | f-src/entry.strange,103 | 2813 | f-src/entry.strange,172 |
| 2869 | ENTRY MSGSEL 193,4382 | 2814 | LOGICAL FUNCTION PRTPKG 3,75 |
| 2870 | & intensity1(375,8135 | 2815 | ENTRY SETPRT 194,3866 |
| 2871 | character*(*) function foo(377,8211 | 2816 | ENTRY MSGSEL 395,8478 |
| 2817 | & intensity1(577,12231 | ||
| 2818 | character*(*) function foo(579,12307 | ||
| 2872 | 2819 | ||
| 2873 | forth-src/test-forth.fth,408 | 2820 | forth-src/test-forth.fth,408 |
| 2874 | : a-forth-word 20,301 | 2821 | : a-forth-word 20,301 |
| @@ -2884,44 +2831,44 @@ constant (a-forth-constant(a-forth-constant38,628 | |||
| 2884 | code assemby-code-word 43,685 | 2831 | code assemby-code-word 43,685 |
| 2885 | : a-forth-word 50,870 | 2832 | : a-forth-word 50,870 |
| 2886 | 2833 | ||
| 2887 | html-src/softwarelibero.html,198 | 2834 | html-src/softwarelibero.html,200 |
| 2888 | Cos'è il software libero?4,38 | 2835 | Cos'è il software libero?4,38 |
| 2889 | Licenze d'uso di un programmalicenze65,2474 | 2836 | Licenze d'uso di un programmalicenze65,2500 |
| 2890 | Sfatiamo alcuni miti138,6064 | 2837 | Sfatiamo alcuni miti138,6118 |
| 2891 | Il movimento open sourceoss191,7968 | 2838 | Il movimento open sourceoss191,8037 |
| 2892 | Impatto pratico del software liberoimpatto231,9986 | 2839 | Impatto pratico del software liberoimpatto231,10066 |
| 2893 | 2840 | ||
| 2894 | html-src/index.shtml,104 | 2841 | html-src/index.shtml,104 |
| 2895 | 8,281 | 2842 | 8,281 |
| 2896 | In evidenza15,446 | 2843 | In evidenza15,447 |
| 2897 | Comunicati e iniziative32,974 | 2844 | Comunicati e iniziative32,976 |
| 2898 | Ultime notizie dall'associazione63,2027 | 2845 | Ultime notizie dall'associazione63,2030 |
| 2899 | 2846 | ||
| 2900 | html-src/algrthms.html,467 | 2847 | html-src/algrthms.html,467 |
| 2901 | Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms7,276 | 2848 | Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms7,271 |
| 2902 | Descriptionalgorithms10,477 | 2849 | Descriptionalgorithms10,472 |
| 2903 | Generating the Datagenalgorithm48,1953 | 2850 | Generating the Datagenalgorithm48,1948 |
| 2904 | Convolutionallyconalgorithm55,2463 | 2851 | Convolutionallyconalgorithm55,2458 |
| 2905 | Nextstatetable262,11331 | 2852 | Nextstatetable262,11326 |
| 2906 | Outputoutputtable350,13571 | 2853 | Outputoutputtable350,13566 |
| 2907 | Mapping the Channel Symbolsmapping433,15786 | 2854 | Mapping the Channel Symbolsmapping433,15781 |
| 2908 | Adding Noise to theaddnoise439,16174 | 2855 | Adding Noise to theaddnoise439,16169 |
| 2909 | Quantizing the Receivedquantizing469,18637 | 2856 | Quantizing the Receivedquantizing469,18632 |
| 2910 | 2857 | ||
| 2911 | html-src/software.html,438 | 2858 | html-src/software.html,439 |
| 2912 | Francesco Potortì Software Page9,280 | 2859 | Francesco Potortì Software Page9,280 |
| 2913 | Software that I wrote for supporting my research activitysimulation36,1400 | 2860 | Software that I wrote for supporting my research activitysimulation36,1398 |
| 2914 | MTGmtg41,1484 | 2861 | MTGmtg41,1482 |
| 2915 | Fracasfracas65,2626 | 2862 | Fracasfracas65,2624 |
| 2916 | GaliLEOgalileo101,4234 | 2863 | GaliLEOgalileo101,4232 |
| 2917 | Leasqrleasqr114,4679 | 2864 | Leasqrleasqr114,4677 |
| 2918 | Free software that I wrote for the GNU project or for my personal or workgnu142,6067 | 2865 | Free software that I wrote for the GNU project or for my personal or workgnu142,6065 |
| 2919 | Etagsetags148,6182 | 2866 | Etagsetags148,6180 |
| 2920 | checkiso161,6731 | 2867 | checkiso161,6729 |
| 2921 | cgrep178,7549 | 2868 | cgrep178,7547 |
| 2922 | debian-bug.eldebian-bug190,7981 | 2869 | debian-bug.eldebian-bug190,7979 |
| 2923 | tcpdump205,8566 | 2870 | tcpdump205,8564 |
| 2924 | Links to interesting softwarelinks216,8893 | 2871 | Links to interesting softwarelinks216,8891 |
| 2925 | 2872 | ||
| 2926 | lua-src/allegro.lua,400 | 2873 | lua-src/allegro.lua,400 |
| 2927 | local function get_layer_by_name 7,175 | 2874 | local function get_layer_by_name 7,175 |
| @@ -4299,7 +4246,7 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno % | |||
| 4299 | \global\def={=3306,107486 | 4246 | \global\def={=3306,107486 |
| 4300 | \def\normalbackslash{\normalbackslash3320,107868 | 4247 | \def\normalbackslash{\normalbackslash3320,107868 |
| 4301 | 4248 | ||
| 4302 | c-src//c.c,76 | 4249 | c-src/c.c,76 |
| 4303 | T f(1,0 | 4250 | T f(1,0 |
| 4304 | }T i;2,14 | 4251 | }T i;2,14 |
| 4305 | void bar(5,69 | 4252 | void bar(5,69 |
diff --git a/test/etags/ETAGS.good_3 b/test/etags/ETAGS.good_3 index 644ffe49df4..1d8e34ad3e7 100644 --- a/test/etags/ETAGS.good_3 +++ b/test/etags/ETAGS.good_3 | |||
| @@ -1,46 +1,4 @@ | |||
| 1 | 1 | ||
| 2 | Makefile,683 | ||
| 3 | ADASRC=1,0 | ||
| 4 | ASRC=2,91 | ||
| 5 | CSRC=3,139 | ||
| 6 | CPSRC=7,410 | ||
| 7 | ELSRC=10,584 | ||
| 8 | ERLSRC=11,654 | ||
| 9 | FORTHSRC=12,699 | ||
| 10 | FSRC=13,749 | ||
| 11 | HTMLSRC=14,821 | ||
| 12 | LUASRC=16,950 | ||
| 13 | MAKESRC=17,993 | ||
| 14 | OBJCSRC=18,1035 | ||
| 15 | OBJCPPSRC=19,1116 | ||
| 16 | PASSRC=20,1179 | ||
| 17 | PERLSRC=21,1221 | ||
| 18 | PHPSRC=22,1291 | ||
| 19 | PSSRC=23,1363 | ||
| 20 | PROLSRC=24,1403 | ||
| 21 | PYTSRC=25,1465 | ||
| 22 | TEXSRC=26,1506 | ||
| 23 | YSRC=27,1585 | ||
| 24 | SRCS=28,1650 | ||
| 25 | NONSRCS=32,1902 | ||
| 26 | ETAGS_PROG=34,1976 | ||
| 27 | CTAGS_PROG=35,2007 | ||
| 28 | REGEX=37,2039 | ||
| 29 | xx=38,2085 | ||
| 30 | RUN=40,2134 | ||
| 31 | OPTIONS=42,2140 | ||
| 32 | ARGS=43,2192 | ||
| 33 | infiles 45,2210 | ||
| 34 | check:check47,2272 | ||
| 35 | ediff%:ediff%55,2575 | ||
| 36 | cdiff:cdiff58,2676 | ||
| 37 | ETAGS:ETAGS61,2773 | ||
| 38 | CTAGS:CTAGS64,2843 | ||
| 39 | srclist:srclist67,2921 | ||
| 40 | regexfile:regexfile71,3012 | ||
| 41 | .PRECIOUS:.PRECIOUS77,3189 | ||
| 42 | FRC:FRC79,3223 | ||
| 43 | |||
| 44 | ada-src/etags-test-for.ada,1969 | 2 | ada-src/etags-test-for.ada,1969 |
| 45 | type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0 | 3 | type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0 |
| 46 | function Body_RequiredBody_Required/f3,78 | 4 | function Body_RequiredBody_Required/f3,78 |
| @@ -690,19 +648,6 @@ char **tab_fill(tab_fill70,1129 | |||
| 690 | int tab_delete_first(91,1638 | 648 | int tab_delete_first(91,1638 |
| 691 | int tab_count_words(103,1820 | 649 | int tab_count_words(103,1820 |
| 692 | 650 | ||
| 693 | c-src/dostorture.c,197 | ||
| 694 | (*tag1 tag118,451 | ||
| 695 | #define notag2 26,552 | ||
| 696 | (*tag2 tag229,629 | ||
| 697 | (*tag3 tag339,771 | ||
| 698 | #define notag4 45,860 | ||
| 699 | (*tag4 tag448,954 | ||
| 700 | tag5 57,1080 | ||
| 701 | tag6 66,1207 | ||
| 702 | int pp1(74,1316 | ||
| 703 | pp287,1418 | ||
| 704 | pp3(100,1517 | ||
| 705 | |||
| 706 | c-src/emacs/src/gmalloc.c,4207 | 651 | c-src/emacs/src/gmalloc.c,4207 |
| 707 | #define USE_PTHREAD25,1002 | 652 | #define USE_PTHREAD25,1002 |
| 708 | #undef get_current_dir_name33,1126 | 653 | #undef get_current_dir_name33,1126 |
| @@ -2615,10 +2560,12 @@ f-src/entry.strange_suffix,172 | |||
| 2615 | & intensity1(577,12231 | 2560 | & intensity1(577,12231 |
| 2616 | character*(*) function foo(579,12307 | 2561 | character*(*) function foo(579,12307 |
| 2617 | 2562 | ||
| 2618 | f-src/entry.strange,103 | 2563 | f-src/entry.strange,172 |
| 2619 | ENTRY MSGSEL 193,4382 | 2564 | LOGICAL FUNCTION PRTPKG 3,75 |
| 2620 | & intensity1(375,8135 | 2565 | ENTRY SETPRT 194,3866 |
| 2621 | character*(*) function foo(377,8211 | 2566 | ENTRY MSGSEL 395,8478 |
| 2567 | & intensity1(577,12231 | ||
| 2568 | character*(*) function foo(579,12307 | ||
| 2622 | 2569 | ||
| 2623 | forth-src/test-forth.fth,408 | 2570 | forth-src/test-forth.fth,408 |
| 2624 | : a-forth-word 20,301 | 2571 | : a-forth-word 20,301 |
| @@ -2634,44 +2581,44 @@ constant (a-forth-constant(a-forth-constant38,628 | |||
| 2634 | code assemby-code-word 43,685 | 2581 | code assemby-code-word 43,685 |
| 2635 | : a-forth-word 50,870 | 2582 | : a-forth-word 50,870 |
| 2636 | 2583 | ||
| 2637 | html-src/softwarelibero.html,198 | 2584 | html-src/softwarelibero.html,200 |
| 2638 | Cos'è il software libero?4,38 | 2585 | Cos'è il software libero?4,38 |
| 2639 | Licenze d'uso di un programmalicenze65,2474 | 2586 | Licenze d'uso di un programmalicenze65,2500 |
| 2640 | Sfatiamo alcuni miti138,6064 | 2587 | Sfatiamo alcuni miti138,6118 |
| 2641 | Il movimento open sourceoss191,7968 | 2588 | Il movimento open sourceoss191,8037 |
| 2642 | Impatto pratico del software liberoimpatto231,9986 | 2589 | Impatto pratico del software liberoimpatto231,10066 |
| 2643 | 2590 | ||
| 2644 | html-src/index.shtml,104 | 2591 | html-src/index.shtml,104 |
| 2645 | 8,281 | 2592 | 8,281 |
| 2646 | In evidenza15,446 | 2593 | In evidenza15,447 |
| 2647 | Comunicati e iniziative32,974 | 2594 | Comunicati e iniziative32,976 |
| 2648 | Ultime notizie dall'associazione63,2027 | 2595 | Ultime notizie dall'associazione63,2030 |
| 2649 | 2596 | ||
| 2650 | html-src/algrthms.html,467 | 2597 | html-src/algrthms.html,467 |
| 2651 | Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms7,276 | 2598 | Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms7,271 |
| 2652 | Descriptionalgorithms10,477 | 2599 | Descriptionalgorithms10,472 |
| 2653 | Generating the Datagenalgorithm48,1953 | 2600 | Generating the Datagenalgorithm48,1948 |
| 2654 | Convolutionallyconalgorithm55,2463 | 2601 | Convolutionallyconalgorithm55,2458 |
| 2655 | Nextstatetable262,11331 | 2602 | Nextstatetable262,11326 |
| 2656 | Outputoutputtable350,13571 | 2603 | Outputoutputtable350,13566 |
| 2657 | Mapping the Channel Symbolsmapping433,15786 | 2604 | Mapping the Channel Symbolsmapping433,15781 |
| 2658 | Adding Noise to theaddnoise439,16174 | 2605 | Adding Noise to theaddnoise439,16169 |
| 2659 | Quantizing the Receivedquantizing469,18637 | 2606 | Quantizing the Receivedquantizing469,18632 |
| 2660 | 2607 | ||
| 2661 | html-src/software.html,438 | 2608 | html-src/software.html,439 |
| 2662 | Francesco Potortì Software Page9,280 | 2609 | Francesco Potortì Software Page9,280 |
| 2663 | Software that I wrote for supporting my research activitysimulation36,1400 | 2610 | Software that I wrote for supporting my research activitysimulation36,1398 |
| 2664 | MTGmtg41,1484 | 2611 | MTGmtg41,1482 |
| 2665 | Fracasfracas65,2626 | 2612 | Fracasfracas65,2624 |
| 2666 | GaliLEOgalileo101,4234 | 2613 | GaliLEOgalileo101,4232 |
| 2667 | Leasqrleasqr114,4679 | 2614 | Leasqrleasqr114,4677 |
| 2668 | Free software that I wrote for the GNU project or for my personal or workgnu142,6067 | 2615 | Free software that I wrote for the GNU project or for my personal or workgnu142,6065 |
| 2669 | Etagsetags148,6182 | 2616 | Etagsetags148,6180 |
| 2670 | checkiso161,6731 | 2617 | checkiso161,6729 |
| 2671 | cgrep178,7549 | 2618 | cgrep178,7547 |
| 2672 | debian-bug.eldebian-bug190,7981 | 2619 | debian-bug.eldebian-bug190,7979 |
| 2673 | tcpdump205,8566 | 2620 | tcpdump205,8564 |
| 2674 | Links to interesting softwarelinks216,8893 | 2621 | Links to interesting softwarelinks216,8891 |
| 2675 | 2622 | ||
| 2676 | lua-src/allegro.lua,400 | 2623 | lua-src/allegro.lua,400 |
| 2677 | local function get_layer_by_name 7,175 | 2624 | local function get_layer_by_name 7,175 |
| @@ -4074,7 +4021,7 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno % | |||
| 4074 | \global\def={=3306,107486 | 4021 | \global\def={=3306,107486 |
| 4075 | \def\normalbackslash{\normalbackslash3320,107868 | 4022 | \def\normalbackslash{\normalbackslash3320,107868 |
| 4076 | 4023 | ||
| 4077 | c-src//c.c,76 | 4024 | c-src/c.c,76 |
| 4078 | T f(1,0 | 4025 | T f(1,0 |
| 4079 | }T i;2,14 | 4026 | }T i;2,14 |
| 4080 | void bar(5,69 | 4027 | void bar(5,69 |
diff --git a/test/etags/ETAGS.good_4 b/test/etags/ETAGS.good_4 index 5d31c366437..30ea7dcb6f7 100644 --- a/test/etags/ETAGS.good_4 +++ b/test/etags/ETAGS.good_4 | |||
| @@ -1,46 +1,4 @@ | |||
| 1 | 1 | ||
| 2 | Makefile,683 | ||
| 3 | ADASRC=1,0 | ||
| 4 | ASRC=2,91 | ||
| 5 | CSRC=3,139 | ||
| 6 | CPSRC=7,410 | ||
| 7 | ELSRC=10,584 | ||
| 8 | ERLSRC=11,654 | ||
| 9 | FORTHSRC=12,699 | ||
| 10 | FSRC=13,749 | ||
| 11 | HTMLSRC=14,821 | ||
| 12 | LUASRC=16,950 | ||
| 13 | MAKESRC=17,993 | ||
| 14 | OBJCSRC=18,1035 | ||
| 15 | OBJCPPSRC=19,1116 | ||
| 16 | PASSRC=20,1179 | ||
| 17 | PERLSRC=21,1221 | ||
| 18 | PHPSRC=22,1291 | ||
| 19 | PSSRC=23,1363 | ||
| 20 | PROLSRC=24,1403 | ||
| 21 | PYTSRC=25,1465 | ||
| 22 | TEXSRC=26,1506 | ||
| 23 | YSRC=27,1585 | ||
| 24 | SRCS=28,1650 | ||
| 25 | NONSRCS=32,1902 | ||
| 26 | ETAGS_PROG=34,1976 | ||
| 27 | CTAGS_PROG=35,2007 | ||
| 28 | REGEX=37,2039 | ||
| 29 | xx=38,2085 | ||
| 30 | RUN=40,2134 | ||
| 31 | OPTIONS=42,2140 | ||
| 32 | ARGS=43,2192 | ||
| 33 | infiles 45,2210 | ||
| 34 | check:check47,2272 | ||
| 35 | ediff%:ediff%55,2575 | ||
| 36 | cdiff:cdiff58,2676 | ||
| 37 | ETAGS:ETAGS61,2773 | ||
| 38 | CTAGS:CTAGS64,2843 | ||
| 39 | srclist:srclist67,2921 | ||
| 40 | regexfile:regexfile71,3012 | ||
| 41 | .PRECIOUS:.PRECIOUS77,3189 | ||
| 42 | FRC:FRC79,3223 | ||
| 43 | |||
| 44 | ada-src/etags-test-for.ada,1969 | 2 | ada-src/etags-test-for.ada,1969 |
| 45 | type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0 | 3 | type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0 |
| 46 | function Body_RequiredBody_Required/f3,78 | 4 | function Body_RequiredBody_Required/f3,78 |
| @@ -645,19 +603,6 @@ char **tab_fill(tab_fill70,1129 | |||
| 645 | int tab_delete_first(91,1638 | 603 | int tab_delete_first(91,1638 |
| 646 | int tab_count_words(103,1820 | 604 | int tab_count_words(103,1820 |
| 647 | 605 | ||
| 648 | c-src/dostorture.c,197 | ||
| 649 | (*tag1 tag118,451 | ||
| 650 | #define notag2 26,552 | ||
| 651 | (*tag2 tag229,629 | ||
| 652 | (*tag3 tag339,771 | ||
| 653 | #define notag4 45,860 | ||
| 654 | (*tag4 tag448,954 | ||
| 655 | tag5 57,1080 | ||
| 656 | tag6 66,1207 | ||
| 657 | int pp1(74,1316 | ||
| 658 | pp287,1418 | ||
| 659 | pp3(100,1517 | ||
| 660 | |||
| 661 | c-src/emacs/src/gmalloc.c,3539 | 606 | c-src/emacs/src/gmalloc.c,3539 |
| 662 | #define USE_PTHREAD25,1002 | 607 | #define USE_PTHREAD25,1002 |
| 663 | #undef get_current_dir_name33,1126 | 608 | #undef get_current_dir_name33,1126 |
| @@ -2462,10 +2407,12 @@ f-src/entry.strange_suffix,172 | |||
| 2462 | & intensity1(577,12231 | 2407 | & intensity1(577,12231 |
| 2463 | character*(*) function foo(579,12307 | 2408 | character*(*) function foo(579,12307 |
| 2464 | 2409 | ||
| 2465 | f-src/entry.strange,103 | 2410 | f-src/entry.strange,172 |
| 2466 | ENTRY MSGSEL 193,4382 | 2411 | LOGICAL FUNCTION PRTPKG 3,75 |
| 2467 | & intensity1(375,8135 | 2412 | ENTRY SETPRT 194,3866 |
| 2468 | character*(*) function foo(377,8211 | 2413 | ENTRY MSGSEL 395,8478 |
| 2414 | & intensity1(577,12231 | ||
| 2415 | character*(*) function foo(579,12307 | ||
| 2469 | 2416 | ||
| 2470 | forth-src/test-forth.fth,408 | 2417 | forth-src/test-forth.fth,408 |
| 2471 | : a-forth-word 20,301 | 2418 | : a-forth-word 20,301 |
| @@ -2481,44 +2428,44 @@ constant (a-forth-constant(a-forth-constant38,628 | |||
| 2481 | code assemby-code-word 43,685 | 2428 | code assemby-code-word 43,685 |
| 2482 | : a-forth-word 50,870 | 2429 | : a-forth-word 50,870 |
| 2483 | 2430 | ||
| 2484 | html-src/softwarelibero.html,198 | 2431 | html-src/softwarelibero.html,200 |
| 2485 | Cos'è il software libero?4,38 | 2432 | Cos'è il software libero?4,38 |
| 2486 | Licenze d'uso di un programmalicenze65,2474 | 2433 | Licenze d'uso di un programmalicenze65,2500 |
| 2487 | Sfatiamo alcuni miti138,6064 | 2434 | Sfatiamo alcuni miti138,6118 |
| 2488 | Il movimento open sourceoss191,7968 | 2435 | Il movimento open sourceoss191,8037 |
| 2489 | Impatto pratico del software liberoimpatto231,9986 | 2436 | Impatto pratico del software liberoimpatto231,10066 |
| 2490 | 2437 | ||
| 2491 | html-src/index.shtml,104 | 2438 | html-src/index.shtml,104 |
| 2492 | 8,281 | 2439 | 8,281 |
| 2493 | In evidenza15,446 | 2440 | In evidenza15,447 |
| 2494 | Comunicati e iniziative32,974 | 2441 | Comunicati e iniziative32,976 |
| 2495 | Ultime notizie dall'associazione63,2027 | 2442 | Ultime notizie dall'associazione63,2030 |
| 2496 | 2443 | ||
| 2497 | html-src/algrthms.html,467 | 2444 | html-src/algrthms.html,467 |
| 2498 | Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms7,276 | 2445 | Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms7,271 |
| 2499 | Descriptionalgorithms10,477 | 2446 | Descriptionalgorithms10,472 |
| 2500 | Generating the Datagenalgorithm48,1953 | 2447 | Generating the Datagenalgorithm48,1948 |
| 2501 | Convolutionallyconalgorithm55,2463 | 2448 | Convolutionallyconalgorithm55,2458 |
| 2502 | Nextstatetable262,11331 | 2449 | Nextstatetable262,11326 |
| 2503 | Outputoutputtable350,13571 | 2450 | Outputoutputtable350,13566 |
| 2504 | Mapping the Channel Symbolsmapping433,15786 | 2451 | Mapping the Channel Symbolsmapping433,15781 |
| 2505 | Adding Noise to theaddnoise439,16174 | 2452 | Adding Noise to theaddnoise439,16169 |
| 2506 | Quantizing the Receivedquantizing469,18637 | 2453 | Quantizing the Receivedquantizing469,18632 |
| 2507 | 2454 | ||
| 2508 | html-src/software.html,438 | 2455 | html-src/software.html,439 |
| 2509 | Francesco Potortì Software Page9,280 | 2456 | Francesco Potortì Software Page9,280 |
| 2510 | Software that I wrote for supporting my research activitysimulation36,1400 | 2457 | Software that I wrote for supporting my research activitysimulation36,1398 |
| 2511 | MTGmtg41,1484 | 2458 | MTGmtg41,1482 |
| 2512 | Fracasfracas65,2626 | 2459 | Fracasfracas65,2624 |
| 2513 | GaliLEOgalileo101,4234 | 2460 | GaliLEOgalileo101,4232 |
| 2514 | Leasqrleasqr114,4679 | 2461 | Leasqrleasqr114,4677 |
| 2515 | Free software that I wrote for the GNU project or for my personal or workgnu142,6067 | 2462 | Free software that I wrote for the GNU project or for my personal or workgnu142,6065 |
| 2516 | Etagsetags148,6182 | 2463 | Etagsetags148,6180 |
| 2517 | checkiso161,6731 | 2464 | checkiso161,6729 |
| 2518 | cgrep178,7549 | 2465 | cgrep178,7547 |
| 2519 | debian-bug.eldebian-bug190,7981 | 2466 | debian-bug.eldebian-bug190,7979 |
| 2520 | tcpdump205,8566 | 2467 | tcpdump205,8564 |
| 2521 | Links to interesting softwarelinks216,8893 | 2468 | Links to interesting softwarelinks216,8891 |
| 2522 | 2469 | ||
| 2523 | lua-src/allegro.lua,400 | 2470 | lua-src/allegro.lua,400 |
| 2524 | local function get_layer_by_name 7,175 | 2471 | local function get_layer_by_name 7,175 |
| @@ -3894,7 +3841,7 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno % | |||
| 3894 | \global\def={=3306,107486 | 3841 | \global\def={=3306,107486 |
| 3895 | \def\normalbackslash{\normalbackslash3320,107868 | 3842 | \def\normalbackslash{\normalbackslash3320,107868 |
| 3896 | 3843 | ||
| 3897 | c-src//c.c,76 | 3844 | c-src/c.c,76 |
| 3898 | T f(1,0 | 3845 | T f(1,0 |
| 3899 | }T i;2,14 | 3846 | }T i;2,14 |
| 3900 | void bar(5,69 | 3847 | void bar(5,69 |
diff --git a/test/etags/ETAGS.good_5 b/test/etags/ETAGS.good_5 index c7357d083f5..dfa261b44fb 100644 --- a/test/etags/ETAGS.good_5 +++ b/test/etags/ETAGS.good_5 | |||
| @@ -1,46 +1,4 @@ | |||
| 1 | 1 | ||
| 2 | Makefile,683 | ||
| 3 | ADASRC=1,0 | ||
| 4 | ASRC=2,91 | ||
| 5 | CSRC=3,139 | ||
| 6 | CPSRC=7,410 | ||
| 7 | ELSRC=10,584 | ||
| 8 | ERLSRC=11,654 | ||
| 9 | FORTHSRC=12,699 | ||
| 10 | FSRC=13,749 | ||
| 11 | HTMLSRC=14,821 | ||
| 12 | LUASRC=16,950 | ||
| 13 | MAKESRC=17,993 | ||
| 14 | OBJCSRC=18,1035 | ||
| 15 | OBJCPPSRC=19,1116 | ||
| 16 | PASSRC=20,1179 | ||
| 17 | PERLSRC=21,1221 | ||
| 18 | PHPSRC=22,1291 | ||
| 19 | PSSRC=23,1363 | ||
| 20 | PROLSRC=24,1403 | ||
| 21 | PYTSRC=25,1465 | ||
| 22 | TEXSRC=26,1506 | ||
| 23 | YSRC=27,1585 | ||
| 24 | SRCS=28,1650 | ||
| 25 | NONSRCS=32,1902 | ||
| 26 | ETAGS_PROG=34,1976 | ||
| 27 | CTAGS_PROG=35,2007 | ||
| 28 | REGEX=37,2039 | ||
| 29 | xx=38,2085 | ||
| 30 | RUN=40,2134 | ||
| 31 | OPTIONS=42,2140 | ||
| 32 | ARGS=43,2192 | ||
| 33 | infiles 45,2210 | ||
| 34 | check:check47,2272 | ||
| 35 | ediff%:ediff%55,2575 | ||
| 36 | cdiff:cdiff58,2676 | ||
| 37 | ETAGS:ETAGS61,2773 | ||
| 38 | CTAGS:CTAGS64,2843 | ||
| 39 | srclist:srclist67,2921 | ||
| 40 | regexfile:regexfile71,3012 | ||
| 41 | .PRECIOUS:.PRECIOUS77,3189 | ||
| 42 | FRC:FRC79,3223 | ||
| 43 | |||
| 44 | ada-src/etags-test-for.ada,1969 | 2 | ada-src/etags-test-for.ada,1969 |
| 45 | type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0 | 3 | type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0 |
| 46 | function Body_RequiredBody_Required/f3,78 | 4 | function Body_RequiredBody_Required/f3,78 |
| @@ -781,19 +739,6 @@ char **tab_fill(tab_fill70,1129 | |||
| 781 | int tab_delete_first(91,1638 | 739 | int tab_delete_first(91,1638 |
| 782 | int tab_count_words(103,1820 | 740 | int tab_count_words(103,1820 |
| 783 | 741 | ||
| 784 | c-src/dostorture.c,197 | ||
| 785 | (*tag1 tag118,451 | ||
| 786 | #define notag2 26,552 | ||
| 787 | (*tag2 tag229,629 | ||
| 788 | (*tag3 tag339,771 | ||
| 789 | #define notag4 45,860 | ||
| 790 | (*tag4 tag448,954 | ||
| 791 | tag5 57,1080 | ||
| 792 | tag6 66,1207 | ||
| 793 | int pp1(74,1316 | ||
| 794 | pp287,1418 | ||
| 795 | pp3(100,1517 | ||
| 796 | |||
| 797 | c-src/emacs/src/gmalloc.c,7311 | 742 | c-src/emacs/src/gmalloc.c,7311 |
| 798 | #define USE_PTHREAD25,1002 | 743 | #define USE_PTHREAD25,1002 |
| 799 | #undef get_current_dir_name33,1126 | 744 | #undef get_current_dir_name33,1126 |
| @@ -3346,10 +3291,12 @@ f-src/entry.strange_suffix,172 | |||
| 3346 | & intensity1(577,12231 | 3291 | & intensity1(577,12231 |
| 3347 | character*(*) function foo(579,12307 | 3292 | character*(*) function foo(579,12307 |
| 3348 | 3293 | ||
| 3349 | f-src/entry.strange,103 | 3294 | f-src/entry.strange,172 |
| 3350 | ENTRY MSGSEL 193,4382 | 3295 | LOGICAL FUNCTION PRTPKG 3,75 |
| 3351 | & intensity1(375,8135 | 3296 | ENTRY SETPRT 194,3866 |
| 3352 | character*(*) function foo(377,8211 | 3297 | ENTRY MSGSEL 395,8478 |
| 3298 | & intensity1(577,12231 | ||
| 3299 | character*(*) function foo(579,12307 | ||
| 3353 | 3300 | ||
| 3354 | forth-src/test-forth.fth,408 | 3301 | forth-src/test-forth.fth,408 |
| 3355 | : a-forth-word 20,301 | 3302 | : a-forth-word 20,301 |
| @@ -3365,44 +3312,44 @@ constant (a-forth-constant(a-forth-constant38,628 | |||
| 3365 | code assemby-code-word 43,685 | 3312 | code assemby-code-word 43,685 |
| 3366 | : a-forth-word 50,870 | 3313 | : a-forth-word 50,870 |
| 3367 | 3314 | ||
| 3368 | html-src/softwarelibero.html,198 | 3315 | html-src/softwarelibero.html,200 |
| 3369 | Cos'è il software libero?4,38 | 3316 | Cos'è il software libero?4,38 |
| 3370 | Licenze d'uso di un programmalicenze65,2474 | 3317 | Licenze d'uso di un programmalicenze65,2500 |
| 3371 | Sfatiamo alcuni miti138,6064 | 3318 | Sfatiamo alcuni miti138,6118 |
| 3372 | Il movimento open sourceoss191,7968 | 3319 | Il movimento open sourceoss191,8037 |
| 3373 | Impatto pratico del software liberoimpatto231,9986 | 3320 | Impatto pratico del software liberoimpatto231,10066 |
| 3374 | 3321 | ||
| 3375 | html-src/index.shtml,104 | 3322 | html-src/index.shtml,104 |
| 3376 | 8,281 | 3323 | 8,281 |
| 3377 | In evidenza15,446 | 3324 | In evidenza15,447 |
| 3378 | Comunicati e iniziative32,974 | 3325 | Comunicati e iniziative32,976 |
| 3379 | Ultime notizie dall'associazione63,2027 | 3326 | Ultime notizie dall'associazione63,2030 |
| 3380 | 3327 | ||
| 3381 | html-src/algrthms.html,467 | 3328 | html-src/algrthms.html,467 |
| 3382 | Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms7,276 | 3329 | Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms7,271 |
| 3383 | Descriptionalgorithms10,477 | 3330 | Descriptionalgorithms10,472 |
| 3384 | Generating the Datagenalgorithm48,1953 | 3331 | Generating the Datagenalgorithm48,1948 |
| 3385 | Convolutionallyconalgorithm55,2463 | 3332 | Convolutionallyconalgorithm55,2458 |
| 3386 | Nextstatetable262,11331 | 3333 | Nextstatetable262,11326 |
| 3387 | Outputoutputtable350,13571 | 3334 | Outputoutputtable350,13566 |
| 3388 | Mapping the Channel Symbolsmapping433,15786 | 3335 | Mapping the Channel Symbolsmapping433,15781 |
| 3389 | Adding Noise to theaddnoise439,16174 | 3336 | Adding Noise to theaddnoise439,16169 |
| 3390 | Quantizing the Receivedquantizing469,18637 | 3337 | Quantizing the Receivedquantizing469,18632 |
| 3391 | 3338 | ||
| 3392 | html-src/software.html,438 | 3339 | html-src/software.html,439 |
| 3393 | Francesco Potortì Software Page9,280 | 3340 | Francesco Potortì Software Page9,280 |
| 3394 | Software that I wrote for supporting my research activitysimulation36,1400 | 3341 | Software that I wrote for supporting my research activitysimulation36,1398 |
| 3395 | MTGmtg41,1484 | 3342 | MTGmtg41,1482 |
| 3396 | Fracasfracas65,2626 | 3343 | Fracasfracas65,2624 |
| 3397 | GaliLEOgalileo101,4234 | 3344 | GaliLEOgalileo101,4232 |
| 3398 | Leasqrleasqr114,4679 | 3345 | Leasqrleasqr114,4677 |
| 3399 | Free software that I wrote for the GNU project or for my personal or workgnu142,6067 | 3346 | Free software that I wrote for the GNU project or for my personal or workgnu142,6065 |
| 3400 | Etagsetags148,6182 | 3347 | Etagsetags148,6180 |
| 3401 | checkiso161,6731 | 3348 | checkiso161,6729 |
| 3402 | cgrep178,7549 | 3349 | cgrep178,7547 |
| 3403 | debian-bug.eldebian-bug190,7981 | 3350 | debian-bug.eldebian-bug190,7979 |
| 3404 | tcpdump205,8566 | 3351 | tcpdump205,8564 |
| 3405 | Links to interesting softwarelinks216,8893 | 3352 | Links to interesting softwarelinks216,8891 |
| 3406 | 3353 | ||
| 3407 | lua-src/allegro.lua,400 | 3354 | lua-src/allegro.lua,400 |
| 3408 | local function get_layer_by_name 7,175 | 3355 | local function get_layer_by_name 7,175 |
| @@ -4807,7 +4754,7 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno % | |||
| 4807 | \global\def={=3306,107486 | 4754 | \global\def={=3306,107486 |
| 4808 | \def\normalbackslash{\normalbackslash3320,107868 | 4755 | \def\normalbackslash{\normalbackslash3320,107868 |
| 4809 | 4756 | ||
| 4810 | c-src//c.c,76 | 4757 | c-src/c.c,76 |
| 4811 | T f(1,0 | 4758 | T f(1,0 |
| 4812 | }T i;2,14 | 4759 | }T i;2,14 |
| 4813 | void bar(5,69 | 4760 | void bar(5,69 |
diff --git a/test/etags/Makefile b/test/etags/Makefile index a0914e45204..99ad41ebaab 100644 --- a/test/etags/Makefile +++ b/test/etags/Makefile | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | ADASRC=$(addprefix ./ada-src/,etags-test-for.ada 2ataspri.adb 2ataspri.ads waroquiers.ada) | 1 | ADASRC=$(addprefix ./ada-src/,etags-test-for.ada 2ataspri.adb 2ataspri.ads waroquiers.ada) |
| 2 | ASRC=$(addprefix ./a-src/,empty.zz empty.zz.gz) | 2 | ASRC=$(addprefix ./a-src/,empty.zz empty.zz.gz) |
| 3 | CSRC=$(addprefix ./c-src/,abbrev.c .//c.c torture.c getopt.h etags.c\ | 3 | CSRC=$(addprefix ./c-src/,abbrev.c .//c.c torture.c getopt.h etags.c\ |
| 4 | exit.c exit.strange_suffix sysdep.h tab.c dostorture.c\ | 4 | exit.c exit.strange_suffix sysdep.h tab.c\ |
| 5 | emacs/src/gmalloc.c emacs/src/regex.h emacs/src/keyboard.c emacs/src/lisp.h\ | 5 | emacs/src/gmalloc.c emacs/src/regex.h emacs/src/keyboard.c emacs/src/lisp.h\ |
| 6 | machsyscalls.c machsyscalls.h fail.c a/b/b.c) ../etags/c-src/h.h | 6 | machsyscalls.c machsyscalls.h fail.c a/b/b.c) ../etags/c-src/h.h |
| 7 | CPSRC=$(addprefix ./cp-src/,c.C burton.cpp burton.cpp\ | 7 | CPSRC=$(addprefix ./cp-src/,c.C burton.cpp burton.cpp\ |
| @@ -25,7 +25,7 @@ PROLSRC=$(addprefix ./prol-src/,ordsets.prolog natded.prolog) | |||
| 25 | PYTSRC=$(addprefix ./pyt-src/,server.py) | 25 | PYTSRC=$(addprefix ./pyt-src/,server.py) |
| 26 | TEXSRC=$(addprefix ./tex-src/,testenv.tex gzip.texi texinfo.tex nonewline.tex) | 26 | TEXSRC=$(addprefix ./tex-src/,testenv.tex gzip.texi texinfo.tex nonewline.tex) |
| 27 | YSRC=$(addprefix ./y-src/,parse.y parse.c atest.y cccp.c cccp.y) | 27 | YSRC=$(addprefix ./y-src/,parse.y parse.c atest.y cccp.c cccp.y) |
| 28 | SRCS=Makefile ${ADASRC} ${ASRC} ${CSRC} ${CPSRC} ${ELSRC} ${ERLSRC} ${FSRC}\ | 28 | SRCS=${ADASRC} ${ASRC} ${CSRC} ${CPSRC} ${ELSRC} ${ERLSRC} ${FSRC}\ |
| 29 | ${FORTHSRC} ${HTMLSRC} ${JAVASRC} ${LUASRC} ${MAKESRC} ${OBJCSRC}\ | 29 | ${FORTHSRC} ${HTMLSRC} ${JAVASRC} ${LUASRC} ${MAKESRC} ${OBJCSRC}\ |
| 30 | ${OBJCPPSRC} ${PASSRC} ${PHPSRC} ${PERLSRC} ${PSSRC} ${PROLSRC} ${PYTSRC}\ | 30 | ${OBJCPPSRC} ${PASSRC} ${PHPSRC} ${PERLSRC} ${PSSRC} ${PROLSRC} ${PYTSRC}\ |
| 31 | ${TEXSRC} ${YSRC} | 31 | ${TEXSRC} ${YSRC} |
| @@ -44,6 +44,9 @@ ARGS=- < srclist | |||
| 44 | 44 | ||
| 45 | infiles = $(filter-out ${NONSRCS},${SRCS}) srclist regexfile | 45 | infiles = $(filter-out ${NONSRCS},${SRCS}) srclist regexfile |
| 46 | 46 | ||
| 47 | .PHONY: check cdiff ETAGS CTAGS | ||
| 48 | # Can't make ediff_1 through ediff_5 .PHONY, as they're implicit. | ||
| 49 | |||
| 47 | check: | 50 | check: |
| 48 | @$(MAKE) OPTIONS='--no-members' ediff_1 | 51 | @$(MAKE) OPTIONS='--no-members' ediff_1 |
| 49 | @$(MAKE) OPTIONS='--declarations --no-members' ediff_2 | 52 | @$(MAKE) OPTIONS='--declarations --no-members' ediff_2 |
| @@ -58,10 +61,10 @@ ediff%: ETAGS.good% ETAGS ${infiles} | |||
| 58 | cdiff: CTAGS.good CTAGS ${infiles} | 61 | cdiff: CTAGS.good CTAGS ${infiles} |
| 59 | diff -u --suppress-common-lines --width=80 CTAGS.good CTAGS | 62 | diff -u --suppress-common-lines --width=80 CTAGS.good CTAGS |
| 60 | 63 | ||
| 61 | ETAGS: FRC ${infiles} | 64 | ETAGS: ${infiles} |
| 62 | ${RUN} ${ETAGS_PROG} ${OPTIONS} -o $@ ${ARGS} | 65 | ${RUN} ${ETAGS_PROG} ${OPTIONS} -o $@ ${ARGS} |
| 63 | 66 | ||
| 64 | CTAGS: FRC ${infiles} | 67 | CTAGS: ${infiles} |
| 65 | ${RUN} ${CTAGS_PROG} -o $@ --regex=@regexfile ${ARGS} | 68 | ${RUN} ${CTAGS_PROG} -o $@ --regex=@regexfile ${ARGS} |
| 66 | 69 | ||
| 67 | srclist: Makefile | 70 | srclist: Makefile |
| @@ -70,10 +73,6 @@ srclist: Makefile | |||
| 70 | 73 | ||
| 71 | regexfile: Makefile | 74 | regexfile: Makefile |
| 72 | @echo ' -- This is for GNU Emacs source files' > regexfile | 75 | @echo ' -- This is for GNU Emacs source files' > regexfile |
| 73 | @echo '${REGEX}' >> regexfile | 76 | @printf '%s\n' '${REGEX}' >> regexfile |
| 74 | @echo '{c}${REGEX}\\1/m' >> regexfile | 77 | @printf '%s\n' '{c}${REGEX}\\1/m' >> regexfile |
| 75 | @echo "regexfile remade" | 78 | @echo "regexfile remade" |
| 76 | |||
| 77 | .PRECIOUS: ETAGS.good CTAGS.good | ||
| 78 | |||
| 79 | FRC:; | ||
diff --git a/test/etags/c-src/dostorture.c b/test/etags/c-src/dostorture.c deleted file mode 100644 index 5190734e0fe..00000000000 --- a/test/etags/c-src/dostorture.c +++ /dev/null | |||
| @@ -1,107 +0,0 @@ | |||
| 1 | /* Date: Thu, 05 Aug 1993 20:28:03 +0200 | ||
| 2 | From: "Tom R.Hageman" <tom@basil.icce.rug.nl> | ||
| 3 | Subject: more etags torture;-) [etags 7.3 patch#3] | ||
| 4 | To: pot@CNUCE.CNR.IT | ||
| 5 | |||
| 6 | Hi, | ||
| 7 | |||
| 8 | This test file illustrates some more problems with etags (7.3): | ||
| 9 | |||
| 10 | |||
| 11 | 1. parentheses are confusing, | ||
| 12 | 2. preprocessor directives can disrupt other state machines. */ | ||
| 13 | |||
| 14 | /* A small torture test for etags. */ | ||
| 15 | |||
| 16 | /* The classic parenthesis nightmare, based on signal(). */ | ||
| 17 | void | ||
| 18 | (*tag1 (sig, handler)) () | ||
| 19 | int sig; | ||
| 20 | void (*handler) (); | ||
| 21 | { | ||
| 22 | (*handler)(sig); | ||
| 23 | return handler; | ||
| 24 | } | ||
| 25 | |||
| 26 | #define notag2 void | ||
| 27 | /* The classic, with user-defined return type. */ | ||
| 28 | notag2 | ||
| 29 | (*tag2 (sig, handler)) () | ||
| 30 | int sig; | ||
| 31 | void (*handler) (); | ||
| 32 | { | ||
| 33 | (*handler)(sig); | ||
| 34 | return handler; | ||
| 35 | } | ||
| 36 | |||
| 37 | /* The classic, in ANSI C style. */ | ||
| 38 | void | ||
| 39 | (*tag3 (int sig, void (*handler) (int))) (int) | ||
| 40 | { | ||
| 41 | (*handler)(sig); | ||
| 42 | return handler; | ||
| 43 | } | ||
| 44 | |||
| 45 | #define notag4 void | ||
| 46 | /* The classic, with user-defined return type, in ANSI C style. */ | ||
| 47 | notag4 | ||
| 48 | (*tag4 (int sig, void (*handler) (int))) (int) | ||
| 49 | { | ||
| 50 | (*handler)(sig); | ||
| 51 | return handler; | ||
| 52 | } | ||
| 53 | |||
| 54 | |||
| 55 | /* A less tortuous example. */ | ||
| 56 | void | ||
| 57 | tag5 (handler, arg) | ||
| 58 | void (*handler)(); | ||
| 59 | void *arg; | ||
| 60 | { | ||
| 61 | (*handler)(arg); | ||
| 62 | } | ||
| 63 | |||
| 64 | /* A less tortuous example, in ANSI C style. */ | ||
| 65 | void | ||
| 66 | tag6 (void (*handler) (void *), void *arg) | ||
| 67 | { | ||
| 68 | (*handler)(arg); | ||
| 69 | } | ||
| 70 | |||
| 71 | |||
| 72 | /* Interfering preprocessing torture */ | ||
| 73 | |||
| 74 | int pp1( | ||
| 75 | #if (__STDC__) | ||
| 76 | int | ||
| 77 | #endif | ||
| 78 | bar) | ||
| 79 | #if (!__STDC__) | ||
| 80 | int bar; | ||
| 81 | #endif | ||
| 82 | { | ||
| 83 | return bar; | ||
| 84 | } | ||
| 85 | |||
| 86 | int | ||
| 87 | pp2 | ||
| 88 | #if __STDC__ | ||
| 89 | (int bar) | ||
| 90 | #else | ||
| 91 | (bar) | ||
| 92 | int bar; | ||
| 93 | #endif | ||
| 94 | { | ||
| 95 | return bar; | ||
| 96 | } | ||
| 97 | |||
| 98 | int | ||
| 99 | #if __STDC__ | ||
| 100 | pp3(int bar) | ||
| 101 | #else | ||
| 102 | pp3(bar) | ||
| 103 | int bar; | ||
| 104 | #endif | ||
| 105 | { | ||
| 106 | return bar; | ||
| 107 | } | ||
diff --git a/test/etags/cp-src/c.C b/test/etags/cp-src/c.C index 2c5f7e01fac..dae933a9a05 100644 --- a/test/etags/cp-src/c.C +++ b/test/etags/cp-src/c.C | |||
| @@ -51,7 +51,7 @@ int A<int>::f(A<int>* x) {} | |||
| 51 | A<float,B<int> > A<B<float>,int>::f(A<int>* x) {} | 51 | A<float,B<int> > A<B<float>,int>::f(A<int>* x) {} |
| 52 | template <class C, int n> class AT { C t[n]; }; | 52 | template <class C, int n> class AT { C t[n]; }; |
| 53 | class AU { T x; }; | 53 | class AU { T x; }; |
| 54 | class B<int> { void f() {} }; | 54 | class B<int> { void f() {} }; |
| 55 | const A::B::T& abt = abc; | 55 | const A::B::T& abt = abc; |
| 56 | class A { class B { int f(); }; }; | 56 | class A { class B { int f(); }; }; |
| 57 | class A { | 57 | class A { |
diff --git a/test/etags/html-src/algrthms.html b/test/etags/html-src/algrthms.html index 322dafa5054..f051505263c 100644 --- a/test/etags/html-src/algrthms.html +++ b/test/etags/html-src/algrthms.html | |||
| @@ -1,519 +1,519 @@ | |||
| 1 | <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> | 1 | <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> |
| 2 | <html> | 2 | <html> |
| 3 | <head> | 3 | <head> |
| 4 | <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> | 4 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
| 5 | <meta name="Author" content="Chip Fleming"> | 5 | <meta name="Author" content="Chip Fleming"> |
| 6 | <meta name="GENERATOR" content="Mozilla/4.7 [en] (Win95; U) [Netscape]"> | 6 | <meta name="GENERATOR" content="Mozilla/4.7 [en] (Win95; U) [Netscape]"> |
| 7 | <title>Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms</title> | 7 | <title>Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms</title> |
| 8 | </head> | 8 | </head> |
| 9 | <body> | 9 | <body> |
| 10 | <a NAME="algorithms"></a><b><font face="Arial"><font size=+1>Description | 10 | <a NAME="algorithms"></a><b><font face="Arial"><font size=+1>Description |
| 11 | of the Algorithms (Part 1)</font></font></b> | 11 | of the Algorithms (Part 1)</font></font></b> |
| 12 | <p> The steps involved in simulating a communication channel using | 12 | <p> The steps involved in simulating a communication channel using |
| 13 | convolutional encoding and Viterbi decoding are as follows: | 13 | convolutional encoding and Viterbi decoding are as follows: |
| 14 | <ul> | 14 | <ul> |
| 15 | <li> | 15 | <li> |
| 16 | <a href="#genalgorithm">Generate the data</a> to be transmitted through | 16 | <a href="#genalgorithm">Generate the data</a> to be transmitted through |
| 17 | the channel-result is binary data bits</li> | 17 | the channel-result is binary data bits</li> |
| 18 | 18 | ||
| 19 | <li> | 19 | <li> |
| 20 | <a href="#conalgorithm">Convolutionally encode</a> the data-result is channel | 20 | <a href="#conalgorithm">Convolutionally encode</a> the data-result is channel |
| 21 | symbols</li> | 21 | symbols</li> |
| 22 | 22 | ||
| 23 | <li> | 23 | <li> |
| 24 | <a href="#mapping">Map the one/zero channel symbols</a> onto an antipodal | 24 | <a href="#mapping">Map the one/zero channel symbols</a> onto an antipodal |
| 25 | baseband signal, producing transmitted channel symbols</li> | 25 | baseband signal, producing transmitted channel symbols</li> |
| 26 | 26 | ||
| 27 | <li> | 27 | <li> |
| 28 | <a href="#addnoise">Add noise</a> to the transmitted channel symbols-result | 28 | <a href="#addnoise">Add noise</a> to the transmitted channel symbols-result |
| 29 | is received channel symbols</li> | 29 | is received channel symbols</li> |
| 30 | 30 | ||
| 31 | <li> | 31 | <li> |
| 32 | <a href="#quantizing">Quantize</a> the received channel levels-one bit | 32 | <a href="#quantizing">Quantize</a> the received channel levels-one bit |
| 33 | quantization is called hard-decision, and two to n bit quantization is | 33 | quantization is called hard-decision, and two to n bit quantization is |
| 34 | called soft-decision (n is usually three or four)</li> | 34 | called soft-decision (n is usually three or four)</li> |
| 35 | 35 | ||
| 36 | <li> | 36 | <li> |
| 37 | <a href="algrthms2.html">Perform Viterbi decoding</a> on the quantized | 37 | <a href="algrthms2.html">Perform Viterbi decoding</a> on the quantized |
| 38 | received channel symbols-result is again binary data bits</li> | 38 | received channel symbols-result is again binary data bits</li> |
| 39 | 39 | ||
| 40 | <li> | 40 | <li> |
| 41 | Compare the decoded data bits to the transmitted data bits and count the | 41 | Compare the decoded data bits to the transmitted data bits and count the |
| 42 | number of errors.</li> | 42 | number of errors.</li> |
| 43 | </ul> | 43 | </ul> |
| 44 | <i>Many of you will notice that I left out the steps of modulating the | 44 | <i>Many of you will notice that I left out the steps of modulating the |
| 45 | channel symbols onto a transmitted carrier, and then demodulating the received | 45 | channel symbols onto a transmitted carrier, and then demodulating the received |
| 46 | carrier to recover the channel symbols. You're right, but we can accurately | 46 | carrier to recover the channel symbols. You're right, but we can accurately |
| 47 | model the effects of AWGN even though we bypass those steps.</i> | 47 | model the effects of AWGN even though we bypass those steps.</i> |
| 48 | <p><a NAME="genalgorithm"></a><b><i><font face="Arial">Generating the Data</font></i></b> | 48 | <p><a NAME="genalgorithm"></a><b><i><font face="Arial">Generating the Data</font></i></b> |
| 49 | <p>Generating the data to be transmitted through the channel can be accomplished | 49 | <p>Generating the data to be transmitted through the channel can be accomplished |
| 50 | quite simply by using a random number generator. One that produces a uniform | 50 | quite simply by using a random number generator. One that produces a uniform |
| 51 | distribution of numbers on the interval 0 to a maximum value is provided | 51 | distribution of numbers on the interval 0 to a maximum value is provided |
| 52 | in C: <tt>rand ()</tt>. Using this function, we can say that any value | 52 | in C: <tt>rand ()</tt>. Using this function, we can say that any value |
| 53 | less than half of the maximum value is a zero; any value greater than or | 53 | less than half of the maximum value is a zero; any value greater than or |
| 54 | equal to half of the maximum value is a one. | 54 | equal to half of the maximum value is a one. |
| 55 | <p><a NAME="conalgorithm"></a><b><i><font face="Arial">Convolutionally | 55 | <p><a NAME="conalgorithm"></a><b><i><font face="Arial">Convolutionally |
| 56 | Encoding the Data</font></i></b> | 56 | Encoding the Data</font></i></b> |
| 57 | <p>Convolutionally encoding the data is accomplished using a shift register | 57 | <p>Convolutionally encoding the data is accomplished using a shift register |
| 58 | and associated combinatorial logic that performs modulo-two addition. (A | 58 | and associated combinatorial logic that performs modulo-two addition. (A |
| 59 | shift register is merely a chain of flip-flops wherein the output of the | 59 | shift register is merely a chain of flip-flops wherein the output of the |
| 60 | nth flip-flop is tied to the input of the (n+1)th flip-flop. Every time | 60 | nth flip-flop is tied to the input of the (n+1)th flip-flop. Every time |
| 61 | the active edge of the clock occurs, the input to the flip-flop is clocked | 61 | the active edge of the clock occurs, the input to the flip-flop is clocked |
| 62 | through to the output, and thus the data are shifted over one stage.) The | 62 | through to the output, and thus the data are shifted over one stage.) The |
| 63 | combinatorial logic is often in the form of cascaded exclusive-or gates. | 63 | combinatorial logic is often in the form of cascaded exclusive-or gates. |
| 64 | As a reminder, exclusive-or gates are two-input, one-output gates often | 64 | As a reminder, exclusive-or gates are two-input, one-output gates often |
| 65 | represented by the logic symbol shown below, | 65 | represented by the logic symbol shown below, |
| 66 | <center> | 66 | <center> |
| 67 | <p><img SRC="figs/xor_gate.gif" ALT="exclusive-or gate symbol" height=64 width=93></center> | 67 | <p><img SRC="figs/xor_gate.gif" ALT="exclusive-or gate symbol" height=64 width=93></center> |
| 68 | 68 | ||
| 69 | <p>that implement the following truth-table: | 69 | <p>that implement the following truth-table: |
| 70 | <br> | 70 | <br> |
| 71 | <br> | 71 | <br> |
| 72 | <center><table BORDER CELLPADDING=7 WIDTH="218" > | 72 | <center><table BORDER CELLPADDING=7 WIDTH="218" > |
| 73 | <tr> | 73 | <tr> |
| 74 | <td VALIGN=TOP WIDTH="28%"> | 74 | <td VALIGN=TOP WIDTH="28%"> |
| 75 | <center><b><tt>Input A</tt></b></center> | 75 | <center><b><tt>Input A</tt></b></center> |
| 76 | </td> | 76 | </td> |
| 77 | 77 | ||
| 78 | <td VALIGN=TOP WIDTH="27%"> | 78 | <td VALIGN=TOP WIDTH="27%"> |
| 79 | <center><b><tt>Input B</tt></b></center> | 79 | <center><b><tt>Input B</tt></b></center> |
| 80 | </td> | 80 | </td> |
| 81 | 81 | ||
| 82 | <td VALIGN=TOP WIDTH="45%"> | 82 | <td VALIGN=TOP WIDTH="45%"> |
| 83 | <center><b><tt>Output</tt></b> | 83 | <center><b><tt>Output</tt></b> |
| 84 | <p><b><tt>(A xor B)</tt></b></center> | 84 | <p><b><tt>(A xor B)</tt></b></center> |
| 85 | </td> | 85 | </td> |
| 86 | </tr> | 86 | </tr> |
| 87 | 87 | ||
| 88 | <tr> | 88 | <tr> |
| 89 | <td VALIGN=TOP WIDTH="28%"> | 89 | <td VALIGN=TOP WIDTH="28%"> |
| 90 | <center><tt>0</tt></center> | 90 | <center><tt>0</tt></center> |
| 91 | </td> | 91 | </td> |
| 92 | 92 | ||
| 93 | <td VALIGN=TOP WIDTH="27%"> | 93 | <td VALIGN=TOP WIDTH="27%"> |
| 94 | <center><tt>0</tt></center> | 94 | <center><tt>0</tt></center> |
| 95 | </td> | 95 | </td> |
| 96 | 96 | ||
| 97 | <td VALIGN=TOP WIDTH="45%"> | 97 | <td VALIGN=TOP WIDTH="45%"> |
| 98 | <center><tt>0</tt></center> | 98 | <center><tt>0</tt></center> |
| 99 | </td> | 99 | </td> |
| 100 | </tr> | 100 | </tr> |
| 101 | 101 | ||
| 102 | <tr> | 102 | <tr> |
| 103 | <td VALIGN=TOP WIDTH="28%"> | 103 | <td VALIGN=TOP WIDTH="28%"> |
| 104 | <center><tt>0</tt></center> | 104 | <center><tt>0</tt></center> |
| 105 | </td> | 105 | </td> |
| 106 | 106 | ||
| 107 | <td VALIGN=TOP WIDTH="27%"> | 107 | <td VALIGN=TOP WIDTH="27%"> |
| 108 | <center><tt>1</tt></center> | 108 | <center><tt>1</tt></center> |
| 109 | </td> | 109 | </td> |
| 110 | 110 | ||
| 111 | <td VALIGN=TOP WIDTH="45%"> | 111 | <td VALIGN=TOP WIDTH="45%"> |
| 112 | <center><tt>1</tt></center> | 112 | <center><tt>1</tt></center> |
| 113 | </td> | 113 | </td> |
| 114 | </tr> | 114 | </tr> |
| 115 | 115 | ||
| 116 | <tr> | 116 | <tr> |
| 117 | <td VALIGN=TOP WIDTH="28%"> | 117 | <td VALIGN=TOP WIDTH="28%"> |
| 118 | <center><tt>1</tt></center> | 118 | <center><tt>1</tt></center> |
| 119 | </td> | 119 | </td> |
| 120 | 120 | ||
| 121 | <td VALIGN=TOP WIDTH="27%"> | 121 | <td VALIGN=TOP WIDTH="27%"> |
| 122 | <center><tt>0</tt></center> | 122 | <center><tt>0</tt></center> |
| 123 | </td> | 123 | </td> |
| 124 | 124 | ||
| 125 | <td VALIGN=TOP WIDTH="45%"> | 125 | <td VALIGN=TOP WIDTH="45%"> |
| 126 | <center><tt>1</tt></center> | 126 | <center><tt>1</tt></center> |
| 127 | </td> | 127 | </td> |
| 128 | </tr> | 128 | </tr> |
| 129 | 129 | ||
| 130 | <tr> | 130 | <tr> |
| 131 | <td VALIGN=TOP WIDTH="28%"> | 131 | <td VALIGN=TOP WIDTH="28%"> |
| 132 | <center><tt>1</tt></center> | 132 | <center><tt>1</tt></center> |
| 133 | </td> | 133 | </td> |
| 134 | 134 | ||
| 135 | <td VALIGN=TOP WIDTH="27%"> | 135 | <td VALIGN=TOP WIDTH="27%"> |
| 136 | <center><tt>1</tt></center> | 136 | <center><tt>1</tt></center> |
| 137 | </td> | 137 | </td> |
| 138 | 138 | ||
| 139 | <td VALIGN=TOP WIDTH="45%"> | 139 | <td VALIGN=TOP WIDTH="45%"> |
| 140 | <center><tt>0</tt></center> | 140 | <center><tt>0</tt></center> |
| 141 | </td> | 141 | </td> |
| 142 | </tr> | 142 | </tr> |
| 143 | </table></center> | 143 | </table></center> |
| 144 | 144 | ||
| 145 | <p>The exclusive-or gate performs modulo-two addition of its inputs. When | 145 | <p>The exclusive-or gate performs modulo-two addition of its inputs. When |
| 146 | you cascade q two-input exclusive-or gates, with the output of the first | 146 | you cascade q two-input exclusive-or gates, with the output of the first |
| 147 | one feeding one of the inputs of the second one, the output of the second | 147 | one feeding one of the inputs of the second one, the output of the second |
| 148 | one feeding one of the inputs of the third one, etc., the output of the | 148 | one feeding one of the inputs of the third one, etc., the output of the |
| 149 | last one in the chain is the modulo-two sum of the q + 1 inputs. | 149 | last one in the chain is the modulo-two sum of the q + 1 inputs. |
| 150 | <p>Another way to illustrate the modulo-two adder, and the way that is | 150 | <p>Another way to illustrate the modulo-two adder, and the way that is |
| 151 | most commonly used in textbooks, is as a circle with a + symbol inside, | 151 | most commonly used in textbooks, is as a circle with a + symbol inside, |
| 152 | thus: | 152 | thus: |
| 153 | <center> | 153 | <center> |
| 154 | <p><img SRC="figs/ringsum.gif" ALT="modulo-two adder symbol" height=48 width=48></center> | 154 | <p><img SRC="figs/ringsum.gif" ALT="modulo-two adder symbol" height=48 width=48></center> |
| 155 | 155 | ||
| 156 | <p>Now that we have the two basic components of the convolutional encoder | 156 | <p>Now that we have the two basic components of the convolutional encoder |
| 157 | (flip-flops comprising the shift register and exclusive-or gates comprising | 157 | (flip-flops comprising the shift register and exclusive-or gates comprising |
| 158 | the associated modulo-two adders) defined, let's look at a picture of a | 158 | the associated modulo-two adders) defined, let's look at a picture of a |
| 159 | convolutional encoder for a rate 1/2, K = 3, m = 2 code: | 159 | convolutional encoder for a rate 1/2, K = 3, m = 2 code: |
| 160 | <br> | 160 | <br> |
| 161 | <br> | 161 | <br> |
| 162 | <br> | 162 | <br> |
| 163 | <center> | 163 | <center> |
| 164 | <p><img SRC="figs/ce_7_5_a.gif" ALT="rate 1/2 K = 3 (7, 5) convolutional encoder" height=232 width=600></center> | 164 | <p><img SRC="figs/ce_7_5_a.gif" ALT="rate 1/2 K = 3 (7, 5) convolutional encoder" height=232 width=600></center> |
| 165 | 165 | ||
| 166 | <p>In this encoder, data bits are provided at a rate of k bits per second. | 166 | <p>In this encoder, data bits are provided at a rate of k bits per second. |
| 167 | Channel symbols are output at a rate of n = 2k symbols per second. The | 167 | Channel symbols are output at a rate of n = 2k symbols per second. The |
| 168 | input bit is stable during the encoder cycle. The encoder cycle starts | 168 | input bit is stable during the encoder cycle. The encoder cycle starts |
| 169 | when an input clock edge occurs. When the input clock edge occurs, the | 169 | when an input clock edge occurs. When the input clock edge occurs, the |
| 170 | output of the left-hand flip-flop is clocked into the right-hand flip-flop, | 170 | output of the left-hand flip-flop is clocked into the right-hand flip-flop, |
| 171 | the previous input bit is clocked into the left-hand flip-flop, and a new | 171 | the previous input bit is clocked into the left-hand flip-flop, and a new |
| 172 | input bit becomes available. Then the outputs of the upper and lower modulo-two | 172 | input bit becomes available. Then the outputs of the upper and lower modulo-two |
| 173 | adders become stable. The output selector (SEL A/B block) cycles through | 173 | adders become stable. The output selector (SEL A/B block) cycles through |
| 174 | two states-in the first state, it selects and outputs the output of the | 174 | two states-in the first state, it selects and outputs the output of the |
| 175 | upper modulo-two adder; in the second state, it selects and outputs the | 175 | upper modulo-two adder; in the second state, it selects and outputs the |
| 176 | output of the lower modulo-two adder. | 176 | output of the lower modulo-two adder. |
| 177 | <p>The encoder shown above encodes the K = 3, (7, 5) convolutional code. | 177 | <p>The encoder shown above encodes the K = 3, (7, 5) convolutional code. |
| 178 | The octal numbers 7 and 5 represent the code generator polynomials, which | 178 | The octal numbers 7 and 5 represent the code generator polynomials, which |
| 179 | when read in binary (111<sub>2</sub> and 101<sub>2</sub>) correspond to | 179 | when read in binary (111<sub>2</sub> and 101<sub>2</sub>) correspond to |
| 180 | the shift register connections to the upper and lower modulo-two adders, | 180 | the shift register connections to the upper and lower modulo-two adders, |
| 181 | respectively. This code has been determined to be the "best" code for rate | 181 | respectively. This code has been determined to be the "best" code for rate |
| 182 | 1/2, K = 3. It is the code I will use for the remaining discussion and | 182 | 1/2, K = 3. It is the code I will use for the remaining discussion and |
| 183 | examples, for reasons that will become readily apparent when we get into | 183 | examples, for reasons that will become readily apparent when we get into |
| 184 | the Viterbi decoder algorithm. | 184 | the Viterbi decoder algorithm. |
| 185 | <p>Let's look at an example input data stream, and the corresponding output | 185 | <p>Let's look at an example input data stream, and the corresponding output |
| 186 | data stream: | 186 | data stream: |
| 187 | <p>Let the input sequence be 010111001010001<sub>2</sub>. | 187 | <p>Let the input sequence be 010111001010001<sub>2</sub>. |
| 188 | <p>Assume that the outputs of both of the flip-flops in the shift register | 188 | <p>Assume that the outputs of both of the flip-flops in the shift register |
| 189 | are initially cleared, i.e. their outputs are zeroes. The first clock cycle | 189 | are initially cleared, i.e. their outputs are zeroes. The first clock cycle |
| 190 | makes the first input bit, a zero, available to the encoder. The flip-flop | 190 | makes the first input bit, a zero, available to the encoder. The flip-flop |
| 191 | outputs are both zeroes. The inputs to the modulo-two adders are all zeroes, | 191 | outputs are both zeroes. The inputs to the modulo-two adders are all zeroes, |
| 192 | so the output of the encoder is 00<sub>2</sub>. | 192 | so the output of the encoder is 00<sub>2</sub>. |
| 193 | <p>The second clock cycle makes the second input bit available to the encoder. | 193 | <p>The second clock cycle makes the second input bit available to the encoder. |
| 194 | The left-hand flip-flop clocks in the previous bit, which was a zero, and | 194 | The left-hand flip-flop clocks in the previous bit, which was a zero, and |
| 195 | the right-hand flip-flop clocks in the zero output by the left-hand flip-flop. | 195 | the right-hand flip-flop clocks in the zero output by the left-hand flip-flop. |
| 196 | The inputs to the top modulo-two adder are 100<sub>2</sub>, so the output | 196 | The inputs to the top modulo-two adder are 100<sub>2</sub>, so the output |
| 197 | is a one. The inputs to the bottom modulo-two adder are 10<sub>2</sub>, | 197 | is a one. The inputs to the bottom modulo-two adder are 10<sub>2</sub>, |
| 198 | so the output is also a one. So the encoder outputs 11<sub>2</sub> for | 198 | so the output is also a one. So the encoder outputs 11<sub>2</sub> for |
| 199 | the channel symbols. | 199 | the channel symbols. |
| 200 | <p>The third clock cycle makes the third input bit, a zero, available to | 200 | <p>The third clock cycle makes the third input bit, a zero, available to |
| 201 | the encoder. The left-hand flip-flop clocks in the previous bit, which | 201 | the encoder. The left-hand flip-flop clocks in the previous bit, which |
| 202 | was a one, and the right-hand flip-flop clocks in the zero from two bit-times | 202 | was a one, and the right-hand flip-flop clocks in the zero from two bit-times |
| 203 | ago. The inputs to the top modulo-two adder are 010<sub>2</sub>, so the | 203 | ago. The inputs to the top modulo-two adder are 010<sub>2</sub>, so the |
| 204 | output is a one. The inputs to the bottom modulo-two adder are 00<sub>2</sub>, | 204 | output is a one. The inputs to the bottom modulo-two adder are 00<sub>2</sub>, |
| 205 | so the output is zero. So the encoder outputs 10<sub>2</sub> for the channel | 205 | so the output is zero. So the encoder outputs 10<sub>2</sub> for the channel |
| 206 | symbols. | 206 | symbols. |
| 207 | <p>And so on. The timing diagram shown below illustrates the process: | 207 | <p>And so on. The timing diagram shown below illustrates the process: |
| 208 | <br> | 208 | <br> |
| 209 | <br> | 209 | <br> |
| 210 | <br> | 210 | <br> |
| 211 | <center> | 211 | <center> |
| 212 | <p><img SRC="figs/ce_td.gif" ALT="timing diagram for rate 1/2 convolutional encoder" height=322 width=600></center> | 212 | <p><img SRC="figs/ce_td.gif" ALT="timing diagram for rate 1/2 convolutional encoder" height=322 width=600></center> |
| 213 | 213 | ||
| 214 | <p><br> | 214 | <p><br> |
| 215 | <br> | 215 | <br> |
| 216 | <br> | 216 | <br> |
| 217 | <p>After all of the inputs have been presented to the encoder, the output | 217 | <p>After all of the inputs have been presented to the encoder, the output |
| 218 | sequence will be: | 218 | sequence will be: |
| 219 | <p>00 11 10 00 01 10 01 11 11 10 00 10 11 00 11<sub>2</sub>. | 219 | <p>00 11 10 00 01 10 01 11 11 10 00 10 11 00 11<sub>2</sub>. |
| 220 | <p>Notice that I have paired the encoder outputs-the first bit in each | 220 | <p>Notice that I have paired the encoder outputs-the first bit in each |
| 221 | pair is the output of the upper modulo-two adder; the second bit in each | 221 | pair is the output of the upper modulo-two adder; the second bit in each |
| 222 | pair is the output of the lower modulo-two adder. | 222 | pair is the output of the lower modulo-two adder. |
| 223 | <p>You can see from the structure of the rate 1/2 K = 3 convolutional encoder | 223 | <p>You can see from the structure of the rate 1/2 K = 3 convolutional encoder |
| 224 | and from the example given above that each input bit has an effect on three | 224 | and from the example given above that each input bit has an effect on three |
| 225 | successive pairs of output symbols. That is an extremely important point | 225 | successive pairs of output symbols. That is an extremely important point |
| 226 | and that is what gives the convolutional code its error-correcting power. | 226 | and that is what gives the convolutional code its error-correcting power. |
| 227 | The reason why will become evident when we get into the Viterbi decoder | 227 | The reason why will become evident when we get into the Viterbi decoder |
| 228 | algorithm. | 228 | algorithm. |
| 229 | <p>Now if we are only going to send the 15 data bits given above, in order | 229 | <p>Now if we are only going to send the 15 data bits given above, in order |
| 230 | for the last bit to affect three pairs of output symbols, we need to output | 230 | for the last bit to affect three pairs of output symbols, we need to output |
| 231 | two more pairs of symbols. This is accomplished in our example encoder | 231 | two more pairs of symbols. This is accomplished in our example encoder |
| 232 | by clocking the convolutional encoder flip-flops two ( = m) more times, | 232 | by clocking the convolutional encoder flip-flops two ( = m) more times, |
| 233 | while holding the input at zero. This is called "flushing" the encoder, | 233 | while holding the input at zero. This is called "flushing" the encoder, |
| 234 | and results in two more pairs of output symbols. The final binary output | 234 | and results in two more pairs of output symbols. The final binary output |
| 235 | of the encoder is thus 00 11 10 00 01 10 01 11 11 10 00 10 11 00 11 10 | 235 | of the encoder is thus 00 11 10 00 01 10 01 11 11 10 00 10 11 00 11 10 |
| 236 | 11<sub>2</sub>. If we don't perform the flushing operation, the last m | 236 | 11<sub>2</sub>. If we don't perform the flushing operation, the last m |
| 237 | bits of the message have less error-correction capability than the first | 237 | bits of the message have less error-correction capability than the first |
| 238 | through (m - 1)th bits had. This is a pretty important thing to remember | 238 | through (m - 1)th bits had. This is a pretty important thing to remember |
| 239 | if you're going to use this FEC technique in a burst-mode environment. | 239 | if you're going to use this FEC technique in a burst-mode environment. |
| 240 | So's the step of clearing the shift register at the beginning of each burst. | 240 | So's the step of clearing the shift register at the beginning of each burst. |
| 241 | The encoder must start in a known state and end in a known state for the | 241 | The encoder must start in a known state and end in a known state for the |
| 242 | decoder to be able to reconstruct the input data sequence properly. | 242 | decoder to be able to reconstruct the input data sequence properly. |
| 243 | <p>Now, let's look at the encoder from another perspective. You can think | 243 | <p>Now, let's look at the encoder from another perspective. You can think |
| 244 | of the encoder as a simple state machine. The example encoder has two bits | 244 | of the encoder as a simple state machine. The example encoder has two bits |
| 245 | of memory, so there are four possible states. Let's give the left-hand | 245 | of memory, so there are four possible states. Let's give the left-hand |
| 246 | flip-flop a binary weight of 2<sup>1</sup>, and the right-hand flip-flop | 246 | flip-flop a binary weight of 2<sup>1</sup>, and the right-hand flip-flop |
| 247 | a binary weight of 2<sup>0</sup>. Initially, the encoder is in the all-zeroes | 247 | a binary weight of 2<sup>0</sup>. Initially, the encoder is in the all-zeroes |
| 248 | state. If the first input bit is a zero, the encoder stays in the all zeroes | 248 | state. If the first input bit is a zero, the encoder stays in the all zeroes |
| 249 | state at the next clock edge. But if the input bit is a one, the encoder | 249 | state at the next clock edge. But if the input bit is a one, the encoder |
| 250 | transitions to the 10<sub>2</sub> state at the next clock edge. Then, if | 250 | transitions to the 10<sub>2</sub> state at the next clock edge. Then, if |
| 251 | the next input bit is zero, the encoder transitions to the 01<sub>2</sub> | 251 | the next input bit is zero, the encoder transitions to the 01<sub>2</sub> |
| 252 | state, otherwise, it transitions to the 11<sub>2</sub> state. The following | 252 | state, otherwise, it transitions to the 11<sub>2</sub> state. The following |
| 253 | table gives the next state given the current state and the input, with | 253 | table gives the next state given the current state and the input, with |
| 254 | the states given in binary: | 254 | the states given in binary: |
| 255 | <br> | 255 | <br> |
| 256 | <br> | 256 | <br> |
| 257 | <center><table BORDER CELLSPACING=2 CELLPADDING=7 WIDTH="282" > | 257 | <center><table BORDER CELLSPACING=2 CELLPADDING=7 WIDTH="282" > |
| 258 | <tr> | 258 | <tr> |
| 259 | <td VALIGN=TOP WIDTH="33%"><font face="Arial"><font size=-1> </font></font></td> | 259 | <td VALIGN=TOP WIDTH="33%"><font face="Arial"><font size=-1> </font></font></td> |
| 260 | 260 | ||
| 261 | <td VALIGN=TOP COLSPAN="2" WIDTH="67%"> | 261 | <td VALIGN=TOP COLSPAN="2" WIDTH="67%"> |
| 262 | <center><a NAME="statetable"></a><b><font face="Arial"><font size=-1>Next | 262 | <center><a NAME="statetable"></a><b><font face="Arial"><font size=-1>Next |
| 263 | State, if </font></font></b></center> | 263 | State, if </font></font></b></center> |
| 264 | </td> | 264 | </td> |
| 265 | </tr> | 265 | </tr> |
| 266 | 266 | ||
| 267 | <tr> | 267 | <tr> |
| 268 | <td VALIGN=TOP WIDTH="33%"> | 268 | <td VALIGN=TOP WIDTH="33%"> |
| 269 | <center><b><font face="Arial"><font size=-1>Current State</font></font></b></center> | 269 | <center><b><font face="Arial"><font size=-1>Current State</font></font></b></center> |
| 270 | </td> | 270 | </td> |
| 271 | 271 | ||
| 272 | <td VALIGN=TOP WIDTH="33%"> | 272 | <td VALIGN=TOP WIDTH="33%"> |
| 273 | <center><b><font face="Arial"><font size=-1>Input = 0:</font></font></b></center> | 273 | <center><b><font face="Arial"><font size=-1>Input = 0:</font></font></b></center> |
| 274 | </td> | 274 | </td> |
| 275 | 275 | ||
| 276 | <td VALIGN=TOP WIDTH="33%"> | 276 | <td VALIGN=TOP WIDTH="33%"> |
| 277 | <center><b><font face="Arial"><font size=-1>Input = 1:</font></font></b></center> | 277 | <center><b><font face="Arial"><font size=-1>Input = 1:</font></font></b></center> |
| 278 | </td> | 278 | </td> |
| 279 | </tr> | 279 | </tr> |
| 280 | 280 | ||
| 281 | <tr> | 281 | <tr> |
| 282 | <td VALIGN=TOP WIDTH="33%"> | 282 | <td VALIGN=TOP WIDTH="33%"> |
| 283 | <center><font face="Arial"><font size=-1>00</font></font></center> | 283 | <center><font face="Arial"><font size=-1>00</font></font></center> |
| 284 | </td> | 284 | </td> |
| 285 | 285 | ||
| 286 | <td VALIGN=TOP WIDTH="33%"> | 286 | <td VALIGN=TOP WIDTH="33%"> |
| 287 | <center><font face="Arial"><font size=-1>00</font></font></center> | 287 | <center><font face="Arial"><font size=-1>00</font></font></center> |
| 288 | </td> | 288 | </td> |
| 289 | 289 | ||
| 290 | <td VALIGN=TOP WIDTH="33%"> | 290 | <td VALIGN=TOP WIDTH="33%"> |
| 291 | <center><font face="Arial"><font size=-1>10</font></font></center> | 291 | <center><font face="Arial"><font size=-1>10</font></font></center> |
| 292 | </td> | 292 | </td> |
| 293 | </tr> | 293 | </tr> |
| 294 | 294 | ||
| 295 | <tr> | 295 | <tr> |
| 296 | <td VALIGN=TOP WIDTH="33%"> | 296 | <td VALIGN=TOP WIDTH="33%"> |
| 297 | <center><font face="Arial"><font size=-1>01</font></font></center> | 297 | <center><font face="Arial"><font size=-1>01</font></font></center> |
| 298 | </td> | 298 | </td> |
| 299 | 299 | ||
| 300 | <td VALIGN=TOP WIDTH="33%"> | 300 | <td VALIGN=TOP WIDTH="33%"> |
| 301 | <center><font face="Arial"><font size=-1>00</font></font></center> | 301 | <center><font face="Arial"><font size=-1>00</font></font></center> |
| 302 | </td> | 302 | </td> |
| 303 | 303 | ||
| 304 | <td VALIGN=TOP WIDTH="33%"> | 304 | <td VALIGN=TOP WIDTH="33%"> |
| 305 | <center><font face="Arial"><font size=-1>10</font></font></center> | 305 | <center><font face="Arial"><font size=-1>10</font></font></center> |
| 306 | </td> | 306 | </td> |
| 307 | </tr> | 307 | </tr> |
| 308 | 308 | ||
| 309 | <tr> | 309 | <tr> |
| 310 | <td VALIGN=TOP WIDTH="33%"> | 310 | <td VALIGN=TOP WIDTH="33%"> |
| 311 | <center><font face="Arial"><font size=-1>10</font></font></center> | 311 | <center><font face="Arial"><font size=-1>10</font></font></center> |
| 312 | </td> | 312 | </td> |
| 313 | 313 | ||
| 314 | <td VALIGN=TOP WIDTH="33%"> | 314 | <td VALIGN=TOP WIDTH="33%"> |
| 315 | <center><font face="Arial"><font size=-1>01</font></font></center> | 315 | <center><font face="Arial"><font size=-1>01</font></font></center> |
| 316 | </td> | 316 | </td> |
| 317 | 317 | ||
| 318 | <td VALIGN=TOP WIDTH="33%"> | 318 | <td VALIGN=TOP WIDTH="33%"> |
| 319 | <center><font face="Arial"><font size=-1>11</font></font></center> | 319 | <center><font face="Arial"><font size=-1>11</font></font></center> |
| 320 | </td> | 320 | </td> |
| 321 | </tr> | 321 | </tr> |
| 322 | 322 | ||
| 323 | <tr> | 323 | <tr> |
| 324 | <td VALIGN=TOP WIDTH="33%"> | 324 | <td VALIGN=TOP WIDTH="33%"> |
| 325 | <center><font face="Arial"><font size=-1>11</font></font></center> | 325 | <center><font face="Arial"><font size=-1>11</font></font></center> |
| 326 | </td> | 326 | </td> |
| 327 | 327 | ||
| 328 | <td VALIGN=TOP WIDTH="33%"> | 328 | <td VALIGN=TOP WIDTH="33%"> |
| 329 | <center><font face="Arial"><font size=-1>01</font></font></center> | 329 | <center><font face="Arial"><font size=-1>01</font></font></center> |
| 330 | </td> | 330 | </td> |
| 331 | 331 | ||
| 332 | <td VALIGN=TOP WIDTH="33%"> | 332 | <td VALIGN=TOP WIDTH="33%"> |
| 333 | <center><font face="Arial"><font size=-1>11</font></font></center> | 333 | <center><font face="Arial"><font size=-1>11</font></font></center> |
| 334 | </td> | 334 | </td> |
| 335 | </tr> | 335 | </tr> |
| 336 | </table></center> | 336 | </table></center> |
| 337 | 337 | ||
| 338 | <br> | 338 | <br> |
| 339 | <p>The above table is often called a state transition table. We'll refer | 339 | <p>The above table is often called a state transition table. We'll refer |
| 340 | to it as the <tt>next state</tt> table.<tt> </tt>Now let us look at a table | 340 | to it as the <tt>next state</tt> table.<tt> </tt>Now let us look at a table |
| 341 | that lists the channel output symbols, given the current state and the | 341 | that lists the channel output symbols, given the current state and the |
| 342 | input data, which we'll refer to as the <tt>output</tt> table: | 342 | input data, which we'll refer to as the <tt>output</tt> table: |
| 343 | <br> | 343 | <br> |
| 344 | <br> | 344 | <br> |
| 345 | <center><table BORDER CELLSPACING=2 CELLPADDING=7 WIDTH="282" > | 345 | <center><table BORDER CELLSPACING=2 CELLPADDING=7 WIDTH="282" > |
| 346 | <tr> | 346 | <tr> |
| 347 | <td VALIGN=TOP WIDTH="33%"></td> | 347 | <td VALIGN=TOP WIDTH="33%"></td> |
| 348 | 348 | ||
| 349 | <td VALIGN=TOP COLSPAN="2" WIDTH="67%"> | 349 | <td VALIGN=TOP COLSPAN="2" WIDTH="67%"> |
| 350 | <center><a NAME="outputtable"></a><b><font face="Arial"><font size=-1>Output | 350 | <center><a NAME="outputtable"></a><b><font face="Arial"><font size=-1>Output |
| 351 | Symbols, if</font></font></b></center> | 351 | Symbols, if</font></font></b></center> |
| 352 | </td> | 352 | </td> |
| 353 | </tr> | 353 | </tr> |
| 354 | 354 | ||
| 355 | <tr> | 355 | <tr> |
| 356 | <td VALIGN=TOP WIDTH="33%"> | 356 | <td VALIGN=TOP WIDTH="33%"> |
| 357 | <center><b><font face="Arial"><font size=-1>Current State</font></font></b></center> | 357 | <center><b><font face="Arial"><font size=-1>Current State</font></font></b></center> |
| 358 | </td> | 358 | </td> |
| 359 | 359 | ||
| 360 | <td VALIGN=TOP WIDTH="33%"> | 360 | <td VALIGN=TOP WIDTH="33%"> |
| 361 | <center><b><font face="Arial"><font size=-1>Input = 0:</font></font></b></center> | 361 | <center><b><font face="Arial"><font size=-1>Input = 0:</font></font></b></center> |
| 362 | </td> | 362 | </td> |
| 363 | 363 | ||
| 364 | <td VALIGN=TOP WIDTH="33%"> | 364 | <td VALIGN=TOP WIDTH="33%"> |
| 365 | <center><b><font face="Arial"><font size=-1>Input = 1:</font></font></b></center> | 365 | <center><b><font face="Arial"><font size=-1>Input = 1:</font></font></b></center> |
| 366 | </td> | 366 | </td> |
| 367 | </tr> | 367 | </tr> |
| 368 | 368 | ||
| 369 | <tr> | 369 | <tr> |
| 370 | <td VALIGN=TOP WIDTH="33%"> | 370 | <td VALIGN=TOP WIDTH="33%"> |
| 371 | <center><font face="Arial"><font size=-1>00</font></font></center> | 371 | <center><font face="Arial"><font size=-1>00</font></font></center> |
| 372 | </td> | 372 | </td> |
| 373 | 373 | ||
| 374 | <td VALIGN=TOP WIDTH="33%"> | 374 | <td VALIGN=TOP WIDTH="33%"> |
| 375 | <center><font face="Arial"><font size=-1>00</font></font></center> | 375 | <center><font face="Arial"><font size=-1>00</font></font></center> |
| 376 | </td> | 376 | </td> |
| 377 | 377 | ||
| 378 | <td VALIGN=TOP WIDTH="33%"> | 378 | <td VALIGN=TOP WIDTH="33%"> |
| 379 | <center><font face="Arial"><font size=-1>11</font></font></center> | 379 | <center><font face="Arial"><font size=-1>11</font></font></center> |
| 380 | </td> | 380 | </td> |
| 381 | </tr> | 381 | </tr> |
| 382 | 382 | ||
| 383 | <tr> | 383 | <tr> |
| 384 | <td VALIGN=TOP WIDTH="33%"> | 384 | <td VALIGN=TOP WIDTH="33%"> |
| 385 | <center><font face="Arial"><font size=-1>01</font></font></center> | 385 | <center><font face="Arial"><font size=-1>01</font></font></center> |
| 386 | </td> | 386 | </td> |
| 387 | 387 | ||
| 388 | <td VALIGN=TOP WIDTH="33%"> | 388 | <td VALIGN=TOP WIDTH="33%"> |
| 389 | <center><font face="Arial"><font size=-1>11</font></font></center> | 389 | <center><font face="Arial"><font size=-1>11</font></font></center> |
| 390 | </td> | 390 | </td> |
| 391 | 391 | ||
| 392 | <td VALIGN=TOP WIDTH="33%"> | 392 | <td VALIGN=TOP WIDTH="33%"> |
| 393 | <center><font face="Arial"><font size=-1>00</font></font></center> | 393 | <center><font face="Arial"><font size=-1>00</font></font></center> |
| 394 | </td> | 394 | </td> |
| 395 | </tr> | 395 | </tr> |
| 396 | 396 | ||
| 397 | <tr> | 397 | <tr> |
| 398 | <td VALIGN=TOP WIDTH="33%"> | 398 | <td VALIGN=TOP WIDTH="33%"> |
| 399 | <center><font face="Arial"><font size=-1>10</font></font></center> | 399 | <center><font face="Arial"><font size=-1>10</font></font></center> |
| 400 | </td> | 400 | </td> |
| 401 | 401 | ||
| 402 | <td VALIGN=TOP WIDTH="33%"> | 402 | <td VALIGN=TOP WIDTH="33%"> |
| 403 | <center><font face="Arial"><font size=-1>10</font></font></center> | 403 | <center><font face="Arial"><font size=-1>10</font></font></center> |
| 404 | </td> | 404 | </td> |
| 405 | 405 | ||
| 406 | <td VALIGN=TOP WIDTH="33%"> | 406 | <td VALIGN=TOP WIDTH="33%"> |
| 407 | <center><font face="Arial"><font size=-1>01</font></font></center> | 407 | <center><font face="Arial"><font size=-1>01</font></font></center> |
| 408 | </td> | 408 | </td> |
| 409 | </tr> | 409 | </tr> |
| 410 | 410 | ||
| 411 | <tr> | 411 | <tr> |
| 412 | <td VALIGN=TOP WIDTH="33%"> | 412 | <td VALIGN=TOP WIDTH="33%"> |
| 413 | <center><font face="Arial"><font size=-1>11</font></font></center> | 413 | <center><font face="Arial"><font size=-1>11</font></font></center> |
| 414 | </td> | 414 | </td> |
| 415 | 415 | ||
| 416 | <td VALIGN=TOP WIDTH="33%"> | 416 | <td VALIGN=TOP WIDTH="33%"> |
| 417 | <center><font face="Arial"><font size=-1>01</font></font></center> | 417 | <center><font face="Arial"><font size=-1>01</font></font></center> |
| 418 | </td> | 418 | </td> |
| 419 | 419 | ||
| 420 | <td VALIGN=TOP WIDTH="33%"> | 420 | <td VALIGN=TOP WIDTH="33%"> |
| 421 | <center><font face="Arial"><font size=-1>10</font></font></center> | 421 | <center><font face="Arial"><font size=-1>10</font></font></center> |
| 422 | </td> | 422 | </td> |
| 423 | </tr> | 423 | </tr> |
| 424 | </table></center> | 424 | </table></center> |
| 425 | 425 | ||
| 426 | <br> | 426 | <br> |
| 427 | <p>You should now see that with these two tables, you can completely describe | 427 | <p>You should now see that with these two tables, you can completely describe |
| 428 | the behavior of the example rate 1/2, K = 3 convolutional encoder. Note | 428 | the behavior of the example rate 1/2, K = 3 convolutional encoder. Note |
| 429 | that both of these tables have 2<sup>(K - 1)</sup> rows, and 2<sup>k</sup> | 429 | that both of these tables have 2<sup>(K - 1)</sup> rows, and 2<sup>k</sup> |
| 430 | columns, where K is the constraint length and k is the number of bits input | 430 | columns, where K is the constraint length and k is the number of bits input |
| 431 | to the encoder for each cycle. These two tables will come in handy when | 431 | to the encoder for each cycle. These two tables will come in handy when |
| 432 | we start discussing the Viterbi decoder algorithm. | 432 | we start discussing the Viterbi decoder algorithm. |
| 433 | <p><a NAME="mapping"></a><b><i><font face="Arial">Mapping the Channel Symbols | 433 | <p><a NAME="mapping"></a><b><i><font face="Arial">Mapping the Channel Symbols |
| 434 | to Signal Levels</font></i></b> | 434 | to Signal Levels</font></i></b> |
| 435 | <p>Mapping the one/zero output of the convolutional encoder onto an antipodal | 435 | <p>Mapping the one/zero output of the convolutional encoder onto an antipodal |
| 436 | baseband signaling scheme is simply a matter of translating zeroes to +1s | 436 | baseband signaling scheme is simply a matter of translating zeroes to +1s |
| 437 | and ones to -1s. This can be accomplished by performing the operation y | 437 | and ones to -1s. This can be accomplished by performing the operation y |
| 438 | = 1 - 2x on each convolutional encoder output symbol. | 438 | = 1 - 2x on each convolutional encoder output symbol. |
| 439 | <p><a NAME="addnoise"></a><b><i><font face="Arial">Adding Noise to the | 439 | <p><a NAME="addnoise"></a><b><i><font face="Arial">Adding Noise to the |
| 440 | Transmitted Symbols</font></i></b> | 440 | Transmitted Symbols</font></i></b> |
| 441 | <p>Adding noise to the transmitted channel symbols produced by the convolutional | 441 | <p>Adding noise to the transmitted channel symbols produced by the convolutional |
| 442 | encoder involves generating Gaussian random numbers, scaling the numbers | 442 | encoder involves generating Gaussian random numbers, scaling the numbers |
| 443 | according to the desired energy per symbol to noise density ratio, E<sub>s</sub>/N<sub>0</sub>, | 443 | according to the desired energy per symbol to noise density ratio, E<sub>s</sub>/N<sub>0</sub>, |
| 444 | and adding the scaled Gaussian random numbers to the channel symbol values. | 444 | and adding the scaled Gaussian random numbers to the channel symbol values. |
| 445 | <p>For the uncoded channel, E<sub>s</sub>/N<sub>0 </sub>= E<sub>b</sub>/N<sub>0</sub>, | 445 | <p>For the uncoded channel, E<sub>s</sub>/N<sub>0 </sub>= E<sub>b</sub>/N<sub>0</sub>, |
| 446 | since there is one channel symbol per bit. However, for the coded | 446 | since there is one channel symbol per bit. However, for the coded |
| 447 | channel, E<sub>s</sub>/N<sub>0 </sub>= E<sub>b</sub>/N<sub>0</sub> + 10log<sub>10</sub>(k/n). | 447 | channel, E<sub>s</sub>/N<sub>0 </sub>= E<sub>b</sub>/N<sub>0</sub> + 10log<sub>10</sub>(k/n). |
| 448 | For example, for rate 1/2 coding, E<sub>s</sub>/N<sub>0 </sub>= E<sub>b</sub>/N<sub>0</sub> | 448 | For example, for rate 1/2 coding, E<sub>s</sub>/N<sub>0 </sub>= E<sub>b</sub>/N<sub>0</sub> |
| 449 | + 10log<sub>10</sub>(1/2) = E<sub>b</sub>/N<sub>0</sub> - 3.01 dB. | 449 | + 10log<sub>10</sub>(1/2) = E<sub>b</sub>/N<sub>0</sub> - 3.01 dB. |
| 450 | Similarly, for rate 2/3 coding, E<sub>s</sub>/N<sub>0 </sub>= E<sub>b</sub>/N<sub>0</sub> | 450 | Similarly, for rate 2/3 coding, E<sub>s</sub>/N<sub>0 </sub>= E<sub>b</sub>/N<sub>0</sub> |
| 451 | + 10log<sub>10</sub>(2/3) = E<sub>b</sub>/N<sub>0</sub> - 1.76 dB. | 451 | + 10log<sub>10</sub>(2/3) = E<sub>b</sub>/N<sub>0</sub> - 1.76 dB. |
| 452 | <p>The Gaussian random number generator is the only interesting part of | 452 | <p>The Gaussian random number generator is the only interesting part of |
| 453 | this task. C only provides a uniform random number generator, <tt>rand()</tt>. | 453 | this task. C only provides a uniform random number generator, <tt>rand()</tt>. |
| 454 | In order to obtain Gaussian random numbers, we take advantage of relationships | 454 | In order to obtain Gaussian random numbers, we take advantage of relationships |
| 455 | between uniform, Rayleigh, and Gaussian distributions: | 455 | between uniform, Rayleigh, and Gaussian distributions: |
| 456 | <p>Given a uniform random variable U, a Rayleigh random variable R can | 456 | <p>Given a uniform random variable U, a Rayleigh random variable R can |
| 457 | be obtained by: | 457 | be obtained by: |
| 458 | <p><img SRC="figs/eqn01.gif" ALT="equation for Rayleigh random deviate given uniform random deviate" height=30 width=297 align=ABSCENTER> | 458 | <p><img SRC="figs/eqn01.gif" ALT="equation for Rayleigh random deviate given uniform random deviate" height=30 width=297 align=ABSCENTER> |
| 459 | <p>where <img SRC="figs/eqn02.gif" height=24 width=24 align=ABSCENTER>is | 459 | <p>where <img SRC="figs/eqn02.gif" height=24 width=24 align=ABSCENTER>is |
| 460 | the variance of the Rayleigh random variable, and given R and a second | 460 | the variance of the Rayleigh random variable, and given R and a second |
| 461 | uniform random variable V, two Gaussian random variables G and H can be | 461 | uniform random variable V, two Gaussian random variables G and H can be |
| 462 | obtained by | 462 | obtained by |
| 463 | <p><i>G</i> = <i>R</i> cos <i>U</i> and <i>H</i> = <i>R</i> sin <i>V</i>. | 463 | <p><i>G</i> = <i>R</i> cos <i>U</i> and <i>H</i> = <i>R</i> sin <i>V</i>. |
| 464 | <p>In the AWGN channel, the signal is corrupted by additive noise, n(t), | 464 | <p>In the AWGN channel, the signal is corrupted by additive noise, n(t), |
| 465 | which has the power spectrum <i>No</i>/2 watts/Hz. The variance <img SRC="figs/eqn02.gif" ALT="variance" height=24 width=24 align=ABSBOTTOM>of | 465 | which has the power spectrum <i>No</i>/2 watts/Hz. The variance <img SRC="figs/eqn02.gif" ALT="variance" height=24 width=24 align=ABSBOTTOM>of |
| 466 | this noise is equal to <img SRC="figs/eqn03.gif" ALT="noise density div by two" height=22 width=38 align=TEXTTOP>. | 466 | this noise is equal to <img SRC="figs/eqn03.gif" ALT="noise density div by two" height=22 width=38 align=TEXTTOP>. |
| 467 | If we set the energy per symbol <i>E<sub>s</sub></i> equal to 1, then <img SRC="figs/eqn04.gif" ALT="equation relating variance to SNR" height=28 width=110 align=ABSBOTTOM>. | 467 | If we set the energy per symbol <i>E<sub>s</sub></i> equal to 1, then <img SRC="figs/eqn04.gif" ALT="equation relating variance to SNR" height=28 width=110 align=ABSBOTTOM>. |
| 468 | So <img SRC="figs/eqn05.gif" ALT="equation for AWGN st dev given SNR" height=28 width=139 align=ABSCENTER>. | 468 | So <img SRC="figs/eqn05.gif" ALT="equation for AWGN st dev given SNR" height=28 width=139 align=ABSCENTER>. |
| 469 | <p><a NAME="quantizing"></a><b><i><font face="Arial">Quantizing the Received | 469 | <p><a NAME="quantizing"></a><b><i><font face="Arial">Quantizing the Received |
| 470 | Channel Symbols</font></i></b> | 470 | Channel Symbols</font></i></b> |
| 471 | <p>An ideal Viterbi decoder would work with infinite precision, or at least | 471 | <p>An ideal Viterbi decoder would work with infinite precision, or at least |
| 472 | with floating-point numbers. In practical systems, we quantize the received | 472 | with floating-point numbers. In practical systems, we quantize the received |
| 473 | channel symbols with one or a few bits of precision in order to reduce | 473 | channel symbols with one or a few bits of precision in order to reduce |
| 474 | the complexity of the Viterbi decoder, not to mention the circuits that | 474 | the complexity of the Viterbi decoder, not to mention the circuits that |
| 475 | precede it. If the received channel symbols are quantized to one-bit precision | 475 | precede it. If the received channel symbols are quantized to one-bit precision |
| 476 | (< 0V = 1, <u>></u> 0V = 0), the result is called hard-decision data. | 476 | (< 0V = 1, <u>></u> 0V = 0), the result is called hard-decision data. |
| 477 | If the received channel symbols are quantized with more than one bit of | 477 | If the received channel symbols are quantized with more than one bit of |
| 478 | precision, the result is called soft-decision data. A Viterbi decoder with | 478 | precision, the result is called soft-decision data. A Viterbi decoder with |
| 479 | soft decision data inputs quantized to three or four bits of precision | 479 | soft decision data inputs quantized to three or four bits of precision |
| 480 | can perform about 2 dB better than one working with hard-decision inputs. | 480 | can perform about 2 dB better than one working with hard-decision inputs. |
| 481 | The usual quantization precision is three bits. More bits provide little | 481 | The usual quantization precision is three bits. More bits provide little |
| 482 | additional improvement. | 482 | additional improvement. |
| 483 | <p>The selection of the quantizing levels is an important design decision | 483 | <p>The selection of the quantizing levels is an important design decision |
| 484 | because it can have a significant effect on the performance of the link. | 484 | because it can have a significant effect on the performance of the link. |
| 485 | The following is a very brief explanation of one way to set those levels. | 485 | The following is a very brief explanation of one way to set those levels. |
| 486 | Let's assume our received signal levels in the absence of noise are -1V | 486 | Let's assume our received signal levels in the absence of noise are -1V |
| 487 | = 1, +1V = 0. With noise, our received signal has mean +/- 1 and standard | 487 | = 1, +1V = 0. With noise, our received signal has mean +/- 1 and standard |
| 488 | deviation <img SRC="figs/eqn05.gif" ALT="equation for AWGN st dev given SNR" height=28 width=139 align=ABSCENTER>. | 488 | deviation <img SRC="figs/eqn05.gif" ALT="equation for AWGN st dev given SNR" height=28 width=139 align=ABSCENTER>. |
| 489 | Let's use a uniform, three-bit quantizer having the input/output relationship | 489 | Let's use a uniform, three-bit quantizer having the input/output relationship |
| 490 | shown in the figure below, where D is a decision level that we will calculate | 490 | shown in the figure below, where D is a decision level that we will calculate |
| 491 | shortly: | 491 | shortly: |
| 492 | <center> | 492 | <center> |
| 493 | <p><img SRC="figs/quantize.gif" ALT="8-level quantizer function plot" height=342 width=384></center> | 493 | <p><img SRC="figs/quantize.gif" ALT="8-level quantizer function plot" height=342 width=384></center> |
| 494 | 494 | ||
| 495 | <p>The decision level, D, can be calculated according to the formula <img SRC="figs/eqn06.gif" ALT="equation for quantizer decision level" height=28 width=228 align=ABSCENTER>, | 495 | <p>The decision level, D, can be calculated according to the formula <img SRC="figs/eqn06.gif" ALT="equation for quantizer decision level" height=28 width=228 align=ABSCENTER>, |
| 496 | where E<sub>s</sub>/N<sub>0</sub> is the energy per symbol to noise density | 496 | where E<sub>s</sub>/N<sub>0</sub> is the energy per symbol to noise density |
| 497 | ratio<i>. (The above figure was redrawn from Figure 2 of Advanced Hardware | 497 | ratio<i>. (The above figure was redrawn from Figure 2 of Advanced Hardware |
| 498 | Architecture's ANRS07-0795, "Soft Decision Thresholds and Effects on Viterbi | 498 | Architecture's ANRS07-0795, "Soft Decision Thresholds and Effects on Viterbi |
| 499 | Performance". See the </i><a href="fecbiblio.html">bibliography</a><i> | 499 | Performance". See the </i><a href="fecbiblio.html">bibliography</a><i> |
| 500 | for a link to their web pages.)</i> | 500 | for a link to their web pages.)</i> |
| 501 | <p>Click <a href="algrthms2.html">here</a> to proceed to the description | 501 | <p>Click <a href="algrthms2.html">here</a> to proceed to the description |
| 502 | of the Viterbi decoding algorithm itself... | 502 | of the Viterbi decoding algorithm itself... |
| 503 | <p>Or click on one of the links below to go to the beginning of that section: | 503 | <p>Or click on one of the links below to go to the beginning of that section: |
| 504 | <p> <a href="tutorial.html">Introduction</a> | 504 | <p> <a href="tutorial.html">Introduction</a> |
| 505 | <br> <a href="algrthms2.html">Description of the Algorithms | 505 | <br> <a href="algrthms2.html">Description of the Algorithms |
| 506 | (Part 2)</a> | 506 | (Part 2)</a> |
| 507 | <br> <a href="examples.html">Simulation Source Code Examples</a> | 507 | <br> <a href="examples.html">Simulation Source Code Examples</a> |
| 508 | <br> <a href="simrslts.html">Example Simulation Results</a> | 508 | <br> <a href="simrslts.html">Example Simulation Results</a> |
| 509 | <br> <a href="fecbiblio.html">Bibliography</a> | 509 | <br> <a href="fecbiblio.html">Bibliography</a> |
| 510 | <br> <a href="tutorial.html#specapps">About Spectrum Applications...</a> | 510 | <br> <a href="tutorial.html#specapps">About Spectrum Applications...</a> |
| 511 | <br> | 511 | <br> |
| 512 | <br> | 512 | <br> |
| 513 | <br> | 513 | <br> |
| 514 | <br> | 514 | <br> |
| 515 | <center> | 515 | <center> |
| 516 | <p><img SRC="figs/stripe.gif" height=6 width=600></center> | 516 | <p><img SRC="figs/stripe.gif" height=6 width=600></center> |
| 517 | 517 | ||
| 518 | </body> | 518 | </body> |
| 519 | </html> | 519 | </html> |
diff --git a/test/etags/html-src/index.shtml b/test/etags/html-src/index.shtml index 24f269f035f..6d8cd858855 100644 --- a/test/etags/html-src/index.shtml +++ b/test/etags/html-src/index.shtml | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | <H3> </H3> <!-- un po' di spazio in cima --> | 8 | <H3> </H3> <!-- un po' di spazio in cima --> |
| 9 | 9 | ||
| 10 | <!-- | 10 | <!-- |
| 11 | La rubrica "in evidenza" va commentata se non c'è niente di serio | 11 | La rubrica "in evidenza" va commentata se non c'è niente di serio |
| 12 | da mettere in evidenza | 12 | da mettere in evidenza |
| 13 | --> | 13 | --> |
| 14 | <H2> | 14 | <H2> |
| @@ -23,7 +23,7 @@ | |||
| 23 | sostenere il <a href="/altri/cortiana.shtml">disegno di legge</a> sul | 23 | sostenere il <a href="/altri/cortiana.shtml">disegno di legge</a> sul |
| 24 | software libero dal titolo "<i>Norme in materia di pluralismo | 24 | software libero dal titolo "<i>Norme in materia di pluralismo |
| 25 | informatico sulla adozione e la diffusione del software libero e sulla | 25 | informatico sulla adozione e la diffusione del software libero e sulla |
| 26 | portabilità dei documenti informatici nella Pubblica | 26 | portabilità dei documenti informatici nella Pubblica |
| 27 | Amministrazione</i>" (XIV Legislatura Atto Senato n. 1188).<P> | 27 | Amministrazione</i>" (XIV Legislatura Atto Senato n. 1188).<P> |
| 28 | 28 | ||
| 29 | </ul> | 29 | </ul> |
| @@ -42,7 +42,7 @@ | |||
| 42 | ottenere l'esenzione dal bollilno SIAE per la distribuzione di | 42 | ottenere l'esenzione dal bollilno SIAE per la distribuzione di |
| 43 | software libero a titolo oneroso o gratuito. <A | 43 | software libero a titolo oneroso o gratuito. <A |
| 44 | HREF="/altri/semenzato-pieroni.shtml">Qui</A> il disegno di legge | 44 | HREF="/altri/semenzato-pieroni.shtml">Qui</A> il disegno di legge |
| 45 | Semenzato Pieroni sul diritto d'autore. E non è finita. | 45 | Semenzato Pieroni sul diritto d'autore. E non è finita. |
| 46 | 46 | ||
| 47 | <p></p><li> | 47 | <p></p><li> |
| 48 | <a href="/altri/adeos.shtml">Salutiamo</a> l'arrivo di ADEOS, kernel | 48 | <a href="/altri/adeos.shtml">Salutiamo</a> l'arrivo di ADEOS, kernel |
diff --git a/test/etags/html-src/software.html b/test/etags/html-src/software.html index 4d174c63b07..b5de1e6d686 100644 --- a/test/etags/html-src/software.html +++ b/test/etags/html-src/software.html | |||
| @@ -6,14 +6,14 @@ | |||
| 6 | P { text-indent: 0; text-align: justify } | 6 | P { text-indent: 0; text-align: justify } |
| 7 | DD { text-indent: 0; text-align: justify } | 7 | DD { text-indent: 0; text-align: justify } |
| 8 | --></STYLE> | 8 | --></STYLE> |
| 9 | <TITLE>Francesco Potortì Software Page</TITLE> | 9 | <TITLE>Francesco Potortì Software Page</TITLE> |
| 10 | <LINK REV="made" HREF="mailto:F.Potorti@cnuce.cnr.it"> | 10 | <LINK REV="made" HREF="mailto:F.Potorti@cnuce.cnr.it"> |
| 11 | <META NAME="description" CONTENT="Home page of Francesco Potortì."> | 11 | <META NAME="description" CONTENT="Home page of Francesco Potortì."> |
| 12 | <META NAME="keywords" | 12 | <META NAME="keywords" |
| 13 | CONTENT="Potorti Potortì Potorti' Potorti` | 13 | CONTENT="Potorti Potortì Potorti' Potorti` |
| 14 | satellites MTG fracas simulator LEO MEO GEO | 14 | satellites MTG fracas simulator LEO MEO GEO |
| 15 | GNU emacs etags checkiso debian-bug"> | 15 | GNU emacs etags checkiso debian-bug"> |
| 16 | <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> | 16 | <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> |
| 17 | </HEAD><BODY> | 17 | </HEAD><BODY> |
| 18 | 18 | ||
| 19 | <CENTER> | 19 | <CENTER> |
diff --git a/test/etags/html-src/softwarelibero.html b/test/etags/html-src/softwarelibero.html index 7aa74c55bd0..159432908d2 100644 --- a/test/etags/html-src/softwarelibero.html +++ b/test/etags/html-src/softwarelibero.html | |||
| @@ -1,27 +1,27 @@ | |||
| 1 | <DIV LANG="it" ALIGN="justify"> | 1 | <DIV LANG="it" ALIGN="justify"> |
| 2 | 2 | ||
| 3 | <H2> | 3 | <H2> |
| 4 | Cos'è il software libero? | 4 | Cos'è il software libero? |
| 5 | </H2> | 5 | </H2> |
| 6 | 6 | ||
| 7 | <P> | 7 | <P> |
| 8 | Il concetto di software libero discende naturalmente da quello di | 8 | Il concetto di software libero discende naturalmente da quello di |
| 9 | libertà di scambio di idee e di informazioni. Negli ambienti | 9 | libertà di scambio di idee e di informazioni. Negli ambienti |
| 10 | scientifici, quest'ultimo principio è tenuto in alta considerazione | 10 | scientifici, quest'ultimo principio è tenuto in alta considerazione |
| 11 | per la fecondità che ha dimostrato; ad esso infatti è generalmente | 11 | per la fecondità che ha dimostrato; ad esso infatti è generalmente |
| 12 | attribuita molta parte dell'eccezionale ed imprevedibile crescita del | 12 | attribuita molta parte dell'eccezionale ed imprevedibile crescita del |
| 13 | sapere negli ultimi tre secoli. | 13 | sapere negli ultimi tre secoli. |
| 14 | </P> | 14 | </P> |
| 15 | <P> | 15 | <P> |
| 16 | La libertà di scambio di idee non è tuttavia una questione puramente | 16 | La libertà di scambio di idee non è tuttavia una questione puramente |
| 17 | pratica: essa è anche alla base dei concetti di libertà di pensiero e | 17 | pratica: essa è anche alla base dei concetti di libertà di pensiero e |
| 18 | di espressione. Analogamente alle idee, il software è immateriale, e | 18 | di espressione. Analogamente alle idee, il software è immateriale, e |
| 19 | può essere riprodotto e trasmesso facilmente. In modo simile a quanto | 19 | può essere riprodotto e trasmesso facilmente. In modo simile a quanto |
| 20 | avviene per le idee, parte essenziale del processo che sostiene la | 20 | avviene per le idee, parte essenziale del processo che sostiene la |
| 21 | crescita e l'evoluzione del software è la sua libera diffusione. Ed | 21 | crescita e l'evoluzione del software è la sua libera diffusione. Ed |
| 22 | ogni giorno di più, come le idee, il software permea il tessuto | 22 | ogni giorno di più, come le idee, il software permea il tessuto |
| 23 | sociale e lo influenza, produce effetti etici, economici, politici e | 23 | sociale e lo influenza, produce effetti etici, economici, politici e |
| 24 | in un senso più generale culturali. | 24 | in un senso più generale culturali. |
| 25 | </P> | 25 | </P> |
| 26 | <P> | 26 | <P> |
| 27 | Fu Richard M. Stallman, nei primi anni Ottanta, a formalizzare per la | 27 | Fu Richard M. Stallman, nei primi anni Ottanta, a formalizzare per la |
| @@ -30,34 +30,34 @@ | |||
| 30 | href="http://www.it.gnu.org/philosophy/free-sw.it.html">definizione</A> | 30 | href="http://www.it.gnu.org/philosophy/free-sw.it.html">definizione</A> |
| 31 | di Stallman, che da subito assurse al ruolo di definizione per | 31 | di Stallman, che da subito assurse al ruolo di definizione per |
| 32 | eccellenza di software libero, assume la forma di quattro principi di | 32 | eccellenza di software libero, assume la forma di quattro principi di |
| 33 | libertà: | 33 | libertà : |
| 34 | </P> | 34 | </P> |
| 35 | <P> | 35 | <P> |
| 36 | <DL> | 36 | <DL> |
| 37 | <DT>Libertà 0, o libertà fondamentale: | 37 | <DT>Libertà 0, o libertà fondamentale: |
| 38 | <DD>La libertà di eseguire il programma per qualunque scopo, senza | 38 | <DD>La libertà di eseguire il programma per qualunque scopo, senza |
| 39 | vincoli sul suo utilizzo. | 39 | vincoli sul suo utilizzo. |
| 40 | 40 | ||
| 41 | <DT>Libertà 1: | 41 | <DT>Libertà 1: |
| 42 | <DD>La libertà di studiare il funzionamento del programma, e | 42 | <DD>La libertà di studiare il funzionamento del programma, e |
| 43 | di adattarlo alle proprie esigenze. | 43 | di adattarlo alle proprie esigenze. |
| 44 | 44 | ||
| 45 | <DT>Libertà 2: | 45 | <DT>Libertà 2: |
| 46 | <DD>La libertà di redistribuire copie del programma. | 46 | <DD>La libertà di redistribuire copie del programma. |
| 47 | 47 | ||
| 48 | <DT>Libertà 3: | 48 | <DT>Libertà 3: |
| 49 | <DD>La libertà di migliorare il programma, e di distribuirne | 49 | <DD>La libertà di migliorare il programma, e di distribuirne |
| 50 | i miglioramenti. | 50 | i miglioramenti. |
| 51 | </DL> | 51 | </DL> |
| 52 | </P> | 52 | </P> |
| 53 | <P> | 53 | <P> |
| 54 | Il software distribuito con una licenza che rispetti questi principi è | 54 | Il software distribuito con una licenza che rispetti questi principi è |
| 55 | detto <Q><EM>software libero</EM></Q> (in inglese <Q><EM>free | 55 | detto <Q><EM>software libero</EM></Q> (in inglese <Q><EM>free |
| 56 | software</EM></Q>). Nel 1984 Richard M. Stallman <A TITLE="storia | 56 | software</EM></Q>). Nel 1984 Richard M. Stallman <A TITLE="storia |
| 57 | del progetto GNU" | 57 | del progetto GNU" |
| 58 | HREF="http://www.it.gnu.org/gnu/thegnuproject.it.html">diede vita al | 58 | HREF="http://www.it.gnu.org/gnu/thegnuproject.it.html">diede vita al |
| 59 | progetto GNU</A>, con lo scopo di tradurre in pratica il concetto di | 59 | progetto GNU</A>, con lo scopo di tradurre in pratica il concetto di |
| 60 | software libero, e creò la <Q>Free Software Foundation</Q> per | 60 | software libero, e creò la <Q>Free Software Foundation</Q> per |
| 61 | dare supporto logistico, legale ed economico al progetto GNU. | 61 | dare supporto logistico, legale ed economico al progetto GNU. |
| 62 | </P> | 62 | </P> |
| 63 | 63 | ||
| @@ -66,19 +66,19 @@ | |||
| 66 | </A></H3> | 66 | </A></H3> |
| 67 | 67 | ||
| 68 | <P> | 68 | <P> |
| 69 | La <EM>licenza d'uso</EM> è un documento legale generalmente | 69 | La <EM>licenza d'uso</EM> è un documento legale generalmente |
| 70 | distribuito assieme a ogni programma. Essa, appoggiandosi alle norme | 70 | distribuito assieme a ogni programma. Essa, appoggiandosi alle norme |
| 71 | sul diritto d'autore, specifica diritti e doveri di chi riceve tale | 71 | sul diritto d'autore, specifica diritti e doveri di chi riceve tale |
| 72 | programma. | 72 | programma. |
| 73 | </P> | 73 | </P> |
| 74 | <P> | 74 | <P> |
| 75 | Gran parte delle licenze comunemente usate sono <EM>proprietarie</EM>, | 75 | Gran parte delle licenze comunemente usate sono <EM>proprietarie</EM>, |
| 76 | cioè non libere, in quanto non garantiscono le quattro libertà. Quasi | 76 | cioè non libere, in quanto non garantiscono le quattro libertà . Quasi |
| 77 | sempre tali licenze non consentono infatti la libera copia del | 77 | sempre tali licenze non consentono infatti la libera copia del |
| 78 | programma, né la sua modifica. Spesso, se il programma è installato | 78 | programma, né la sua modifica. Spesso, se il programma è installato |
| 79 | sul computer di casa, la licenza impedisce persino di installarlo sul | 79 | sul computer di casa, la licenza impedisce persino di installarlo sul |
| 80 | proprio portatile (per utilizzare il programma fuori casa); se il | 80 | proprio portatile (per utilizzare il programma fuori casa); se il |
| 81 | programma è utilizzato in uno studio professionale, non consente di | 81 | programma è utilizzato in uno studio professionale, non consente di |
| 82 | tenerlo installato su un computer di riserva, nel caso che quello | 82 | tenerlo installato su un computer di riserva, nel caso che quello |
| 83 | principale si guasti. | 83 | principale si guasti. |
| 84 | </P> | 84 | </P> |
| @@ -87,50 +87,50 @@ | |||
| 87 | TITLE="traduzione della licenza GNU GPL" | 87 | TITLE="traduzione della licenza GNU GPL" |
| 88 | HREF="http://softwarelibero.it/gnudoc/gpl.it.txt">GNU GPL</A>)</EM>, | 88 | HREF="http://softwarelibero.it/gnudoc/gpl.it.txt">GNU GPL</A>)</EM>, |
| 89 | al contrario, concede all'utente del programma tutte e quattro le | 89 | al contrario, concede all'utente del programma tutte e quattro le |
| 90 | libertà suddette. Inoltre si occupa anche di proteggerle: chi | 90 | libertà suddette. Inoltre si occupa anche di proteggerle: chi |
| 91 | modifichi un programma protetto da GPL e lo distribuisca con tali | 91 | modifichi un programma protetto da GPL e lo distribuisca con tali |
| 92 | modifiche, deve distribuirlo sotto licenza GPL. È grazie a questo | 92 | modifiche, deve distribuirlo sotto licenza GPL. È grazie a questo |
| 93 | tipo di protezione che la GPL è attualmente la licenza più usata per | 93 | tipo di protezione che la GPL è attualmente la licenza più usata per |
| 94 | il software libero. | 94 | il software libero. |
| 95 | </P> | 95 | </P> |
| 96 | <P> | 96 | <P> |
| 97 | Con un gioco di parole, il nome dato a questo tipo di protezione | 97 | Con un gioco di parole, il nome dato a questo tipo di protezione |
| 98 | è <EM>permesso d'autore</EM> (in inglese <A TITLE="definizione di | 98 | è <EM>permesso d'autore</EM> (in inglese <A TITLE="definizione di |
| 99 | copyleft (inglese)" LANG="en" | 99 | copyleft (inglese)" LANG="en" |
| 100 | HREF="http://www.it.gnu.org/copyleft/copyleft.html"><EM>copyleft</EM></A>): | 100 | HREF="http://www.it.gnu.org/copyleft/copyleft.html"><EM>copyleft</EM></A>): |
| 101 | è il criterio che prevede che le modifiche ad un programma possano | 101 | è il criterio che prevede che le modifiche ad un programma possano |
| 102 | essere distribuite solo con la stessa licenza del programma originale. | 102 | essere distribuite solo con la stessa licenza del programma originale. |
| 103 | Le licenze proprietarie usano le norme sul diritto d'autore (copyright | 103 | Le licenze proprietarie usano le norme sul diritto d'autore (copyright |
| 104 | in inglese) per togliere libertà agli utenti di un programma; il | 104 | in inglese) per togliere libertà agli utenti di un programma; il |
| 105 | permesso d'autore usa le stesse norme per garantire quelle libertà e | 105 | permesso d'autore usa le stesse norme per garantire quelle libertà e |
| 106 | per proteggerle. | 106 | per proteggerle. |
| 107 | </P> | 107 | </P> |
| 108 | <P> | 108 | <P> |
| 109 | La GNU GPL non è unica nel suo genere. Diverse <A TITLE="lista di | 109 | La GNU GPL non è unica nel suo genere. Diverse <A TITLE="lista di |
| 110 | licenze libere e non" | 110 | licenze libere e non" |
| 111 | HREF="http://www.it.gnu.org/licenses/license-list.it.html">altre | 111 | HREF="http://www.it.gnu.org/licenses/license-list.it.html">altre |
| 112 | licenze</A> garantiscono le quattro libertà e si possono pertanto | 112 | licenze</A> garantiscono le quattro libertà e si possono pertanto |
| 113 | qualificare come licenze per il software libero. Fra queste, merita | 113 | qualificare come licenze per il software libero. Fra queste, merita |
| 114 | una speciale menzione per la sua diffusione la <A TITLE="la licenza | 114 | una speciale menzione per la sua diffusione la <A TITLE="la licenza |
| 115 | BSD (in inglese)" LANG="en" | 115 | BSD (in inglese)" LANG="en" |
| 116 | HREF="http://www.freebsd.org/copyright/license.html">licenza BSD</A>, | 116 | HREF="http://www.freebsd.org/copyright/license.html">licenza BSD</A>, |
| 117 | la cui principale differenza dalla GPL è che, non essendo basata sul | 117 | la cui principale differenza dalla GPL è che, non essendo basata sul |
| 118 | permesso d'autore, non ha fra i propri obiettivi quello di proteggere | 118 | permesso d'autore, non ha fra i propri obiettivi quello di proteggere |
| 119 | la libertà del software cui è applicata. Chi infatti modifichi un | 119 | la libertà del software cui è applicata. Chi infatti modifichi un |
| 120 | programma protetto da BSD, può distribuirlo con le modifiche usando | 120 | programma protetto da BSD, può distribuirlo con le modifiche usando |
| 121 | qualunque licenza. | 121 | qualunque licenza. |
| 122 | </P> | 122 | </P> |
| 123 | <P> | 123 | <P> |
| 124 | Sia BSD che GPL hanno pro e contro. La licenza GPL riflette l'idea | 124 | Sia BSD che GPL hanno pro e contro. La licenza GPL riflette l'idea |
| 125 | della cooperazione: se io concedo ad altri la libertà di modificare e | 125 | della cooperazione: se io concedo ad altri la libertà di modificare e |
| 126 | redistribuire il mio programma, costoro sono tenuti a concedere le | 126 | redistribuire il mio programma, costoro sono tenuti a concedere le |
| 127 | stesse libertà sulle loro modifiche. Il problema è che alcuni vedono | 127 | stesse libertà sulle loro modifiche. Il problema è che alcuni vedono |
| 128 | questo vincolo come un'imposizione ingenerosa, se non addirittura una | 128 | questo vincolo come un'imposizione ingenerosa, se non addirittura una |
| 129 | restrizione insopportabile. La licenza BSD riflette l'idea del dono | 129 | restrizione insopportabile. La licenza BSD riflette l'idea del dono |
| 130 | liberale: chiunque può fare ciò che meglio crede del mio programma. | 130 | liberale: chiunque può fare ciò che meglio crede del mio programma. |
| 131 | Il problema è che questo significa che chiunque può redistribuire | 131 | Il problema è che questo significa che chiunque può redistribuire |
| 132 | anche in forma chiusa con una licenza proprietaria un programma BSD | 132 | anche in forma chiusa con una licenza proprietaria un programma BSD |
| 133 | modificato, impedendo così ai propri acquirenti di modificarlo e | 133 | modificato, impedendo così ai propri acquirenti di modificarlo e |
| 134 | redistribuirlo a loro volta. | 134 | redistribuirlo a loro volta. |
| 135 | </P> | 135 | </P> |
| 136 | 136 | ||
| @@ -141,24 +141,24 @@ | |||
| 141 | <P> | 141 | <P> |
| 142 | <DL> | 142 | <DL> |
| 143 | 143 | ||
| 144 | <DT>Il software libero è gratuito | 144 | <DT>Il software libero è gratuito |
| 145 | 145 | ||
| 146 | <DD>È falso: la libertà del software non ha nulla a che vedere con | 146 | <DD>È falso: la libertà del software non ha nulla a che vedere con |
| 147 | il suo prezzo. Benché gran parte del software libero più diffuso | 147 | il suo prezzo. Benché gran parte del software libero più diffuso |
| 148 | sia distribuito gratuitamente, ci sono programmatori che vivono | 148 | sia distribuito gratuitamente, ci sono programmatori che vivono |
| 149 | della vendita e della manutenzione dei programmi liberi da loro | 149 | della vendita e della manutenzione dei programmi liberi da loro |
| 150 | creati. | 150 | creati. |
| 151 | 151 | ||
| 152 | <DT>Il software gratuito è libero | 152 | <DT>Il software gratuito è libero |
| 153 | 153 | ||
| 154 | <DD>È falso. Molti programmi proprietari vengono distribuiti | 154 | <DD>È falso. Molti programmi proprietari vengono distribuiti |
| 155 | gratuitamente. | 155 | gratuitamente. |
| 156 | 156 | ||
| 157 | <DT>Il software libero è privo di copyright | 157 | <DT>Il software libero è privo di copyright |
| 158 | 158 | ||
| 159 | <DD>È falso. Benché si possa rinunciare al copyright su un proprio | 159 | <DD>È falso. Benché si possa rinunciare al copyright su un proprio |
| 160 | programma e renderlo così di pubblico dominio, la gran parte del | 160 | programma e renderlo così di pubblico dominio, la gran parte del |
| 161 | software libero è distribuito con una licenza. Per esempio, sono | 161 | software libero è distribuito con una licenza. Per esempio, sono |
| 162 | licenze di copyright la licenza BSD e la GNU GPL, anche se per | 162 | licenze di copyright la licenza BSD e la GNU GPL, anche se per |
| 163 | qualificare quest'ultima spesso si parla di permesso d'autore | 163 | qualificare quest'ultima spesso si parla di permesso d'autore |
| 164 | (copyleft). | 164 | (copyleft). |
| @@ -167,17 +167,17 @@ | |||
| 167 | amministrazione, ma anche nei paesi poveri, ridurrebbe i costi | 167 | amministrazione, ma anche nei paesi poveri, ridurrebbe i costi |
| 168 | relativi al software | 168 | relativi al software |
| 169 | 169 | ||
| 170 | <DD>Potrebbe essere vero, ma una seria valutazione dei costi è molto | 170 | <DD>Potrebbe essere vero, ma una seria valutazione dei costi è molto |
| 171 | difficile. Qualunque tipo di software, se usato in ambito non | 171 | difficile. Qualunque tipo di software, se usato in ambito non |
| 172 | domestico, ha dei costi di manutenzione che sono solitamente | 172 | domestico, ha dei costi di manutenzione che sono solitamente |
| 173 | maggiori del suo prezzo di acquisto. I motivi per sostenere l'uso | 173 | maggiori del suo prezzo di acquisto. I motivi per sostenere l'uso |
| 174 | del software libero, specie in ambiti pubblici, riguardano anzitutto | 174 | del software libero, specie in ambiti pubblici, riguardano anzitutto |
| 175 | la libertà, non il prezzo. | 175 | la libertà , non il prezzo. |
| 176 | 176 | ||
| 177 | <!-- Discorso inadatto ad un documento introduttivo | 177 | <!-- Discorso inadatto ad un documento introduttivo |
| 178 | <DT>Chi scrive un programma libero lo deve pubblicare su Internet | 178 | <DT>Chi scrive un programma libero lo deve pubblicare su Internet |
| 179 | 179 | ||
| 180 | <DD>È una falsa argomentazione spesso usata per scoraggiare | 180 | <DD>È una falsa argomentazione spesso usata per scoraggiare |
| 181 | un'azienda dall'uso di una licenza libera per i suoi programmi. | 181 | un'azienda dall'uso di una licenza libera per i suoi programmi. |
| 182 | Sia gli autori che gli acquirenti di un programma libero hanno il | 182 | Sia gli autori che gli acquirenti di un programma libero hanno il |
| 183 | diritto di distribuirlo a titolo oneroso o gratuito, ma non hanno | 183 | diritto di distribuirlo a titolo oneroso o gratuito, ma non hanno |
| @@ -192,16 +192,16 @@ | |||
| 192 | </A></H3> | 192 | </A></H3> |
| 193 | 193 | ||
| 194 | <P> | 194 | <P> |
| 195 | Nel 1998 Bruce Perens, Eric Raymond e altre personalità nel campo del | 195 | Nel 1998 Bruce Perens, Eric Raymond e altre personalità nel campo del |
| 196 | software libero si convinsero che i principi di libertà associati ad | 196 | software libero si convinsero che i principi di libertà associati ad |
| 197 | esso fossero malvisti nel mondo degli affari, a causa della loro | 197 | esso fossero malvisti nel mondo degli affari, a causa della loro |
| 198 | carica ideologica. Decisero perciò di evitare accuratamente ogni | 198 | carica ideologica. Decisero perciò di evitare accuratamente ogni |
| 199 | riferimento a considerazioni politiche o di principio, e di lanciare | 199 | riferimento a considerazioni politiche o di principio, e di lanciare |
| 200 | una campagna di promozione del software libero che ne mettesse in luce | 200 | una campagna di promozione del software libero che ne mettesse in luce |
| 201 | i numerosi <A TITLE="un discorso di Robert Chassell di FSF" | 201 | i numerosi <A TITLE="un discorso di Robert Chassell di FSF" |
| 202 | HREF="http://softwarelibero.it/altri/economia-sl.shtml">vantaggi | 202 | HREF="http://softwarelibero.it/altri/economia-sl.shtml">vantaggi |
| 203 | pratici</A>, come la facilità di adattamento, l'affidabilità, la | 203 | pratici</A>, come la facilità di adattamento, l'affidabilità , la |
| 204 | sicurezza, la conformità agli standard, l'indipendenza dai singoli | 204 | sicurezza, la conformità agli standard, l'indipendenza dai singoli |
| 205 | fornitori. A tal fine scrissero la <Q><A TITLE="la definizione di | 205 | fornitori. A tal fine scrissero la <Q><A TITLE="la definizione di |
| 206 | Open Source (in inglese)" LANG="en" | 206 | Open Source (in inglese)" LANG="en" |
| 207 | HREF="http://www.opensource.org/docs/definition.html">Open Source | 207 | HREF="http://www.opensource.org/docs/definition.html">Open Source |
| @@ -210,19 +210,19 @@ | |||
| 210 | HREF="http://opensource.org/"><EM>open source</EM></A>. | 210 | HREF="http://opensource.org/"><EM>open source</EM></A>. |
| 211 | </P> | 211 | </P> |
| 212 | <P> | 212 | <P> |
| 213 | Il movimento open source fu un successo, e contribuì a sdoganare il | 213 | Il movimento open source fu un successo, e contribuì a sdoganare il |
| 214 | concetto di software libero in campo aziendale, dove era guardato con | 214 | concetto di software libero in campo aziendale, dove era guardato con |
| 215 | sospetto o condiscendenza. Un esempio di questo successo è | 215 | sospetto o condiscendenza. Un esempio di questo successo è |
| 216 | l'atteggiamento dell'IBM, l'azienda che ha fatto di gran lunga i | 216 | l'atteggiamento dell'IBM, l'azienda che ha fatto di gran lunga i |
| 217 | maggiori investimenti nel campo del software libero, la quale parla | 217 | maggiori investimenti nel campo del software libero, la quale parla |
| 218 | esclusivamente di open source, mai di software libero. | 218 | esclusivamente di open source, mai di software libero. |
| 219 | </P> | 219 | </P> |
| 220 | <P> | 220 | <P> |
| 221 | La voluta neutralità del movimento open source verso gli aspetti | 221 | La voluta neutralità del movimento open source verso gli aspetti |
| 222 | etici e politici del software libero è la caratteristica sostanziale | 222 | etici e politici del software libero è la caratteristica sostanziale |
| 223 | che lo distingue dalla filosofia del software libero, che al contrario | 223 | che lo distingue dalla filosofia del software libero, che al contrario |
| 224 | pone l'accento sulle motivazioni ideali. Parlare di software libero | 224 | pone l'accento sulle motivazioni ideali. Parlare di software libero |
| 225 | piuttosto che di open source è una questione politica piuttosto che | 225 | piuttosto che di open source è una questione politica piuttosto che |
| 226 | pratica; i due movimenti concordano infatti sulle licenze considerate | 226 | pratica; i due movimenti concordano infatti sulle licenze considerate |
| 227 | accettabili, ed hanno obiettivi e mezzi comuni. | 227 | accettabili, ed hanno obiettivi e mezzi comuni. |
| 228 | </P> | 228 | </P> |
| @@ -235,7 +235,7 @@ | |||
| 235 | La <A TITLE="usi commerciali del software libero, di Alessandro | 235 | La <A TITLE="usi commerciali del software libero, di Alessandro |
| 236 | Rubini" | 236 | Rubini" |
| 237 | HREF="http://www.it.gnu.org/philosophy/software-libre-commercial-viability.it.html">rilevanza | 237 | HREF="http://www.it.gnu.org/philosophy/software-libre-commercial-viability.it.html">rilevanza |
| 238 | economica</A> del software libero è ancora molto ridotta, ma è in | 238 | economica</A> del software libero è ancora molto ridotta, ma è in |
| 239 | fortissima crescita ormai da alcuni anni, e tutto consente di supporre | 239 | fortissima crescita ormai da alcuni anni, e tutto consente di supporre |
| 240 | che tale crescita <A TITLE="prospettive del software libero, gruppo di | 240 | che tale crescita <A TITLE="prospettive del software libero, gruppo di |
| 241 | studio dell'UE" | 241 | studio dell'UE" |
| @@ -246,7 +246,7 @@ | |||
| 246 | tecnici ed economici</A> del software libero. | 246 | tecnici ed economici</A> del software libero. |
| 247 | </P> | 247 | </P> |
| 248 | <P> | 248 | <P> |
| 249 | Ad oggi, il software libero è ampiamente diffuso in ambito accademico, | 249 | Ad oggi, il software libero è ampiamente diffuso in ambito accademico, |
| 250 | industriale e fra gli appassionati di calcolatori, soprattutto grazie | 250 | industriale e fra gli appassionati di calcolatori, soprattutto grazie |
| 251 | ai sistemi GNU/Linux. Questi sistemi liberi sono disponibili a costi | 251 | ai sistemi GNU/Linux. Questi sistemi liberi sono disponibili a costi |
| 252 | molto bassi, ben inferiori a quelli di analoghi sistemi proprietari. | 252 | molto bassi, ben inferiori a quelli di analoghi sistemi proprietari. |
| @@ -254,40 +254,40 @@ | |||
| 254 | buona cultura di base nel campo del software. | 254 | buona cultura di base nel campo del software. |
| 255 | </P> | 255 | </P> |
| 256 | <P> | 256 | <P> |
| 257 | In ambito accademico viene molto apprezzata la possibilità di | 257 | In ambito accademico viene molto apprezzata la possibilità di |
| 258 | personalizzare ogni parte del sistema, visto che i programmi liberi | 258 | personalizzare ogni parte del sistema, visto che i programmi liberi |
| 259 | sono liberamente modificabili (libertà numero uno). In ambito | 259 | sono liberamente modificabili (libertà numero uno). In ambito |
| 260 | industriale, si apprezza l'affidabilità dei sistemi liberi, dovuta al | 260 | industriale, si apprezza l'affidabilità dei sistemi liberi, dovuta al |
| 261 | fatto che quando un utente corregge un errore in un programma | 261 | fatto che quando un utente corregge un errore in un programma |
| 262 | solitamente rende disponibile la correzione agli altri utenti (libertà | 262 | solitamente rende disponibile la correzione agli altri utenti (libertà |
| 263 | numero tre). Gli appassionati di calcolatori apprezzano lo spirito di | 263 | numero tre). Gli appassionati di calcolatori apprezzano lo spirito di |
| 264 | condivisione esistente fra gli utenti di software libero. | 264 | condivisione esistente fra gli utenti di software libero. |
| 265 | </P> | 265 | </P> |
| 266 | <P> | 266 | <P> |
| 267 | Ma le implicazioni dell'uso del software libero non sono soltanto | 267 | Ma le implicazioni dell'uso del software libero non sono soltanto |
| 268 | tecniche ed economiche, perché il software da tempo ormai è avviato ad | 268 | tecniche ed economiche, perché il software da tempo ormai è avviato ad |
| 269 | occupare un ruolo di primo piano nella nostra vita quotidiana, ed è | 269 | occupare un ruolo di primo piano nella nostra vita quotidiana, ed è |
| 270 | destinato a cambiare in maniera profonda la società. | 270 | destinato a cambiare in maniera profonda la società . |
| 271 | </P> | 271 | </P> |
| 272 | <P> | 272 | <P> |
| 273 | È per queste ragioni che la nostra libertà futura dipenderà anche | 273 | È per queste ragioni che la nostra libertà futura dipenderà anche |
| 274 | dalla capacità di ognuno di noi di controllare il software. È per | 274 | dalla capacità di ognuno di noi di controllare il software. È per |
| 275 | queste ragioni che ai tradizionali principi di libertà sessuale, di | 275 | queste ragioni che ai tradizionali principi di libertà sessuale, di |
| 276 | culto, di movimento, di espressione deve essere affiancata la libertà | 276 | culto, di movimento, di espressione deve essere affiancata la libertà |
| 277 | del software. È per queste ragioni che la nostra libertà futura | 277 | del software. È per queste ragioni che la nostra libertà futura |
| 278 | dipenderà anche dall'uso di software libero. | 278 | dipenderà anche dall'uso di software libero. |
| 279 | </P> | 279 | </P> |
| 280 | 280 | ||
| 281 | <P> | 281 | <P> |
| 282 | <EM>scritto da <A TITLE="pot@softwarelibero.it" | 282 | <EM>scritto da <A TITLE="pot@softwarelibero.it" |
| 283 | HREF="mailto:pot@softwarelibero.it">Francesco Potortì</A> per l'<A | 283 | HREF="mailto:pot@softwarelibero.it">Francesco Potortì</A> per l'<A |
| 284 | TITLE="il sito dell'Associazione Software Libero" | 284 | TITLE="il sito dell'Associazione Software Libero" |
| 285 | HREF="http://softwarelibero.it/">Associazione Software | 285 | HREF="http://softwarelibero.it/">Associazione Software |
| 286 | Libero</A></EM> | 286 | Libero</A></EM> |
| 287 | </P> | 287 | </P> |
| 288 | <HR NOSHADE> | 288 | <HR NOSHADE> |
| 289 | <P> | 289 | <P> |
| 290 | Copyright © 2002 Francesco Potortì | 290 | Copyright © 2002 Francesco Potortì |
| 291 | <BR> | 291 | <BR> |
| 292 | Ultima versione ipertestuale disponibile su <A TITLE="versione | 292 | Ultima versione ipertestuale disponibile su <A TITLE="versione |
| 293 | stampabile" | 293 | stampabile" |
| @@ -305,7 +305,7 @@ time-stamp-active: t | |||
| 305 | time-stamp-time-zone: "GMT" | 305 | time-stamp-time-zone: "GMT" |
| 306 | time-stamp-format: "%:y-%02m-%02d" | 306 | time-stamp-format: "%:y-%02m-%02d" |
| 307 | time-stamp-line-limit: 30 | 307 | time-stamp-line-limit: 30 |
| 308 | time-stamp-start: "ultima\\s-+modifica\\s-+è\\s-+del\\s-+" | 308 | time-stamp-start: "ultima\\s-+modifica\\s-+è\\s-+del\\s-+" |
| 309 | time-stamp-end: "\\." | 309 | time-stamp-end: "\\." |
| 310 | End: | 310 | End: |
| 311 | --> | 311 | --> |