# HG changeset patch # User Miles Bader # Date 1203847747 0 # Node ID f991f10f15ec9bd068a8e97577c0f6f64a4d725b # Parent 773ae07da318c46cbdf09841f19bf346ffa95970# Parent 639e83cd103d0a2cc456511da1c439c7cba7f7eb Merge from emacs--rel--22 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1074 diff -r 773ae07da318 -r f991f10f15ec ChangeLog --- a/ChangeLog Sun Feb 24 06:43:15 2008 +0000 +++ b/ChangeLog Sun Feb 24 10:09:07 2008 +0000 @@ -6,6 +6,10 @@ * README.unicode: Split into admin/notes/unicode,font-backend and remove. +2008-02-10 Matthew Luckie (tiny change) + + * configure.in (arm*-*-freebsd*): Added. + 2008-02-09 Dan Nicolaescu * configure.in (LIBX11_MACHINE, HAVE_XFREE386): Remove code @@ -1394,7 +1398,7 @@ 2003-04-28 Francesco Potort,Al(B - * configure.in: Undo last (RMS') change, as it is useless, per + * configure.in: Undo last (RMS') change, as it is useless, per Dave Love. 2003-04-08 Richard M. Stallman @@ -1565,7 +1569,7 @@ 2002-10-30 Dave Love - * configure.in: Require autoconf 2.53. Test for pty.h, + * configure.in: Require autoconf 2.53. Test for pty.h, sys/mman.h, sys/param.h, mremap, memmove. (AH_BOTTOM): Maybe include strings.h. Add local variables for mode. (AC_PROG_YACC): Delete. @@ -3352,7 +3356,7 @@ 1997-04-09 Marcus G. Daniels - * configure.in (doug_lea_malloc): First check for SYSTEM_MALLOC, + * configure.in (doug_lea_malloc): First check for SYSTEM_MALLOC, in case it is desirable to disable the GNU malloc features with glibc. 1997-04-08 Marcus G. Daniels diff -r 773ae07da318 -r f991f10f15ec configure --- a/configure Sun Feb 24 06:43:15 2008 +0000 +++ b/configure Sun Feb 24 10:09:07 2008 +0000 @@ -2357,6 +2357,7 @@ opsys=freebsd case "${canonical}" in alpha*-*-freebsd*) machine=alpha ;; + arm*-*-freebsd*) machine=arm ;; ia64-*-freebsd*) machine=ia64 ;; sparc64-*-freebsd*) machine=sparc ;; powerpc-*-freebsd*) machine=macppc ;; diff -r 773ae07da318 -r f991f10f15ec configure.in --- a/configure.in Sun Feb 24 06:43:15 2008 +0000 +++ b/configure.in Sun Feb 24 10:09:07 2008 +0000 @@ -285,6 +285,7 @@ opsys=freebsd case "${canonical}" in alpha*-*-freebsd*) machine=alpha ;; + arm*-*-freebsd*) machine=arm ;; ia64-*-freebsd*) machine=ia64 ;; sparc64-*-freebsd*) machine=sparc ;; powerpc-*-freebsd*) machine=macppc ;; diff -r 773ae07da318 -r f991f10f15ec doc/lispref/ChangeLog --- a/doc/lispref/ChangeLog Sun Feb 24 06:43:15 2008 +0000 +++ b/doc/lispref/ChangeLog Sun Feb 24 10:09:07 2008 +0000 @@ -20,6 +20,11 @@ * objects.texi (Equality Predicates): Mention equal-including-properties. +2008-02-07 Richard Stallman + + * windows.texi (Window Start): Mention the feature of moving + window-start to start of line. + 2008-02-07 Jan Dj,Ad(Brv * keymaps.texi (Tool Bar): Document rtl property. diff -r 773ae07da318 -r f991f10f15ec doc/lispref/windows.texi --- a/doc/lispref/windows.texi Sun Feb 24 06:43:15 2008 +0000 +++ b/doc/lispref/windows.texi Sun Feb 24 10:09:07 2008 +0000 @@ -1229,6 +1229,15 @@ at the upper left corner of the window. It is usually, but not inevitably, at the beginning of a text line. + After switching windows or buffers, and in some other cases, if the +window start is in the middle of a line, Emacs adjusts the window +start to the start of a line. This prevents certain operations from +leaving the window start at a meaningless point within a line. This +feature may interfere with testing some Lisp code by executing it +using the commands of Lisp mode, because they trigger this +readjustment. To test such code, put it into a command and bind the +command to a key. + @defun window-start &optional window @cindex window top line This function returns the display-start position of window @@ -1296,10 +1305,10 @@ screen. If this does place point off screen, the display routines move point to the left margin on the middle line in the window. -For example, if point @w{is 1} and you set the start of the window @w{to -2}, then point would be ``above'' the top of the window. The display -routines will automatically move point if it is still 1 when redisplay -occurs. Here is an example: +For example, if point @w{is 1} and you set the start of the window +@w{to 37}, the start of the next line, point will be ``above'' the top +of the window. The display routines will automatically move point if +it is still 1 when redisplay occurs. Here is an example: @example @group @@ -1321,15 +1330,17 @@ @group (set-window-start (selected-window) - (1+ (window-start))) -@result{} 2 + (save-excursion + (goto-char 1) + (forward-line 1) + (point))) +@result{} 37 @end group @group ;; @r{Here is what @samp{foo} looks like after executing} ;; @r{the @code{set-window-start} expression.} ---------- Buffer: foo ---------- -his is the contents of buffer foo. 2 3 @point{}4 diff -r 773ae07da318 -r f991f10f15ec doc/misc/ChangeLog --- a/doc/misc/ChangeLog Sun Feb 24 06:43:15 2008 +0000 +++ b/doc/misc/ChangeLog Sun Feb 24 10:09:07 2008 +0000 @@ -1,3 +1,8 @@ +2008-02-05 Juanma Barranquero + + * org.texi (Setting tags, In-buffer settings): + * rcirc.texi (rcirc commands): Replace `legal' with `valid'. + 2008-02-24 Katsumi Yamaoka * gnus-news.texi: Mention that spaces and tabs are allowed in the diff -r 773ae07da318 -r f991f10f15ec doc/misc/org.texi --- a/doc/misc/org.texi Sun Feb 24 06:43:15 2008 +0000 +++ b/doc/misc/org.texi Sun Feb 24 10:09:07 2008 +0000 @@ -3255,7 +3255,7 @@ If at least one tag has a selection key, pressing @kbd{C-c C-c} will automatically present you with a special interface, listing inherited -tags, the tags of the current headline, and a list of all legal tags +tags, the tags of the current headline, and a list of all valid tags with corresponding keys@footnote{Keys will automatically be assigned to tags which have no configured keys.}. In this interface, you can use the following keys: @@ -7367,7 +7367,7 @@ constSI @r{@file{constants.el} should use the SI unit system} @end example @item #+TAGS: TAG1(c1) TAG2(c2) -These lines (several such lines are allowed) specify the legal tags in +These lines (several such lines are allowed) specify the valid tags in this file, and (potentially) the corresponding @emph{fast tag selection} keys. The corresponding variable is @code{org-tag-alist}. @item #+TBLFM: diff -r 773ae07da318 -r f991f10f15ec doc/misc/rcirc.texi --- a/doc/misc/rcirc.texi Sun Feb 24 06:43:15 2008 +0000 +++ b/doc/misc/rcirc.texi Sun Feb 24 10:09:07 2008 +0000 @@ -305,7 +305,7 @@ @end example This will try to change your nick to @code{"alex}. Usually this will -fail because the double quote character is not a legal character for +fail because the double quote character is not a valid character for nicks. @cindex case insensitive commands diff -r 773ae07da318 -r f991f10f15ec etc/AUTHORS --- a/etc/AUTHORS Sun Feb 24 06:43:15 2008 +0000 +++ b/etc/AUTHORS Sun Feb 24 10:09:07 2008 +0000 @@ -24,6 +24,8 @@ Adrian Lanz: changed mail-source.el spam.el +,AF(Bvar Arnfj,Av(Br,Ap(B Bjarmason: changed rcirc.el + Agust,Am(Bn Mart,Am(Bn: changed flyspell.el ispell.el Aidan Kehoe: changed lread.c mm-util.el erc.el latin-ltx.el objects.texi @@ -343,7 +345,7 @@ Chong Yidong: changed cus-edit.el files.el simple.el longlines.el xdisp.c display.texi custom.el files.texi image-mode.el info.el keyboard.c compile.el custom.texi text.texi xterm.c frames.texi image.c mouse.el - misc.texi startup.el wid-edit.el and 300 other files + misc.texi startup.el wid-edit.el and 301 other files Chris Hanson: changed xscheme.el scheme.el xterm.c hpux.h x11term.c hp9000s300.h keyboard.c process.c texinfmt.el emacsclient.c sort.el @@ -400,6 +402,8 @@ Craig Mcdaniel: changed sheap.c +D. E. Evans: changed basic.texi + Daiki Ueno: wrote pgg-def.el pgg-gpg.el pgg-parse.el pgg-pgp.el pgg-pgp5.el pgg.el starttls.el and changed gnus-sum.el mml2015.el faces.el gnus-agent.el gnus-srvr.el @@ -423,9 +427,9 @@ Dan Nicolaescu: wrote iris-ansi.el romanian.el and changed xterm.el term.el hideshow.el vc-hg.el files.el isearch.el - sh-script.el icon.el lisp.h vc.el cus-edit.el faces.el font-lock.el - grep.el verilog-mode.el diff-mode.el eterm-color.ti ibuffer.el - replace.el rxvt.el term.c and 187 other files + sh-script.el icon.el lisp.h vc.el verilog-mode.el cus-edit.el faces.el + font-lock.el grep.el diff-mode.el eterm-color.ti ibuffer.el replace.el + rxvt.el term.c and 187 other files Daniel Brockman: changed cus-start.el format-spec.el ibuffer.el rcirc.el @@ -667,7 +671,7 @@ and changed msdos.c Makefile.in makefile.w32-in files.el info.el fileio.c startup.el mainmake.v2 rmail.el config.bat menu-bar.el simple.el pc-win.el msdos.h internal.el xfaces.c emacs.c frame.c INSTALL dosfns.c - mule-cmds.el and 536 other files + mule-cmds.el and 537 other files Emanuele Giaquinta: changed rxvt.el configure.in etags.c frame.el gnus-faq.texi sh-script.el text.texi @@ -870,7 +874,7 @@ calendar.texi COPYING appt.el Makefile.in files.el sh-script.el timeclock.el cal-menu.el configure.in simple.el tex-mode.el calc.texi complete.el fr-refcard.tex orgcard.tex programs.texi startup.el - and 245 other files + and 247 other files Glynn Clements: wrote gamegrid.el snake.el tetris.el @@ -1308,8 +1312,8 @@ Juanma Barranquero: changed makefile.w32-in subr.el faces.el files.el help-fns.el bs.el w32fns.c buffer.c simple.el emacsclient.c replace.el - eval.c org.el idlwave.el ido.el process.c vhdl-mode.el window.c xdisp.c - allout.el cperl-mode.el and 651 other files + eval.c org.el desktop.el idlwave.el ido.el process.c vhdl-mode.el + window.c xdisp.c allout.el and 658 other files Juergen Hoetzel: changed url-handlers.el @@ -1325,8 +1329,8 @@ Juri Linkov: changed info.el simple.el isearch.el replace.el compile.el faces.el display.texi grep.el descr-text.el cus-edit.el dired.el - dired-aux.el edebug.el compare-w.el files.el lisp-mode.el lisp.el - man.el menu-bar.el modes.texi mule.el and 224 other files + dired-aux.el edebug.el startup.el compare-w.el desktop.el files.el + lisp-mode.el lisp.el man.el menu-bar.el and 224 other files Justin Sheehy: changed gnus-sum.el nntp.el @@ -1561,8 +1565,8 @@ and changed erc.el erc-match.el erc-nets.el erc-nickserv.el erc-button.el erc-compat.el erc-dcc.el erc-fill.el erc-list.el erc-track.el Makefile erc-autoaway.el erc-autojoin.el erc-bbdb.el erc-ezbounce.el erc-menu.el - erc-netsplit.el erc-nicklist.el erc-notify.el erc-sound.el subr.el - tempo.el + erc-netsplit.el erc-nicklist.el erc-notify.el erc-sound.el objects.texi + and 3 other files Lawrence R. Dodd: wrote dired-x.el and changed fortran.el ispell.el sendmail.el cmuscheme.el comint.el @@ -1729,7 +1733,7 @@ Martin Rudalics: changed cus-start.el cus-edit.el files.el wid-edit.el window.el flyspell.el font-lock.el mouse.el syntax.c xdisp.c compile.el complete.el dired.el frame.c frame.el insdel.c ispell.el keyboard.c - macmenu.c macterm.c msdos.c and 64 other files + macmenu.c macterm.c msdos.c and 65 other files Martin Stjernholm: wrote cc-bytecomp.el and changed cc-engine.el cc-cmds.el cc-langs.el cc-defs.el cc-mode.el @@ -1778,6 +1782,8 @@ Matt Swift: changed compile.el dired.el editfns.c lisp-mode.el mm-decode.el outline.el rx.el simple.el startup.el +Matthew Luckie: changed configure.in + Matthew Mundell: changed calendar.texi diary-lib.el files.texi type-break.el debugging.texi display.texi edebug.texi editfns.c eval.c fileio.c frames.texi help.texi internals.texi modes.texi nonascii.texi @@ -1796,9 +1802,9 @@ Michael Albinus: wrote tramp-ftp.el tramp-smb.el and changed tramp.el tramp.texi tramp-vc.el ange-ftp.el files.el - tramp-util.el files.texi nnml.el tramp-uu.el trampver.el vc.el - dired-x.el dired.el faq.texi ffap.el find-dired.el locate.el mini.texi - rcompile.el socks.el tramp*.el and 4 other files + tramp-util.el trampver.el files.texi nnml.el tramp-uu.el trampver.texi + vc.el dired-x.el dired.el faq.texi ffap.el find-dired.el locate.el + mini.texi rcompile.el socks.el and 4 other files Michael Ben-Gershon: changed acorn.h configure.in riscix1-1.h riscix1-2.h unexec.c @@ -1832,9 +1838,9 @@ ediff-vers.el ediff-wind.el ediff.el viper-cmd.el viper-ex.el viper-init.el viper-keym.el viper-macs.el viper-mous.el viper-util.el viper.el -and changed ediff*.el ediff-merge.el viper*.el ediff-hooks.el menu-bar.el - viper-utils.el appt.el desktop.el ediff-meta.el ediff-nult.el - ediff.texi viper-mouse.el viper.texi +and changed ediff*.el viper*.el ediff-hooks.el ediff-merge.el menu-bar.el + appt.el desktop.el ediff-meta.el ediff-nult.el ediff.texi + viper-mouse.el viper.texi Michael Mcnamara: wrote verilog-mode.el @@ -2254,7 +2260,7 @@ and changed keyboard.c files.el simple.el xterm.c xdisp.c fileio.c rmail.el process.c sysdep.c xfns.c buffer.c Makefile.in window.c configure.in subr.el startup.el emacs.c editfns.c info.el sendmail.el - dispnew.c and 1336 other files + dispnew.c and 1337 other files Richard Mlynarik: wrote cl-indent.el ebuff-menu.el ehelp.el env.c rfc822.el terminal.el yow.el @@ -2464,9 +2470,9 @@ diff-mode.el log-edit.el log-view.el pcvs-defs.el pcvs-info.el pcvs-parse.el pcvs-util.el reveal.el smerge-mode.el vc-mtn.el and changed vc.el font-lock.el pcvs.el newcomment.el subr.el lisp.h - keyboard.c tex-mode.el fill.el keymap.c compile.el vc-hooks.el files.el - simple.el alloc.c easy-mmode.el regex.c syntax.c info.el xdisp.c - sh-script.el and 528 other files + keyboard.c tex-mode.el fill.el keymap.c vc-hooks.el compile.el + simple.el files.el alloc.c easy-mmode.el regex.c syntax.c info.el + xdisp.c sh-script.el and 528 other files Steinar Bang: changed imap.el @@ -2587,8 +2593,8 @@ Theodore Jump: changed w32-win.el w32faces.c Thien-Thi Nguyen: wrote hideshow.el make-mms-derivative.el -and changed ewoc.el info.el processes.texi zone.el Makefile.in - lisp-mode.el vc.el fileio.c scheme.el text.texi TUTORIAL.it bindat.el +and changed ewoc.el info.el processes.texi vc.el zone.el Makefile.in + lisp-mode.el fileio.c scheme.el text.texi TUTORIAL.it bindat.el dcl-mode.el display.texi files.el gnus.texi pcvs.el startup.el sysdep.c vc-rcs.el MORE.STUFF and 134 other files @@ -2688,8 +2694,8 @@ Ulrich Leodolter: changed w32proc.c Ulrich Mueller: changed gud.el ChgPane.c ChgSel.c Makefile.in - XMakeAssoc.c case-table.el files.el fortran.el iso-acc.el simple.el - sysdep.c + XMakeAssoc.c case-table.el files.el fortran.el iso-acc.el + msdog-xtra.texi simple.el sysdep.c Ulrik Vieth: wrote meta-mode.el and changed files.el @@ -2716,7 +2722,7 @@ printing.el ps-mule.el and changed ps-print.el ps-prin1.ps ps-bdf.el ps-prin0.ps ps-prin3.ps ps-prin2.ps lpr.el subr.el TUTORIAL.pt_BR easymenu.el loading.texi - ps-print-def.el ps-print.ps ps-print0.ps ps-vars.el + ps-print-def.el ps-print0.ps ps-vars.el Vivek Dasmohapatra: changed emacs.c erc-backend.el erc.el sh-script.el xterm.c xterm.h diff -r 773ae07da318 -r f991f10f15ec etc/ChangeLog --- a/etc/ChangeLog Sun Feb 24 06:43:15 2008 +0000 +++ b/etc/ChangeLog Sun Feb 24 10:09:07 2008 +0000 @@ -31,6 +31,11 @@ * NEWS: Clarify EasyPG functionalities. +2008-02-09 Eli Zaretskii + + * tutorials/TUTORIAL.ru: Remove redundant empty lines, insert a + magic line instead. + 2008-02-08 Jan Dj$(Q)Z(Brv * NEWS: Mention XEmbed and --parent-id. @@ -41,7 +46,8 @@ 2008-02-02 Eli Zaretskii - * TUTORIAL.ru: Restore copyright years. Update tutorial. Fix wording. + * tutorials/TUTORIAL.ru: Restore copyright years. Update + tutorial. Fix wording. 2008-02-02 Kenichi Handa @@ -77,7 +83,7 @@ 2008-02-01 Kenichi Handa - * TUTORIAL.es: Add local variable coding: latin-1. + * tutorials/TUTORIAL.es: Add local variable coding: latin-1. 2008-02-01 Kenichi Handa diff -r 773ae07da318 -r f991f10f15ec etc/NEWS.22 --- a/etc/NEWS.22 Sun Feb 24 06:43:15 2008 +0000 +++ b/etc/NEWS.22 Sun Feb 24 10:09:07 2008 +0000 @@ -85,6 +85,11 @@ desktop.el warns about attempts to overwrite a desktop file if it determines that the desktop being saved is not an update of the one on disk. +** Compilation mode now correctly respects the value of +`compilation-scroll-output' between invocations. Previously, output +was mistakenly scrolled on compiles after the first. Customize +`compilation-scroll-output' if you want to retain the scrolling. + * New Modes and Packages in Emacs 22.2 ** bibtex-style-mode helps you write BibTeX's *.bst files. diff -r 773ae07da318 -r f991f10f15ec etc/PROBLEMS --- a/etc/PROBLEMS Sun Feb 24 06:43:15 2008 +0000 +++ b/etc/PROBLEMS Sun Feb 24 10:09:07 2008 +0000 @@ -2156,14 +2156,13 @@ When "ClearType" method is selected as the "method to smooth edges of screen fonts" (in Display Properties, Appearance tab, under "Effects"), there are various problems related to display of -characters: 2-pixel trace is left behind when moving overlays, bold -fonts can be hard to read, small portions of some characters could -appear chopped, etc. This happens because, under ClearType, -characters are drawn outside their advertised bounding box. Emacs 21 -disabled the use of ClearType, whereas Emacs 22 allows it and has some -code to enlarge the width of the bounding box. Apparently, this -display feature needs more changes to get it 100% right. A workaround -is to disable ClearType. +characters: Bold fonts can be hard to read, small portions of some +characters could appear chopped, etc. This happens because, under +ClearType, characters are drawn outside their advertised bounding box. +Emacs 21 disabled the use of ClearType, whereas Emacs 22 allows it and +has some code to enlarge the width of the bounding box. Apparently, +this display feature needs more changes to get it 100% right. A +workaround is to disable ClearType. There are problems with display if mouse-tracking is enabled and the mouse is moved off a frame, over another frame then back over the first @@ -2533,28 +2532,6 @@ to detect the shell correctly. Try "make SHELL=cmd.exe", or if that fails, try running make from Cygwin bash instead. -*** Building the MS-Windows port with Leim fails in the `leim' directory. - -The error message might be something like this: - - Converting d:/emacs-21.3/leim/CXTERM-DIC/4Corner.tit to quail-package... - Invalid ENCODE: value in TIT dictionary - NMAKE : fatal error U1077: '"../src/obj-spd/i386/emacs.exe"' : return code - '0xffffffff' - Stop. - -This can happen if the Leim distribution is unpacked with a program -which converts the `*.tit' files to DOS-style CR-LF text format. The -`*.tit' files in the leim/CXTERM-DIC directory require Unix-style line -endings to compile properly, because Emacs reads them without any code -or EOL conversions. - -The solution is to make sure the program used to unpack Leim does not -change the files' line endings behind your back. The GNU FTP site has -in the `/gnu/emacs/windows' directory a program called `djtarnt.exe' -which can be used to unpack `.tar.gz' and `.zip' archives without -mangling them. - *** Building `ctags' for MS-Windows with the MinGW port of GCC fails. This might happen due to a bug in the MinGW header assert.h, which diff -r 773ae07da318 -r f991f10f15ec etc/tutorials/TUTORIAL.ru --- a/etc/tutorials/TUTORIAL.ru Sun Feb 24 06:43:15 2008 +0000 +++ b/etc/tutorials/TUTORIAL.ru Sun Feb 24 10:09:07 2008 +0000 @@ -15,23 +15,8 @@ Важное замечание: для завершения сеанса Emacs, наберите C-x C-c (два символа). Символы ">>" с левой стороны указывают, что вам нужно делать, чтобы применить команду. Например: - - - - - - - - +<> [Середина страницы оставлена пустой в учебных целях. Текст продолжается ниже] - - - - - - - - >> Теперь нажмите C-v (просмотр следующего экрана) для перемещения на следующий экран. (Выполните эту команду удерживая клавишу CONTROL и нажимая v.) Теперь вы должны это сделать еще раз, когда закончите читать diff -r 773ae07da318 -r f991f10f15ec lib-src/movemail.c --- a/lib-src/movemail.c Sun Feb 24 06:43:15 2008 +0000 +++ b/lib-src/movemail.c Sun Feb 24 10:09:07 2008 +0000 @@ -692,7 +692,7 @@ the original length of 80. */ /* - * The full legal syntax for a POP mailbox specification for movemail + * The full valid syntax for a POP mailbox specification for movemail * is "po:username:hostname". The ":hostname" is optional; if it is * omitted, the MAILHOST environment variable will be consulted. Note * that by the time popmail() is called the "po:" has been stripped diff -r 773ae07da318 -r f991f10f15ec lib-src/pop.c --- a/lib-src/pop.c Sun Feb 24 06:43:15 2008 +0000 +++ b/lib-src/pop.c Sun Feb 24 10:09:07 2008 +0000 @@ -1630,7 +1630,7 @@ * Function: pop_trash * * Purpose: Like pop_close or pop_quit, but doesn't deallocate the - * memory associated with the server. It is legal to call + * memory associated with the server. It is valid to call * pop_close or pop_quit after this function has been called. */ static void diff -r 773ae07da318 -r f991f10f15ec lisp/ChangeLog --- a/lisp/ChangeLog Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/ChangeLog Sun Feb 24 10:09:07 2008 +0000 @@ -1,3 +1,186 @@ +2008-02-24 Stefan Monnier + + * dired.el (dired-mark-prompt): Don't count/display the t element. + Reported by Carsten Blaauw . + +2008-02-24 Dan Nicolaescu + + * progmodes/verilog-mode.el (eval-when-compile): Don't define + add-submenu. + (verilog-xemacs-menu): Add :keys for C-M-a, C-M-e and C-M-h. + Remove. Move contents to the only use ... + (verilog-menu): ... here. + (verilog-statement-menu): Remove. Move contents to the only use ... + (verilog-stmt-menu): ... here. + (verilog-mark-defun): Simply call mark-defun for emacs. + (occur-pos-list): Declare for byte compiler. + (mode-popup-menu): Don't defvar. + (verilog-add-statement-menu): Remove. + (verilog-mode-hook): Don't add verilog-add-statement-menu. + (verilog-mode): Call easy-menu-add and set mode-popup-menu for + XEmacs. + +2008-02-24 Michael McNamara + + * progmodes/verilog-mode.el (verilog-xemacs-menu): Remove XEmacs + conditional. + (verilog-font-grouping-keywords-face): Make the begin..end + keywords standout more than other verilog keywords. + (verilog-type-font-keywords): Move the begin..end out of this list + to facilitate making them to (potentially) stand out more. + (verilog-backward-token): Fix indent of bare always{_*}?, initial, + function & task blocks. + (verilog-behavioral-block-beg-re): Fix indent of bare always{_*}?, + initial, function & task blocks. + (verilog-forward-sexp): Handle the new "disable fork" statement of + IEEE-1800 Verilog. + (verilog-beg-block-re-ordered): Handle the new "disable fork" + statement of IEEE-1800 Verilog. + (verilog-calc-1): Handle the new "disable fork" statement of + IEEE-1800 Verilog. + (verilog-disable-fork-re): Add const to help handle the new + "disable fork" statement of IEEE-1800 Verilog. + (verilog-declaration-core-re): Add port directions by themselves, + with no qualification, as base item of a declaration. + (verilog-pretty-declarations): Add new flag to ask it to refrain + from printing to the message buffer. + (verilog-pretty-expr): Add a QUIET flag to ask it to refrain from + printing to the message buffer. Improve handling of the many + types of expression line up. + (verilog-just-one-space): Remove printing of an empty message. + (verilog-get-lineup-indent): Rework to support the better handling + of expression lineup for verilog-pretty-expr. + (verilog-auto-wire): Pass the quiet flag to verilog-pretty-expr. + +2008-02-24 Alan Mackenzie + + * progmodes/cc-mode.el (c-extend-region-for-CPP): Bug fix from + yesterday's commit. + +2008-02-24 Nick Roberts + + * progmodes/gdb-ui.el (gdb-mouse-set-clear-breakpoint): Fall back + to mouse-set-point in buffers that aren't associated with files. + + * progmodes/gud.el: Rename menu item to "Show GUD tooltips". + +2008-02-24 Alan Mackenzie + + Set of changes so that "obtrusive" syntactic elements in a + C/C++/ObjC preprocessor line (e.g. an unbalanced string quote or + unmatched paren) don't interact syntactically with stuff outside + the CPP line. + + * progmodes/cc-awk.el (c-awk-beyond-logical-line, c-awk-old-ByLL): + Replace c-awk-end-of-logical-line and c-awk-old-EoLL to solve an + off-by-one bug. + (c-awk-record-region-clear-NL): Replaces c-awk-before-change, with + a bit of refactoring. + (c-awk-extend-and-syntax-tablify-region): Takes some of the + functionality of c-awk-advise-fl-for-awk-region, which has been + refactored away. + + * progmodes/cc-defs.el (c-clear-char-property-with-value-function) + (c-clear-char-property-with-value): New function and macro which + remove text-properties `equal' to a supplied value. + + * progmodes/cc-engine.el: Comment about text properties amended. + + * progmodes/cc-fonts.el (c-cpp-matchers): Make it put regexp + parens around "error\\|warning". + + * progmodes/cc-langs.el (c-get-state-before-change-function) + (c-before-font-lock-function, c-anchored-cpp-prefix): + New language variables. + (c-cpp-message-directives): Handle "#warning" in C, C++ and ObjC. + + * progmodes/cc-mode.el (c-basic-common-init): C and ObjC now use + syntax-table text properties. + (c-common-init): Call language specific before/after-change + functions at mode initialisation. + (c-new-BEG, c-new-END, c-old-BOM, c-old-EOM): New variables. + (c-extend-region-for-CPP, c-neutralize-CPP-line) + (c-neutralize-syntax-in-CPP): New functions. + (c-before-change, c-after-change): Call the new language specific + change functions defined in cc-langs.el. + (c-advise-fl-for-region): New macro. + (awk-mode): Remove AWK specific stuff which has been refactored + into language independent stuff. + +2008-02-24 Nick Roberts + + * progmodes/gdb-ui.el (gdba): Recreate as an alias for gdb. + (gdb): (Re)set gdb-flush-pending-output to nil here... + (gdb-init-1): ...instead of here (before gdb-prompt). + +2008-02-24 Stefan Monnier + + * progmodes/ada-mode.el (ada-font-lock-syntactic-keywords): + Recognize ''' just like any other char-constant. + +2008-02-24 Stefan Monnier + + * vc-hooks.el (vc-find-root): Remove initial loop because it's not + careful enough. Detect the uid-change all within the main loop. + +2008-02-24 Stefan Monnier + + * textmodes/sgml-mode.el (sgml-mode): Fix comment syntax. + +2008-02-24 Stefan Monnier + + * hilit-chg.el (highlight-save-buffer-state): New macro. + (highlight-save-buffer-state, hilit-chg-set-face-on-change) + (hilit-chg-clear): Use it to preserve the modified-p flag. + (highlight-changes-rotate-faces): Don't mess with the undo-list. + +2008-02-24 Stefan Monnier + + * font-lock.el (font-lock-set-defaults): Unset previously set variables + when needed. + +2008-02-24 ,AF(Bvar Arnfj,Av(Br,Ap(B Bjarmason (tiny change) + + * net/rcirc.el (rcirc-url-regexp): Replace definition by copying + from gnus-button-url-regexp. + +2008-02-24 Eli Zaretskii + + * progmodes/compile.el (compilation-next-error): Doc fix. + (compilation-find-file): Doc fix. + +2008-02-24 Glenn Morris + + * net/net-utils.el (ipconfig-program, ipconfig-program-options): + Add obsolete aliases to the old names. + +2008-02-24 Richard Stallman + + * net/net-utils.el (ifconfig): Rename from ipconfig. + (ipconfig): Alias to ifconfig. + (ifconfig-program): Rename from ipconfig-program. + (ifconfig-program-options): Rename from ipconfig-program-options. + +2008-02-24 Michael McNamara + + * progmodes/verilog-mode.el (verilog-declaration-core-re): + Add port directions by themselves, with no qualification, as base + item of a declaration. + (verilog-pretty-declarations): Add new flag that inhibits printing + to the message buffer. + (verilog-pretty-expr): Add new flag that inhibits printing to the + message buffer. Improve handling of the many types of expression + line up. + (verilog-just-one-space): Don't print an empty message. + (verilog-get-lineup-indent): Rework to support the better handling + of expression lineup for verilog-pretty-expr. + (verilog-auto-wire): Pass the quiet flag to verilog-pretty-expr. + (verilog-mode-version, verilog-mode-release-date): Update. + +2008-02-24 Stefan Monnier + + * subr.el (cancel-change-group): Don't move point. + 2008-02-23 Markus Triska * linum.el (linum-after-config): Update all visible windows. diff -r 773ae07da318 -r f991f10f15ec lisp/ChangeLog.12 --- a/lisp/ChangeLog.12 Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/ChangeLog.12 Sun Feb 24 10:09:07 2008 +0000 @@ -2386,7 +2386,7 @@ 2007-01-26 Vinicius Jose Latorre - * ps-print.ps: Fix background height. + * ps-print.el: Fix background height. (ps-print-version): New version 6.7.2. 2007-01-26 Eli Zaretskii @@ -6104,7 +6104,7 @@ * emulation/viper.el: Bump up version/date of update to reflect the substantial changes done in August 2006. - * emulation/viper-cmd (viper-next-line-at-bol): Make sure button-at, + * emulation/viper-cmd.el (viper-next-line-at-bol): Make sure button-at, push-button are defined. * ediff-util.el (ediff-add-to-history): New function. @@ -18114,7 +18114,7 @@ 2005-11-15 Michael Kifer - * emulation/viper-utils.el (viper-non-word-characters-reformed-vi): + * emulation/viper-util.el (viper-non-word-characters-reformed-vi): Quote `-' in string. * emulation/viper.el (viper-emacs-state-mode-list): Ensure that @@ -20772,7 +20772,7 @@ 2005-10-05 Michael Kifer - * ediff-merge.el (ediff-merge-region-is-non-clash): New defsubst. + * ediff-merg.el (ediff-merge-region-is-non-clash): New defsubst. (ediff-merge-region-is-non-clash-to-skip): Previously called ediff-merge-region-is-non-clash. @@ -21424,7 +21424,7 @@ * emulation/viper-macs.el (ex-map): Better messages. - * emulation/viper-utils.el (viper-beginning-of-field): New function. + * emulation/viper-util.el (viper-beginning-of-field): New function. * emulation/viper.el: Replace make-variable-buffer-local with viper-make-variable-buffer-local everywhere, to avoid warnings. @@ -26999,7 +26999,7 @@ 2005-05-29 Richard M. Stallman - * textmoddes/flyspell.el (flyspell-version): Function deleted. + * textmodes/flyspell.el (flyspell-version): Function deleted. (flyspell-auto-correct-previous-hook): Doc fix. * jit-lock.el (jit-lock-function, jit-lock-after-change): @@ -30044,7 +30044,7 @@ 2005-04-04 Jay Belanger - * calc.el (calc-language-alist): Add tags to customization type. + * calc/calc.el (calc-language-alist): Add tags to customization type. 2005-04-03 Luc Teirlinck diff -r 773ae07da318 -r f991f10f15ec lisp/custom.el --- a/lisp/custom.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/custom.el Sun Feb 24 10:09:07 2008 +0000 @@ -900,7 +900,7 @@ (memq (get symbol 'custom-autoload) '(nil noset))) ;; This symbol needs to be autoloaded, even just for a `set'. (custom-load-symbol symbol)))) - + ;; Move minor modes and variables with explicit requires to the end. (setq args (sort args diff -r 773ae07da318 -r f991f10f15ec lisp/dired.el --- a/lisp/dired.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/dired.el Sun Feb 24 10:09:07 2008 +0000 @@ -2550,8 +2550,10 @@ (if (= 1 count) "" "s")) (defun dired-mark-prompt (arg files) - ;; Return a string for use in a prompt, either the current file - ;; name, or the marker and a count of marked files. + "Return a string for use in a prompt, either the current file +name, or the marker and a count of marked files." + ;; distinguish-one-marked can cause the first element to be just t. + (if (eq (car files) t) (setq files (cdr files))) (let ((count (length files))) (if (= count 1) (car files) diff -r 773ae07da318 -r f991f10f15ec lisp/emacs-lisp/byte-run.el --- a/lisp/emacs-lisp/byte-run.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/emacs-lisp/byte-run.el Sun Feb 24 10:09:07 2008 +0000 @@ -221,7 +221,7 @@ ;; verbose t, nil byte-compile-verbose ;; optimize t, nil, source, byte byte-compile-optimize ;; warnings list of warnings byte-compile-warnings -;; Legal elements: (callargs redefine free-vars unresolved) +;; Valid elements: (callargs redefine free-vars unresolved) ;; file-format emacs18, emacs19 byte-compile-compatibility ;; ;; For example, this might appear at the top of a source file: diff -r 773ae07da318 -r f991f10f15ec lisp/emacs-lisp/cl-specs.el --- a/lisp/emacs-lisp/cl-specs.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/emacs-lisp/cl-specs.el Sun Feb 24 10:09:07 2008 +0000 @@ -323,7 +323,7 @@ ;; Below is a complete spec for loop, in several parts that correspond ;; to the syntax given in CLtL2. The specs do more than specify where ;; the forms are; it also specifies, as much as Edebug allows, all the -;; syntactically legal loop clauses. The disadvantage of this +;; syntactically valid loop clauses. The disadvantage of this ;; completeness is rigidity, but the "for ... being" clause allows ;; arbitrary extensions of the form: [symbolp &rest &or symbolp form]. diff -r 773ae07da318 -r f991f10f15ec lisp/emacs-lisp/edebug.el --- a/lisp/emacs-lisp/edebug.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/emacs-lisp/edebug.el Sun Feb 24 10:09:07 2008 +0000 @@ -1496,7 +1496,7 @@ (cond ((symbolp head) (cond - ((null head) nil) ; () is legal. + ((null head) nil) ; () is valid. ((eq head 'interactive-p) ;; Special case: replace (interactive-p) with variable (setq edebug-def-interactive 'check-it) @@ -2076,7 +2076,7 @@ ;; doesn't handle (a . ,b). The straightforward fix: ;; (backquote-form . [&or nil backquote-form]) ;; uses up too much stack space. - ;; Note that `(foo . ,@bar) is not legal, so we don't need to handle it. + ;; Note that `(foo . ,@bar) is not valid, so we don't need to handle it. (backquote-form [&rest [¬ ","] backquote-form] . [&or nil backquote-form]) ;; If you use dotted forms in backquotes, replace the previous line diff -r 773ae07da318 -r f991f10f15ec lisp/erc/ChangeLog --- a/lisp/erc/ChangeLog Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/erc/ChangeLog Sun Feb 24 10:09:07 2008 +0000 @@ -2,6 +2,12 @@ * erc.el (erc-notice-face): Fix this face for Emacs 21 users. +2008-02-05 Juanma Barranquero + + * erc.el (erc-valid-nick-regexp): + * erc-button.el (erc-button-syntax-table): + * erc-match.el (erc-match-syntax-table): Replace `legal' with `valid'. + 2008-02-04 Jeremy Maitin-Shepard * erc.el (erc-cmd-QUERY): Bind the value of `erc-auto-query' to diff -r 773ae07da318 -r f991f10f15ec lisp/erc/erc-button.el --- a/lisp/erc/erc-button.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/erc/erc-button.el Sun Feb 24 10:09:07 2008 +0000 @@ -239,7 +239,7 @@ (modify-syntax-entry ?\\ "w" table) table) "Syntax table used when buttonizing messages. -This syntax table should make all the legal nick characters word +This syntax table should make all the valid nick characters word constituents.") (defvar erc-button-keys-added nil diff -r 773ae07da318 -r f991f10f15ec lisp/erc/erc-match.el --- a/lisp/erc/erc-match.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/erc/erc-match.el Sun Feb 24 10:09:07 2008 +0000 @@ -256,7 +256,7 @@ (modify-syntax-entry ?\\ "w" table) table) "Syntax table used when highlighting messages. -This syntax table should make all the legal nick characters word +This syntax table should make all the valid nick characters word constituents.") ;; Faces: diff -r 773ae07da318 -r f991f10f15ec lisp/erc/erc.el --- a/lisp/erc/erc.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/erc/erc.el Sun Feb 24 10:09:07 2008 +0000 @@ -2428,7 +2428,7 @@ (setq list (cdr list)))))) (defvar erc-valid-nick-regexp "[]a-zA-Z^[;\\`_{}|][]^[;\\`_{}|a-zA-Z0-9-]*" - "Regexp which matches all legal characters in a IRC nickname.") + "Regexp which matches all valid characters in a IRC nickname.") (defun erc-is-valid-nick-p (nick) "Check if NICK is a valid IRC nickname." diff -r 773ae07da318 -r f991f10f15ec lisp/eshell/esh-var.el --- a/lisp/eshell/esh-var.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/eshell/esh-var.el Sun Feb 24 10:09:07 2008 +0000 @@ -35,7 +35,7 @@ ;; ;; $ALSO-VAR ;; -;; "-" is a legal part of a variable name. +;; "-" is a valid part of a variable name. ;; ;; $-TOO ;; diff -r 773ae07da318 -r f991f10f15ec lisp/ffap.el --- a/lisp/ffap.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/ffap.el Sun Feb 24 10:09:07 2008 +0000 @@ -426,7 +426,7 @@ ;; (ffap-machine-p "mathcs" 5678 nil 'ping) ;; (ffap-machine-p "foo.bonk" nil nil 'ping) ;; (ffap-machine-p "foo.bonk.com" nil nil 'ping) - (if (or (string-match "[^-[:alnum:].]" host) ; Illegal chars (?) + (if (or (string-match "[^-[:alnum:].]" host) ; Invalid chars (?) (not (string-match "[^0-9]" host))) ; 1: a number? 2: quick reject nil (let* ((domain diff -r 773ae07da318 -r f991f10f15ec lisp/follow.el --- a/lisp/follow.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/follow.el Sun Feb 24 10:09:07 2008 +0000 @@ -302,7 +302,7 @@ ;; above for an example of how to bind the keys the way you like. ;; ;; Please note that the keymap is defined the first time this file is -;; loaded. Also note that the only legal way to manipulate the +;; loaded. Also note that the only valid way to manipulate the ;; keymap is to use `define-key'. Don't change it using `setq' or ;; similar! diff -r 773ae07da318 -r f991f10f15ec lisp/font-lock.el --- a/lisp/font-lock.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/font-lock.el Sun Feb 24 10:09:07 2008 +0000 @@ -1785,13 +1785,16 @@ (cdr-safe (assq major-mode font-lock-removed-keywords-alist)))) (set (make-local-variable 'font-lock-defaults) defaults) ;; Syntactic fontification? - (when (nth 1 defaults) - (set (make-local-variable 'font-lock-keywords-only) t)) + (if (nth 1 defaults) + (set (make-local-variable 'font-lock-keywords-only) t) + (kill-local-variable 'font-lock-keywords-only)) ;; Case fold during regexp fontification? - (when (nth 2 defaults) - (set (make-local-variable 'font-lock-keywords-case-fold-search) t)) + (if (nth 2 defaults) + (set (make-local-variable 'font-lock-keywords-case-fold-search) t) + (kill-local-variable 'font-lock-keywords-case-fold-search)) ;; Syntax table for regexp and syntactic fontification? - (when (nth 3 defaults) + (if (null (nth 3 defaults)) + (kill-local-variable 'font-lock-syntax-table) (set (make-local-variable 'font-lock-syntax-table) (copy-syntax-table (syntax-table))) (dolist (selem (nth 3 defaults)) @@ -1802,9 +1805,10 @@ (mapcar 'identity (car selem)))) (modify-syntax-entry char syntax font-lock-syntax-table))))) ;; Syntax function for syntactic fontification? - (when (nth 4 defaults) + (if (nth 4 defaults) (set (make-local-variable 'font-lock-beginning-of-syntax-function) - (nth 4 defaults))) + (nth 4 defaults)) + (kill-local-variable 'font-lock-beginning-of-syntax-function)) ;; Variable alist? (dolist (x (nthcdr 5 defaults)) (set (make-local-variable (car x)) (cdr x))) diff -r 773ae07da318 -r f991f10f15ec lisp/gnus/deuglify.el --- a/lisp/gnus/deuglify.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/gnus/deuglify.el Sun Feb 24 10:09:07 2008 +0000 @@ -68,7 +68,7 @@ ;; > verb. This sentence no verb. This sentence no verb. This ;; > sentence no verb. ;; -;; Unwrapping "You forgot in all your sentences." would be illegal as +;; Unwrapping "You forgot in all your sentences." would be invalid as ;; this part wasn't intended to be cited text. ;; `gnus-article-outlook-unwrap-lines' will only unwrap lines if the resulting ;; citation line will be of a certain maximum length. You can control diff -r 773ae07da318 -r f991f10f15ec lisp/hilit-chg.el --- a/lisp/hilit-chg.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/hilit-chg.el Sun Feb 24 10:09:07 2008 +0000 @@ -515,12 +515,28 @@ (delete-overlay ov)))))) (hilit-chg-display-changes beg end))) +;; Inspired by font-lock. Something like this should be moved to subr.el. +(defmacro highlight-save-buffer-state (&rest body) + "Bind variables according to VARLIST and eval BODY restoring buffer state." + (declare (indent 0) (debug t)) + (let ((modified (make-symbol "modified"))) + `(let* ((,modified (buffer-modified-p)) + (inhibit-modification-hooks t) + deactivate-mark + ;; So we don't check the file's mtime. + buffer-file-name + buffer-file-truename) + (progn + ,@body) + (unless ,modified + (restore-buffer-modified-p nil))))) + ;;;###autoload (defun highlight-changes-remove-highlight (beg end) "Remove the change face from the region between BEG and END. This allows you to manually remove highlighting from uninteresting changes." (interactive "r") - (let ((after-change-functions nil)) + (highlight-save-buffer-state (remove-text-properties beg end '(hilit-chg nil)) (hilit-chg-fixup beg end))) @@ -543,38 +559,39 @@ (if undo-in-progress (if (eq highlight-changes-mode 'active) (hilit-chg-fixup beg end)) - (if (and (= beg end) (> leng-before 0)) - ;; deletion - (progn - ;; The eolp and bolp tests are a kludge! But they prevent - ;; rather nasty looking displays when deleting text at the end - ;; of line, such as normal corrections as one is typing and - ;; immediately makes a correction, and when deleting first - ;; character of a line. -;;; (if (= leng-before 1) -;;; (if (eolp) -;;; (setq beg-decr 0 end-incr 0) -;;; (if (bolp) -;;; (setq beg-decr 0)))) -;;; (setq beg (max (- beg beg-decr) (point-min))) - (setq end (min (+ end end-incr) (point-max))) - (setq type 'hilit-chg-delete)) - ;; Not a deletion. - ;; Most of the time the following is not necessary, but - ;; if the current text was marked as a deletion then - ;; the old overlay is still in effect, so if we add some - ;; text then remove the deletion marking, but set it to + (highlight-save-buffer-state + (if (and (= beg end) (> leng-before 0)) + ;; deletion + (progn + ;; The eolp and bolp tests are a kludge! But they prevent + ;; rather nasty looking displays when deleting text at the end + ;; of line, such as normal corrections as one is typing and + ;; immediately makes a correction, and when deleting first + ;; character of a line. + ;; (if (= leng-before 1) + ;; (if (eolp) + ;; (setq beg-decr 0 end-incr 0) + ;; (if (bolp) + ;; (setq beg-decr 0)))) + ;; (setq beg (max (- beg beg-decr) (point-min))) + (setq end (min (+ end end-incr) (point-max))) + (setq type 'hilit-chg-delete)) + ;; Not a deletion. + ;; Most of the time the following is not necessary, but + ;; if the current text was marked as a deletion then + ;; the old overlay is still in effect, so if we add some + ;; text then remove the deletion marking, but set it to ;; changed otherwise its highlighting disappears. (if (eq (get-text-property end 'hilit-chg) 'hilit-chg-delete) (progn (remove-text-properties end (+ end 1) '(hilit-chg nil)) (put-text-property end (+ end 1) 'hilit-chg 'hilit-chg) (if (eq highlight-changes-mode 'active) - (hilit-chg-fixup beg (+ end 1)))))) - (unless no-property-change - (put-text-property beg end 'hilit-chg type)) - (if (or (eq highlight-changes-mode 'active) no-property-change) - (hilit-chg-make-ov type beg end)))))) + (hilit-chg-fixup beg (+ end 1)))))) + (unless no-property-change + (put-text-property beg end 'hilit-chg type)) + (if (or (eq highlight-changes-mode 'active) no-property-change) + (hilit-chg-make-ov type beg end))))))) (defun hilit-chg-set (value) "Turn on Highlight Changes mode for this buffer." @@ -602,12 +619,11 @@ (message "Cannot remove highlighting from read-only mode buffer %s" (buffer-name)) (remove-hook 'after-change-functions 'hilit-chg-set-face-on-change t) - (let ((after-change-functions nil)) + (highlight-save-buffer-state (hilit-chg-hide-changes) (hilit-chg-map-changes - '(lambda (prop start stop) - (remove-text-properties start stop '(hilit-chg nil)))) - ) + (lambda (prop start stop) + (remove-text-properties start stop '(hilit-chg nil))))) (setq highlight-changes-mode nil) (force-mode-line-update) ;; If we type: C-u -1 M-x highlight-changes-mode @@ -798,11 +814,12 @@ ;; of the current buffer due to the rotation. We do this by inserting (in ;; `buffer-undo-list') entries restoring buffer-modified-p to nil before ;; and after the entry for the rotation. - (unless modified - ;; Install the "before" entry. - (setq buffer-undo-list - (cons '(apply restore-buffer-modified-p nil) - buffer-undo-list))) + ;; FIXME: this is no good: we need to test the `modified' state at the + ;; time of the undo, not at the time of the "do", otherwise the undo + ;; may erroneously clear the modified flag. --Stef + ;; (unless modified + ;; ;; Install the "before" entry. + ;; (push '(apply restore-buffer-modified-p nil) buffer-undo-list)) (unwind-protect (progn ;; ensure hilit-chg-list is made and up to date @@ -815,10 +832,8 @@ (if (eq highlight-changes-mode 'active) (hilit-chg-display-changes))) (unless modified - ;; Install the "after" entry. - (setq buffer-undo-list - (cons '(apply restore-buffer-modified-p nil) - buffer-undo-list)) + ;; Install the "after" entry. FIXME: See above. + ;; (push '(apply restore-buffer-modified-p nil) buffer-undo-list) (restore-buffer-modified-p nil))))) ;; This always returns nil so it is safe to use in write-file-functions diff -r 773ae07da318 -r f991f10f15ec lisp/isearch.el --- a/lisp/isearch.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/isearch.el Sun Feb 24 10:09:07 2008 +0000 @@ -1486,7 +1486,7 @@ ;; removes all bracket-sets and groups that might be in the way, as ;; well as partial \{\} constructs that the code below leaves behind. ;; Also skip over postfix operators -- though horrid, - ;; 'ab?\{5,6\}+\{1,2\}*' is perfectly legal. + ;; 'ab?\{5,6\}+\{1,2\}*' is perfectly valid. (while (and previous (or (isearch-error-state frame) (let* ((string (isearch-string-state frame)) diff -r 773ae07da318 -r f991f10f15ec lisp/ldefs-boot.el --- a/lisp/ldefs-boot.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/ldefs-boot.el Sun Feb 24 10:09:07 2008 +0000 @@ -1890,6 +1890,18 @@ ;;;*** +;;;### (autoloads (bibtex-style-mode) "bibtex-style" "textmodes/bibtex-style.el" +;;;;;; (18310 14604)) +;;; Generated autoloads from textmodes/bibtex-style.el + (add-to-list 'auto-mode-alist '("\\.bst\\'" . bibtex-style-mode)) + +(autoload (quote bibtex-style-mode) "bibtex-style" "\ +Major mode for editing BibTeX style files. + +\(fn)" t nil) + +;;;*** + ;;;### (autoloads (binhex-decode-region binhex-decode-region-external ;;;;;; binhex-decode-region-internal) "binhex" "mail/binhex.el" ;;;;;; (18335 54537)) @@ -12196,6 +12208,8 @@ \(fn COMMAND-LINE)" t nil) +(defalias (quote gdba) (quote gdb)) + (defvar gdb-enable-debug nil "\ Non-nil means record the process input and output in `gdb-debug-log'.") @@ -30680,6 +30694,201 @@ ;;;*** +;;;### (autoloads (vera-mode) "vera-mode" "progmodes/vera-mode.el" +;;;;;; (18310 14601)) +;;; Generated autoloads from progmodes/vera-mode.el + (add-to-list 'auto-mode-alist '("\\.vr[hi]?\\'" . vera-mode)) + +(autoload (quote vera-mode) "vera-mode" "\ +Major mode for editing Vera code. + +Usage: +------ + + INDENTATION: Typing `TAB' at the beginning of a line indents the line. + The amount of indentation is specified by option `vera-basic-offset'. + Indentation can be done for an entire region (`M-C-\\') or buffer (menu). + `TAB' always indents the line if option `vera-intelligent-tab' is nil. + + WORD/COMMAND COMPLETION: Typing `TAB' after a (not completed) word looks + for a word in the buffer or a Vera keyword that starts alike, inserts it + and adjusts case. Re-typing `TAB' toggles through alternative word + completions. + + Typing `TAB' after a non-word character inserts a tabulator stop (if not + at the beginning of a line). `M-TAB' always inserts a tabulator stop. + + COMMENTS: `C-c C-c' comments out a region if not commented out, and + uncomments a region if already commented out. + + HIGHLIGHTING (fontification): Vera keywords, predefined types and + constants, function names, declaration names, directives, as well as + comments and strings are highlighted using different colors. + + VERA VERSION: OpenVera 1.4 and Vera version 6.2.8. + + +Maintenance: +------------ + +To submit a bug report, use the corresponding menu entry within Vera Mode. +Add a description of the problem and include a reproducible test case. + +Feel free to send questions and enhancement requests to . + +Official distribution is at +. + + + The Vera Mode Maintainer + Reto Zimmermann + +Key bindings: +------------- + +\\{vera-mode-map} + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (verilog-mode) "verilog-mode" "progmodes/verilog-mode.el" +;;;;;; (18363 3872)) +;;; Generated autoloads from progmodes/verilog-mode.el + +(autoload (quote verilog-mode) "verilog-mode" "\ +Major mode for editing Verilog code. +\\ +See \\[describe-function] verilog-auto (\\[verilog-auto]) for details on how +AUTOs can improve coding efficiency. + +Use \\[verilog-faq] for a pointer to frequently asked questions. + +NEWLINE, TAB indents for Verilog code. +Delete converts tabs to spaces as it moves back. + +Supports highlighting. + +Turning on Verilog mode calls the value of the variable `verilog-mode-hook' +with no args, if that value is non-nil. + +Variables controlling indentation/edit style: + + variable `verilog-indent-level' (default 3) + Indentation of Verilog statements with respect to containing block. + `verilog-indent-level-module' (default 3) + Absolute indentation of Module level Verilog statements. + Set to 0 to get initial and always statements lined up + on the left side of your screen. + `verilog-indent-level-declaration' (default 3) + Indentation of declarations with respect to containing block. + Set to 0 to get them list right under containing block. + `verilog-indent-level-behavioral' (default 3) + Indentation of first begin in a task or function block + Set to 0 to get such code to lined up underneath the task or + function keyword. + `verilog-indent-level-directive' (default 1) + Indentation of `ifdef/`endif blocks. + `verilog-cexp-indent' (default 1) + Indentation of Verilog statements broken across lines i.e.: + if (a) + begin + `verilog-case-indent' (default 2) + Indentation for case statements. + `verilog-auto-newline' (default nil) + Non-nil means automatically newline after semicolons and the punctuation + mark after an end. + `verilog-auto-indent-on-newline' (default t) + Non-nil means automatically indent line after newline. + `verilog-tab-always-indent' (default t) + Non-nil means TAB in Verilog mode should always reindent the current line, + regardless of where in the line point is when the TAB command is used. + `verilog-indent-begin-after-if' (default t) + Non-nil means to indent begin statements following a preceding + if, else, while, for and repeat statements, if any. Otherwise, + the begin is lined up with the preceding token. If t, you get: + if (a) + begin // amount of indent based on `verilog-cexp-indent' + otherwise you get: + if (a) + begin + `verilog-auto-endcomments' (default t) + Non-nil means a comment /* ... */ is set after the ends which ends + cases, tasks, functions and modules. + The type and name of the object will be set between the braces. + `verilog-minimum-comment-distance' (default 10) + Minimum distance (in lines) between begin and end required before a comment + will be inserted. Setting this variable to zero results in every + end acquiring a comment; the default avoids too many redundant + comments in tight quarters. + `verilog-auto-lineup' (default `(all)) + List of contexts where auto lineup of code should be done. + +Variables controlling other actions: + + `verilog-linter' (default surelint) + Unix program to call to run the lint checker. This is the default + command for \\[compile-command] and \\[verilog-auto-save-compile]. + +See \\[customize] for the complete list of variables. + +AUTO expansion functions are, in part: + + \\[verilog-auto] Expand AUTO statements. + \\[verilog-delete-auto] Remove the AUTOs. + \\[verilog-inject-auto] Insert AUTOs for the first time. + +Some other functions are: + + \\[verilog-complete-word] Complete word with appropriate possibilities. + \\[verilog-mark-defun] Mark function. + \\[verilog-beg-of-defun] Move to beginning of current function. + \\[verilog-end-of-defun] Move to end of current function. + \\[verilog-label-be] Label matching begin ... end, fork ... join, etc statements. + + \\[verilog-comment-region] Put marked area in a comment. + \\[verilog-uncomment-region] Uncomment an area commented with \\[verilog-comment-region]. + \\[verilog-insert-block] Insert begin ... end;. + \\[verilog-star-comment] Insert /* ... */. + + \\[verilog-sk-always] Insert a always @(AS) begin .. end block. + \\[verilog-sk-begin] Insert a begin .. end block. + \\[verilog-sk-case] Insert a case block, prompting for details. + \\[verilog-sk-for] Insert a for (...) begin .. end block, prompting for details. + \\[verilog-sk-generate] Insert a generate .. endgenerate block. + \\[verilog-sk-header] Insert a nice header block at the top of file. + \\[verilog-sk-initial] Insert an initial begin .. end block. + \\[verilog-sk-fork] Insert a fork begin .. end .. join block. + \\[verilog-sk-module] Insert a module .. (/*AUTOARG*/);.. endmodule block. + \\[verilog-sk-primitive] Insert a primitive .. (.. );.. endprimitive block. + \\[verilog-sk-repeat] Insert a repeat (..) begin .. end block. + \\[verilog-sk-specify] Insert a specify .. endspecify block. + \\[verilog-sk-task] Insert a task .. begin .. end endtask block. + \\[verilog-sk-while] Insert a while (...) begin .. end block, prompting for details. + \\[verilog-sk-casex] Insert a casex (...) item: begin.. end endcase block, prompting for details. + \\[verilog-sk-casez] Insert a casez (...) item: begin.. end endcase block, prompting for details. + \\[verilog-sk-if] Insert an if (..) begin .. end block. + \\[verilog-sk-else-if] Insert an else if (..) begin .. end block. + \\[verilog-sk-comment] Insert a comment block. + \\[verilog-sk-assign] Insert an assign .. = ..; statement. + \\[verilog-sk-function] Insert a function .. begin .. end endfunction block. + \\[verilog-sk-input] Insert an input declaration, prompting for details. + \\[verilog-sk-output] Insert an output declaration, prompting for details. + \\[verilog-sk-state-machine] Insert a state machine definition, prompting for details. + \\[verilog-sk-inout] Insert an inout declaration, prompting for details. + \\[verilog-sk-wire] Insert a wire declaration, prompting for details. + \\[verilog-sk-reg] Insert a register declaration, prompting for details. + \\[verilog-sk-define-signal] Define signal under point as a register at the top of the module. + +All key bindings can be seen in a Verilog-buffer with \\[describe-bindings]. +Key bindings specific to `verilog-mode-map' are: + +\\{verilog-mode-map} + +\(fn)" t nil) + +;;;*** + ;;;### (autoloads (vhdl-mode) "vhdl-mode" "progmodes/vhdl-mode.el" ;;;;;; (18335 54543)) ;;; Generated autoloads from progmodes/vhdl-mode.el @@ -31760,6 +31969,11 @@ ;;;;;; global-whitespace-toggle-options whitespace-toggle-options ;;;;;; whitespace-mode) "whitespace" "whitespace.el" (18340 43875)) ;;; Generated autoloads from whitespace.el +(put 'whitespace-check-buffer-leading 'safe-local-variable 'booleanp) +(put 'whitespace-check-buffer-trailing 'safe-local-variable 'booleanp) +(put 'whitespace-check-buffer-indent 'safe-local-variable 'booleanp) +(put 'whitespace-check-buffer-spacetab 'safe-local-variable 'booleanp) +(put 'whitespace-check-buffer-ateol 'safe-local-variable 'booleanp) (autoload 'whitespace-mode "whitespace" "\ Toggle whitespace minor mode visualization (\"ws\" on modeline). @@ -31956,7 +32170,7 @@ See also `whitespace-cleanup' and `whitespace-cleanup-region' for cleaning up these problems. -\(fn)" t nil) +\(fn)" nil nil) ;;;*** diff -r 773ae07da318 -r f991f10f15ec lisp/mail/mail-extr.el --- a/lisp/mail/mail-extr.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/mail/mail-extr.el Sun Feb 24 10:09:07 2008 +0000 @@ -850,7 +850,7 @@ (setq char ?\() ; HAVE I NO SHAME?? ) ;; record the position of various interesting chars, determine - ;; legality later. + ;; validity later. ((setq record-pos-symbol (cdr (assq char '((?< . <-pos) (?> . >-pos) (?@ . @-pos) @@ -862,9 +862,9 @@ ((eq char ?.) (forward-char 1)) ((memq char '( - ;; comment terminator illegal + ;; comment terminator invalid ?\) - ;; domain literal terminator illegal + ;; domain literal terminator invalid ?\] ;; \ allowed only within quoted strings, ;; domain literals, and comments diff -r 773ae07da318 -r f991f10f15ec lisp/mh-e/ChangeLog --- a/lisp/mh-e/ChangeLog Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/mh-e/ChangeLog Sun Feb 24 10:09:07 2008 +0000 @@ -77,6 +77,22 @@ * mh-mime.el (mh-mml-forward-message): Forward messages as inline attatchments (closes SF #1378993). +2008-02-06 Richard Stallman + + * mh-seq.el (mh-make-seq, mh-seq-name): Use defsubst. + + * mh-acros.el (mh-do-in-gnu-emacs, mh-do-in-xemacs) + (with-mh-folder-updating, mh-in-show-buffer) + (mh-iterate-on-messages-in-region, mh-iterate-on-range): + (mh-do-at-event-location): Add debug decls. + (mh-seq-msgs): Use defsubst. + +2008-02-05 Juanma Barranquero + + * mh-e.el (mh-scan-format-file-check, mh-adaptive-cmd-note-flag-check): + * mh-xface.el (mh-x-image-url-cache-canonicalize): + Replace `legal' with `valid'. + 2007-08-19 Jeffrey C Honig * mh-e.el (mh-invisible-header-fields-internal): We want to show diff -r 773ae07da318 -r f991f10f15ec lisp/mh-e/mh-acros.el --- a/lisp/mh-e/mh-acros.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/mh-e/mh-acros.el Sun Feb 24 10:09:07 2008 +0000 @@ -65,12 +65,14 @@ ;;;###mh-autoload (defmacro mh-do-in-gnu-emacs (&rest body) "Execute BODY if in GNU Emacs." + (declare (debug t)) (unless (featurep 'xemacs) `(progn ,@body))) (put 'mh-do-in-gnu-emacs 'lisp-indent-hook 'defun) ;;;###mh-autoload (defmacro mh-do-in-xemacs (&rest body) "Execute BODY if in XEmacs." + (declare (debug t)) (when (featurep 'xemacs) `(progn ,@body))) (put 'mh-do-in-xemacs 'lisp-indent-hook 'defun) @@ -178,6 +180,7 @@ worry about file locking or the read-only flag, and return its result. If SAVE-MODIFICATION-FLAG is non-nil, the buffer's modification flag is unchanged, otherwise it is cleared." + (declare (debug t)) (setq save-modification-flag (car save-modification-flag)) ; CL style `(prog1 (let ((mh-folder-updating-mod-flag (buffer-modified-p)) @@ -196,6 +199,7 @@ "Format is (mh-in-show-buffer (SHOW-BUFFER) &body BODY). Display buffer SHOW-BUFFER in other window and execute BODY in it. Stronger than `save-excursion', weaker than `save-window-excursion'." + (declare (debug t)) (setq show-buffer (car show-buffer)) ; CL style `(let ((mh-in-show-buffer-saved-window (selected-window))) (switch-to-buffer-other-window ,show-buffer) @@ -212,6 +216,7 @@ After BODY has been executed return to original window. The modification flag of the buffer in the event window is preserved." + (declare (debug t)) (let ((event-window (make-symbol "event-window")) (event-position (make-symbol "event-position")) (original-window (make-symbol "original-window")) @@ -245,9 +250,9 @@ ;;; Sequences and Ranges ;;;###mh-autoload -(defmacro mh-seq-msgs (sequence) +(defsubst mh-seq-msgs (sequence) "Extract messages from the given SEQUENCE." - (list 'cdr sequence)) + (cdr sequence)) ;;;###mh-autoload (defmacro mh-iterate-on-messages-in-region (var begin end &rest body) @@ -257,6 +262,7 @@ starting from BEGIN till END. In each step BODY is executed. If VAR is nil then the loop is executed without any binding." + (declare (debug (symbolp body))) (unless (symbolp var) (error "Can not bind the non-symbol %s" var)) (let ((binding-needed-flag var)) @@ -282,6 +288,7 @@ The parameter RANGE is usually created with `mh-interactive-range' in order to provide a uniform interface to MH-E functions." + (declare (debug (symbolp body))) (unless (symbolp var) (error "Can not bind the non-symbol %s" var)) (let ((binding-needed-flag var) diff -r 773ae07da318 -r f991f10f15ec lisp/mh-e/mh-e.el --- a/lisp/mh-e/mh-e.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/mh-e/mh-e.el Sun Feb 24 10:09:07 2008 +0000 @@ -1982,7 +1982,7 @@ :package-version '(MH-E . "7.0")) (defun mh-scan-format-file-check (symbol value) - "Check if desired setting is legal. + "Check if desired setting is valid. Throw an error if user tries to set `mh-scan-format-file' to anything but t when `mh-adaptive-cmd-note-flag' is on. Otherwise, set SYMBOL to VALUE." @@ -2021,7 +2021,7 @@ :package-version '(MH-E . "6.0")) (defun mh-adaptive-cmd-note-flag-check (symbol value) - "Check if desired setting is legal. + "Check if desired setting is valid. Throw an error if user tries to turn on `mh-adaptive-cmd-note-flag' when `mh-scan-format-file' isn't t. Otherwise, set SYMBOL to VALUE." diff -r 773ae07da318 -r f991f10f15ec lisp/mh-e/mh-seq.el --- a/lisp/mh-e/mh-seq.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/mh-e/mh-seq.el Sun Feb 24 10:09:07 2008 +0000 @@ -53,13 +53,13 @@ ;;; Macros -(defmacro mh-make-seq (name msgs) +(defsubst mh-make-seq (name msgs) "Create sequence NAME with the given MSGS." - (list 'cons name msgs)) + (cons name msgs)) -(defmacro mh-seq-name (sequence) +(defsubst mh-seq-name (sequence) "Extract sequence name from the given SEQUENCE." - (list 'car sequence)) + (car sequence)) diff -r 773ae07da318 -r f991f10f15ec lisp/mh-e/mh-xface.el --- a/lisp/mh-e/mh-xface.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/mh-e/mh-xface.el Sun Feb 24 10:09:07 2008 +0000 @@ -360,8 +360,8 @@ "Canonicalize URL. Replace the ?/ character with a ?! character and append .png. Also replaces special characters with `mh-url-hexify-string' -since not all characters, such as :, are legal within Windows -filenames. In addition, replaces * with %2a. See URL +since not all characters, such as :, are valid within Windows +filenames. In addition, replaces * with %2a. See URL `http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/iitemnamelimits/GetValidCharacters.asp'." (format "%s/%s.png" mh-x-image-cache-directory (mh-replace-regexp-in-string diff -r 773ae07da318 -r f991f10f15ec lisp/net/ange-ftp.el --- a/lisp/net/ange-ftp.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/net/ange-ftp.el Sun Feb 24 10:09:07 2008 +0000 @@ -297,7 +297,7 @@ ;; you would type: ;; C-x C-f /anonymous@ymir.claremont.edu:CSV/POLICY/RULES.MEM ;; -;; A legal VMS filename is of the form: FILE.TYPE;## +;; A valid VMS filename is of the form: FILE.TYPE;## ;; where FILE can be up to 39 characters ;; TYPE can be up to 39 characters ;; ## is a version number (an integer between 1 and 32,767) diff -r 773ae07da318 -r f991f10f15ec lisp/net/net-utils.el --- a/lisp/net/net-utils.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/net/net-utils.el Sun Feb 24 10:09:07 2008 +0000 @@ -93,7 +93,7 @@ :group 'net-utils :type '(repeat string)) -(defcustom ipconfig-program +(defcustom ifconfig-program (if (eq system-type 'windows-nt) "ipconfig" "ifconfig") @@ -101,11 +101,13 @@ :group 'net-utils :type 'string) -(defcustom ipconfig-program-options +(define-obsolete-variable-alias 'ipconfig-program 'ifconfig-program "22.2") + +(defcustom ifconfig-program-options (list (if (eq system-type 'windows-nt) "/all" "-a")) - "Options for ipconfig-program." + "Options for `ifconfig-program'." :group 'net-utils :type '(repeat string)) @@ -121,6 +123,9 @@ :type '(repeat string) :version "23.1") +(define-obsolete-variable-alias 'ipconfig-program-options + 'ifconfig-program-options "22.2") + (defcustom netstat-program "netstat" "Program to print network statistics." :group 'net-utils @@ -364,18 +369,18 @@ options))) ;;;###autoload -(defun ipconfig () - "Run ipconfig program." +(defun ifconfig () + "Run ifconfig program." (interactive) (net-utils-run-program - "Ipconfig" - (concat "** Ipconfig ** " ipconfig-program " ** ") - ipconfig-program - ipconfig-program-options)) + "Ifconfig" + (concat "** Ifconfig ** " ifconfig-program " ** ") + ifconfig-program + ifconfig-program-options)) -;; This is the normal name on most Unixes. +;; Windows uses this name. ;;;###autoload -(defalias 'ifconfig 'ipconfig) +(defalias 'ipconfig 'ifconfig) ;;;###autoload (defun iwconfig () diff -r 773ae07da318 -r f991f10f15ec lisp/net/rcirc.el --- a/lisp/net/rcirc.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/net/rcirc.el Sun Feb 24 10:09:07 2008 +0000 @@ -2137,23 +2137,24 @@ string)) (defvar rcirc-url-regexp - (rx-to-string - `(and word-boundary - (or (and - (or (and (or "http" "https" "ftp" "file" "gopher" "news" - "telnet" "wais" "mailto") - "://") - "www.") - (1+ (char "-a-zA-Z0-9_.")) - (1+ (char "-a-zA-Z0-9_")) - (optional ":" (1+ (char "0-9")))) - (and (1+ (char "-a-zA-Z0-9_.")) - (or ".com" ".net" ".org") - word-boundary)) - (optional - (and "/" - (1+ (char "-a-zA-Z0-9_='!?#$\@~`%&*+|\\/:;.,{}[]()")) - (char "-a-zA-Z0-9_=#$\@~`%&*+|\\/:;{}[]()"))))) + (concat + "\\b\\(\\(www\\.\\|\\(s?https?\\|ftp\\|file\\|gopher\\|" + "nntp\\|news\\|telnet\\|wais\\|mailto\\|info\\):\\)" + "\\(//[-a-z0-9_.]+:[0-9]*\\)?" + (if (string-match "[[:digit:]]" "1") ;; Support POSIX? + (let ((chars "-a-z0-9_=#$@~%&*+\\/[:word:]") + (punct "!?:;.,")) + (concat + "\\(?:" + ;; Match paired parentheses, e.g. in Wikipedia URLs: + "[" chars punct "]+" "(" "[" chars punct "]+" "[" chars "]*)" "[" chars "]" + "\\|" + "[" chars punct "]+" "[" chars "]" + "\\)")) + (concat ;; XEmacs 21.4 doesn't support POSIX. + "\\([-a-z0-9_=!?#$@~%&*+\\/:;.,]\\|\\w\\)+" + "\\([-a-z0-9_=#$@~%&*+\\/]\\|\\w\\)")) + "\\)") "Regexp matching URLs. Set to nil to disable URL features in rcirc.") (defun rcirc-browse-url (&optional arg) diff -r 773ae07da318 -r f991f10f15ec lisp/progmodes/ada-mode.el --- a/lisp/progmodes/ada-mode.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/progmodes/ada-mode.el Sun Feb 24 10:09:07 2008 +0000 @@ -5180,12 +5180,9 @@ (defconst ada-font-lock-syntactic-keywords ;; Mark single quotes as having string quote syntax in 'c' instances. - ;; As a special case, ''' will not be highlighted, but if we do not - ;; set this special case, then the rest of the buffer is highlighted as - ;; a string - ;; This sets the properties of the characters, so that ada-in-string-p - ;; correctly handles '"' too... - '(("[^a-zA-Z0-9)]\\('\\)[^'\n]\\('\\)" (1 (7 . ?')) (2 (7 . ?'))) + ;; We used to explicitly avoid ''' as a special case for fear the buffer + ;; be highlighted as a string, but it seems this fear is unfounded. + '(("[^a-zA-Z0-9)]\\('\\)[^\n]\\('\\)" (1 (7 . ?')) (2 (7 . ?'))) ("^[ \t]*\\(#\\(if\\|else\\|elsif\\|end\\)\\)" (1 (11 . ?\n))))) (defvar ada-font-lock-keywords diff -r 773ae07da318 -r f991f10f15ec lisp/progmodes/cc-awk.el --- a/lisp/progmodes/cc-awk.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/progmodes/cc-awk.el Sun Feb 24 10:09:07 2008 +0000 @@ -53,6 +53,8 @@ ;; Silence the byte compiler. (cc-bytecomp-defvar font-lock-mode) ; Checked with boundp before use. +(cc-bytecomp-defvar c-new-BEG) +(cc-bytecomp-defvar c-new-END) ;; Some functions in cc-engine that are used below. There's a cyclic ;; dependency so it can't be required here. (Perhaps some functions @@ -213,7 +215,7 @@ "\\([{}@` \t]\\|\\+\\+\\|--\\|\\\\.\\)") ;; A "neutral" char(pair). Doesn't change the "state" of a subsequent /. ;; This is space/tab, braces, an auto-increment/decrement operator or an -;; escaped character. Or one of the (illegal) characters @ or `. But NOT an +;; escaped character. Or one of the (invalid) characters @ or `. But NOT an ;; end of line (even if escaped). (defconst c-awk-neutrals*-re (concat "\\(" c-awk-neutral-re "\\)*")) @@ -624,22 +626,25 @@ (forward-line -1)) (point)) -(defun c-awk-end-of-logical-line (&optional pos) -;; Go forward to the end of the (apparent) current logical line (or the end of -;; the line containing POS), returning the buffer position of that point. I.e., -;; go to the end of the next line which doesn't have an escaped EOL. +(defun c-awk-beyond-logical-line (&optional pos) +;; Return the position just beyond the (apparent) current logical line, or the +;; one containing POS. This is usually the beginning of the next line which +;; doesn't follow an escaped EOL. At EOB, this will be EOB. +;; +;; Point is unchanged. ;; ;; This is guaranteed to be "safe" for syntactic analysis, i.e. outwith any ;; comment, string or regexp. IT MAY WELL BE that this function should not be ;; executed on a narrowed buffer. -;; -;; This function might do hidden buffer changes. - (if pos (goto-char pos)) - (end-of-line) - (while (and (< (point) (point-max)) - (eq (char-before) ?\\)) - (end-of-line 2)) - (point)) + (save-excursion + (if pos (goto-char pos)) + (end-of-line) + (while (and (< (point) (point-max)) + (eq (char-before) ?\\)) + (end-of-line 2)) + (if (< (point) (point-max)) + (1+ (point)) + (point)))) ;; ACM, 2002/02/15: The idea of the next function is to put the "Error font" ;; on strings/regexps which are missing their closing delimiter. @@ -712,7 +717,7 @@ ;; ;; The result is what ANCHOR-STATE-/DIV (see above) is where point is left. ;; - ;; This function might do hidden buffer changes. + ;; This function does hidden buffer changes. (let ((/point (point))) (goto-char anchor) ;; Analyse the line to find out what the / is. @@ -780,55 +785,38 @@ (c-awk-syntax-tablify-/ anchor anchor-state-/div)))) nil)) - ;; ACM, 2002/07/21: Thoughts: We need an AWK Mode after-change function to set ;; the syntax-table properties even when font-lock isn't enabled, for the ;; subsequent use of movement functions, etc. However, it seems that if font ;; lock _is_ enabled, we can always leave it to do the job. -(defvar c-awk-old-EOLL 0) -(make-variable-buffer-local 'c-awk-old-EOLL) -;; End of logical line following the region which is about to be changed. Set -;; in c-awk-before-change and used in c-awk-after-change. +(defvar c-awk-old-ByLL 0) +(make-variable-buffer-local 'c-awk-old-Byll) +;; Just beyond logical line following the region which is about to be changed. +;; Set in c-awk-record-region-clear-NL and used in c-awk-after-change. -(defun c-awk-before-change (beg end) +(defun c-awk-record-region-clear-NL (beg end) ;; This function is called exclusively from the before-change-functions hook. ;; It does two things: Finds the end of the (logical) line on which END lies, -;; and clears c-awk-NL-prop text properties from this point onwards. +;; and clears c-awk-NL-prop text properties from this point onwards. BEG is +;; ignored. ;; -;; This function might do hidden buffer changes. - (save-restriction - (save-excursion - (setq c-awk-old-EOLL (c-awk-end-of-logical-line end)) - (c-save-buffer-state nil - (c-awk-clear-NL-props end (point-max)))))) +;; On entry, the buffer will have been widened and match-data will have been +;; saved; point is undefined on both entry and exit; the return value is +;; ignored. +;; +;; This function does hidden buffer changes. + (c-save-buffer-state () + (setq c-awk-old-ByLL (c-awk-beyond-logical-line end)) + (c-save-buffer-state nil + (c-awk-clear-NL-props end (point-max))))) (defun c-awk-end-of-change-region (beg end old-len) ;; Find the end of the region which needs to be font-locked after a change. ;; This is the end of the logical line on which the change happened, either ;; as it was before the change, or as it is now, whichever is later. ;; N.B. point is left undefined. - ;; - ;; This function might do hidden buffer changes. - (max (+ (- c-awk-old-EOLL old-len) (- end beg)) - (c-awk-end-of-logical-line end))) - -(defun c-awk-after-change (beg end old-len) -;; This function is called exclusively as an after-change function in -;; AWK Mode. It ensures that the syntax-table properties get set in the -;; changed region. However, if font-lock is enabled, this function does -;; nothing, since an enabled font-lock after-change function will always do -;; this. -;; -;; This function might do hidden buffer changes. - (unless (and (boundp 'font-lock-mode) font-lock-mode) - (save-restriction - (save-excursion - (save-match-data - (setq end (c-awk-end-of-change-region beg end old-len)) - (c-awk-beginning-of-logical-line beg) - (c-save-buffer-state nil ; So that read-only status isn't affected. - ; (e.g. when first loading the buffer) - (c-awk-set-syntax-table-properties end))))))) + (max (+ (- c-awk-old-ByLL old-len) (- end beg)) + (c-awk-beyond-logical-line end))) ;; ACM 2002/5/25. When font-locking is invoked by a buffer change, the region ;; specified by the font-lock after-change function must be expanded to @@ -836,22 +824,28 @@ ;; do this in practice is to use the beginning/end-of-logical-line functions. ;; Don't overlook the possibility of the buffer change being the "recapturing" ;; of a previously escaped newline. -(defmacro c-awk-advise-fl-for-awk-region (function) - `(defadvice ,function (before get-awk-region activate) -;; When font-locking an AWK Mode buffer, make sure that any string/regexp is -;; completely font-locked. - (when (eq major-mode 'awk-mode) - (save-excursion - (ad-set-arg 1 (c-awk-end-of-change-region - (ad-get-arg 0) ; beg - (ad-get-arg 1) ; end - (ad-get-arg 2))) ; old-len - (ad-set-arg 0 (c-awk-beginning-of-logical-line (ad-get-arg 0))))))) -(c-awk-advise-fl-for-awk-region font-lock-after-change-function) -(c-awk-advise-fl-for-awk-region jit-lock-after-change) -(c-awk-advise-fl-for-awk-region lazy-lock-defer-rest-after-change) -(c-awk-advise-fl-for-awk-region lazy-lock-defer-line-after-change) +;; ACM 2008-02-05: +(defun c-awk-extend-and-syntax-tablify-region (beg end old-len) + ;; Expand the region (BEG END) as needed to (c-new-BEG c-new-END) then put + ;; `syntax-table' properties on this region. + ;; + ;; This function is called from an after-change function, BEG END and + ;; OLD-LEN being the standard parameters. + ;; + ;; Point is undefined both before and after this function call, the buffer + ;; has been widened, and match-data saved. The return value is ignored. + ;; + ;; It prepares the buffer for font + ;; locking, hence must get called before `font-lock-after-change-function'. + ;; + ;; This function is the AWK value of `c-before-font-lock-function'. + ;; It does hidden buffer changes. + (c-save-buffer-state () + (setq c-new-END (c-awk-end-of-change-region beg end old-len)) + (setq c-new-BEG (c-awk-beginning-of-logical-line beg)) + (goto-char c-new-BEG) + (c-awk-set-syntax-table-properties c-new-END))) ;; Awk regexps written with help from Peter Galbraith ;; . diff -r 773ae07da318 -r f991f10f15ec lisp/progmodes/cc-defs.el --- a/lisp/progmodes/cc-defs.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/progmodes/cc-defs.el Sun Feb 24 10:09:07 2008 +0000 @@ -721,7 +721,7 @@ ((bobp) (setq pos (point-min))) ((not pos) (let ((distance (skip-chars-backward "^{"))) - ;; unbalanced parenthesis, while illegal C code, + ;; unbalanced parenthesis, while invalid C code, ;; shouldn't cause an infloop! See unbal.c (when (zerop distance) ;; Punt! @@ -1028,6 +1028,39 @@ ;; Emacs. `(remove-text-properties ,from ,to '(,property nil)))) +(defun c-clear-char-property-with-value-function (from to property value) + "Remove all text-properties PROPERTY from the region (FROM, TO) +which have the value VALUE, as tested by `equal'. These +properties are assumed to be over individual characters, having +been put there by c-put-char-property. POINT remains unchanged." + (let ((place from) end-place) + (while ; loop round occurrances of (PROPERTY VALUE) + (progn + (while ; loop round changes in PROPERTY till we find VALUE + (and + (< place to) + (not (equal (get-text-property place property) value))) + (setq place (next-single-property-change place property nil to))) + (< place to)) + (setq end-place (next-single-property-change place property nil to)) + (put-text-property place end-place property nil) + ;; Do we have to do anything with stickiness here? + (setq place end-place)))) + +(defmacro c-clear-char-property-with-value (from to property value) + "Remove all text-properties PROPERTY from the region [FROM, TO) +which have the value VALUE, as tested by `equal'. These +properties are assumed to be over individual characters, having +been put there by c-put-char-property. POINT remains unchanged." + (if c-use-extents + ;; XEmacs + `(let ((-property- ,property)) + (map-extents (lambda (ext val) + (if (equal (extent-property ext -property-) val) + (delete-extent ext))) + nil ,from ,to ,value nil -property-)) + ;; Gnu Emacs + `(c-clear-char-property-with-value-function ,from ,to ,property ,value))) ;; Macros to put overlays (Emacs) or extents (XEmacs) on buffer text. ;; For our purposes, these are characterized by being possible to diff -r 773ae07da318 -r f991f10f15ec lisp/progmodes/cc-engine.el --- a/lisp/progmodes/cc-engine.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/progmodes/cc-engine.el Sun Feb 24 10:09:07 2008 +0000 @@ -81,8 +81,9 @@ ;; assume that these text properties are used as described here. ;; ;; 'syntax-table -;; Used to modify the syntax of some characters. Currently used to -;; mark the "<" and ">" of angle bracket parens with paren syntax. +;; Used to modify the syntax of some characters. It is used to +;; mark the "<" and ">" of angle bracket parens with paren syntax, and +;; to "hide" obtrusive characters in preprocessor lines. ;; ;; This property is used on single characters and is therefore ;; always treated as front and rear nonsticky (or start and end open diff -r 773ae07da318 -r f991f10f15ec lisp/progmodes/cc-fonts.el --- a/lisp/progmodes/cc-fonts.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/progmodes/cc-fonts.el Sun Feb 24 10:09:07 2008 +0000 @@ -394,14 +394,14 @@ `(;; The stuff after #error and #warning is a message, so ;; fontify it as a string. ,@(when (c-lang-const c-cpp-message-directives) - (let* ((re (c-make-keywords-re nil + (let* ((re (c-make-keywords-re 'appendable ; nil (c-lang-const c-cpp-message-directives))) (re-depth (regexp-opt-depth re))) `((,(concat noncontinued-line-end (c-lang-const c-opt-cpp-prefix) re "\\s +\\(.*\\)$") - ,(+ ncle-depth re-depth 1) font-lock-string-face)))) + ,(+ ncle-depth re-depth 1) font-lock-string-face t)))) ;; Fontify filenames in #include <...> as strings. ,@(when (c-lang-const c-cpp-include-directives) diff -r 773ae07da318 -r f991f10f15ec lisp/progmodes/cc-langs.el --- a/lisp/progmodes/cc-langs.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/progmodes/cc-langs.el Sun Feb 24 10:09:07 2008 +0000 @@ -414,6 +414,49 @@ classifies symbol constituents like '_' and '$' as word constituents, so that all identifiers are recognized as words.") +(c-lang-defconst c-get-state-before-change-function + "If non-nil, a function called from c-before-change-hook. +Typically it will record enough state to allow +`c-before-font-lock-function' to extend the region to fontify, +and may do such things as removing text-properties which must be +recalculated. + +It takes 2 parameters, the BEG and END supplied to every +before-change function; on entry, the buffer will have been +widened and match-data will have been saved; point is undefined +on both entry and exit; the return value is ignored. + +When the mode is initialized, this function is called with +parameters \(point-min) and \(point-max)." + t nil + (c c++ objc) 'c-extend-region-for-CPP + awk 'c-awk-record-region-clear-NL) +(c-lang-defvar c-get-state-before-change-function + (c-lang-const c-get-state-before-change-function)) + +(c-lang-defconst c-before-font-lock-function + "If non-nil, a function called just before font locking. +Typically it will extend the region about to be fontified \(see +below) and will set `syntax-table' text properties on the region. + +It takes 3 parameters, the BEG, END, and OLD-LEN supplied to +every after-change function; point is undefined on both entry and +exit; on entry, the buffer will have been widened and match-data +will have been saved; the return value is ignored. + +The function may extend the region to be fontified by setting the +buffer local variables c-old-BEG and c-old-LEN. + +The function is called even when font locking is disabled. + +When the mode is initialized, this function is called with +parameters \(point-min), \(point-max) and ." + t nil + (c c++ objc) 'c-neutralize-syntax-in-CPP + awk 'c-awk-extend-and-syntax-tablify-region) +(c-lang-defvar c-before-font-lock-function + (c-lang-const c-before-font-lock-function)) + ;;; Lexer-level syntax (identifiers, tokens etc). @@ -645,6 +688,13 @@ (java awk) nil) (c-lang-defvar c-opt-cpp-prefix (c-lang-const c-opt-cpp-prefix)) +(c-lang-defconst c-anchored-cpp-prefix + "Regexp matching the prefix of a cpp directive anchored to BOL, +in the languages that have a macro preprocessor." + t (if (c-lang-const c-opt-cpp-prefix) + (concat "^" (c-lang-const c-opt-cpp-prefix)))) +(c-lang-defvar c-anchored-cpp-prefix (c-lang-const c-anchored-cpp-prefix)) + (c-lang-defconst c-opt-cpp-start "Regexp matching the prefix of a cpp directive including the directive name, or nil in languages without preprocessor support. The first @@ -662,7 +712,7 @@ string message." t (if (c-lang-const c-opt-cpp-prefix) '("error")) - pike '("error" "warning")) + (c c++ objc pike) '("error" "warning")) (c-lang-defconst c-cpp-include-directives "List of cpp directives (without the prefix) that are followed by a @@ -700,7 +750,7 @@ (c-lang-const c-opt-cpp-macro-define-id)) (c-lang-defconst c-cpp-expr-directives - "List if cpp directives (without the prefix) that are followed by an + "List of cpp directives (without the prefix) that are followed by an expression." t (if (c-lang-const c-opt-cpp-prefix) '("if" "elif"))) diff -r 773ae07da318 -r f991f10f15ec lisp/progmodes/cc-mode.el --- a/lisp/progmodes/cc-mode.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/progmodes/cc-mode.el Sun Feb 24 10:09:07 2008 +0000 @@ -467,117 +467,6 @@ (defvar c-maybe-stale-found-type nil) (make-variable-buffer-local 'c-maybe-stale-found-type) -(defun c-before-change (beg end) - ;; Function to be put on `before-change-function'. Currently - ;; (2007-02) it is used only to remove stale entries from the - ;; `c-found-types' cache, and to record entries which a - ;; `c-after-change' function might confirm as stale. - ;; - ;; Note that this function must be FAST rather than accurate. Note - ;; also that it only has any effect when font locking is enabled. - ;; We exploit this by checking for font-lock-*-face instead of doing - ;; rigourous syntactic analysis. - - ;; If either change boundary is wholly inside an identifier, delete - ;; it/them from the cache. Don't worry about being inside a string - ;; or a comment - "wrongly" removing a symbol from `c-found-types' - ;; isn't critical. - (setq c-maybe-stale-found-type nil) - (save-restriction - (save-match-data - (widen) - (save-excursion - ;; Are we inserting/deleting stuff in the middle of an identifier? - (c-unfind-enclosing-token beg) - (c-unfind-enclosing-token end) - ;; Are we coalescing two tokens together, e.g. "fo o" -> "foo"? - (when (< beg end) - (c-unfind-coalesced-tokens beg end)) - ;; Are we (potentially) disrupting the syntactic context which - ;; makes a type a type? E.g. by inserting stuff after "foo" in - ;; "foo bar;", or before "foo" in "typedef foo *bar;"? - ;; - ;; We search for appropriate c-type properties "near" the change. - ;; First, find an appropriate boundary for this property search. - (let (lim - type type-pos - marked-id term-pos - (end1 - (or (and (eq (get-text-property end 'face) 'font-lock-comment-face) - (previous-single-property-change end 'face)) - end))) - (when (>= end1 beg) ; Don't hassle about changes entirely in comments. - ;; Find a limit for the search for a `c-type' property - (while - (and (/= (skip-chars-backward "^;{}") 0) - (> (point) (point-min)) - (memq (c-get-char-property (1- (point)) 'face) - '(font-lock-comment-face font-lock-string-face)))) - (setq lim (max (point-min) (1- (point)))) - - ;; Look for the latest `c-type' property before end1 - (when (and (> end1 (point-min)) - (setq type-pos - (if (get-text-property (1- end1) 'c-type) - end1 - (previous-single-property-change end1 'c-type nil lim)))) - (setq type (get-text-property (max (1- type-pos) lim) 'c-type)) - - (when (memq type '(c-decl-id-start c-decl-type-start)) - ;; Get the identifier, if any, that the property is on. - (goto-char (1- type-pos)) - (setq marked-id - (when (looking-at "\\(\\sw\\|\\s_\\)") - (c-beginning-of-current-token) - (buffer-substring-no-properties (point) type-pos))) - - (goto-char end1) - (skip-chars-forward "^;{}") ; FIXME!!! loop for comment, maybe - (setq lim (point)) - (setq term-pos - (or (next-single-property-change end 'c-type nil lim) lim)) - (setq c-maybe-stale-found-type - (list type marked-id - type-pos term-pos - (buffer-substring-no-properties type-pos term-pos) - (buffer-substring-no-properties beg end))))))))))) - -(defun c-after-change (beg end old-len) - ;; Function put on `after-change-functions' to adjust various caches - ;; etc. Prefer speed to finesse here, since there will be an order - ;; of magnitude more calls to this function than any of the - ;; functions that use the caches. - ;; - ;; Note that care must be taken so that this is called before any - ;; font-lock callbacks since we might get calls to functions using - ;; these caches from inside them, and we must thus be sure that this - ;; has already been executed. - - (c-save-buffer-state () - ;; When `combine-after-change-calls' is used we might get calls - ;; with regions outside the current narrowing. This has been - ;; observed in Emacs 20.7. - (save-restriction - (save-match-data ; c-recognize-<>-arglists changes match-data - (widen) - - (when (> end (point-max)) - ;; Some emacsen might return positions past the end. This has been - ;; observed in Emacs 20.7 when rereading a buffer changed on disk - ;; (haven't been able to minimize it, but Emacs 21.3 appears to - ;; work). - (setq end (point-max)) - (when (> beg end) - (setq beg end))) - - (c-trim-found-types beg end old-len) ; maybe we don't need all of these. - (c-invalidate-sws-region-after beg end) - (c-invalidate-state-cache beg) - (c-invalidate-find-decl-cache beg) - - (when c-recognize-<>-arglists - (c-after-change-check-<>-operators beg end)))))) - (defun c-basic-common-init (mode default-style) "Do the necessary initialization for the syntax handling routines and the line breaking/filling code. Intended to be used by other @@ -625,7 +514,8 @@ (setq fill-paragraph-function 'c-fill-paragraph) (when (or c-recognize-<>-arglists - (c-major-mode-is 'awk-mode)) + (c-major-mode-is 'awk-mode) + (c-major-mode-is '(c-mode c++-mode objc-mode))) ;; We'll use the syntax-table text property to change the syntax ;; of some chars for this language, so do the necessary setup for ;; that. @@ -712,34 +602,6 @@ (make-local-hook 'after-change-functions) (add-hook 'after-change-functions 'c-after-change nil t)) -(defun c-after-font-lock-init () - ;; Put on `font-lock-mode-hook'. - (remove-hook 'after-change-functions 'c-after-change t) - (add-hook 'after-change-functions 'c-after-change nil t)) - -(defun c-font-lock-init () - "Set up the font-lock variables for using the font-lock support in CC Mode. -This does not load the font-lock package. Use after -`c-basic-common-init' and after cc-fonts has been loaded." - - (make-local-variable 'font-lock-defaults) - (setq font-lock-defaults - `(,(if (c-major-mode-is 'awk-mode) - ;; awk-mode currently has only one font lock level. - 'awk-font-lock-keywords - (mapcar 'c-mode-symbol - '("font-lock-keywords" "font-lock-keywords-1" - "font-lock-keywords-2" "font-lock-keywords-3"))) - nil nil - ,c-identifier-syntax-modifications - c-beginning-of-syntax - (font-lock-lines-before . 1) - (font-lock-mark-block-function - . c-mark-function))) - - (make-local-hook 'font-lock-mode-hook) - (add-hook 'font-lock-mode-hook 'c-after-font-lock-init nil t)) - (defun c-setup-doc-comment-style () "Initialize the variables that depend on the value of `c-doc-comment-style'." (when (and (featurep 'font-lock) @@ -769,6 +631,16 @@ ;; Only initialize font locking if we aren't called from an old package. (c-font-lock-init)) + ;; Starting a mode is a sort of "change". So call the change functions... + (save-restriction + (widen) + (save-excursion + (if c-get-state-before-change-function + (funcall c-get-state-before-change-function (point-min) (point-max))) + (if c-before-font-lock-function + (funcall c-before-font-lock-function (point-min) (point-max) + (- (point-max) (point-min)))))) + (make-local-variable 'outline-regexp) (make-local-variable 'outline-level) (setq outline-regexp "[^#\n\^M]" @@ -878,6 +750,280 @@ `(progn ,@(mapcar (lambda (hook) `(run-hooks ,hook)) hooks)))) +;;; Change hooks, linking with Font Lock. + +;; Buffer local variables defining the region to be fontified by a font lock +;; after-change function. They are set in c-after-change to +;; after-change-function's BEG and END, and may be modified by a +;; `c-before-font-lock-function'. +(defvar c-new-BEG 0) +(make-variable-buffer-local 'c-new-BEG) +(defvar c-new-END 0) +(make-variable-buffer-local 'c-new-END) + +;; Buffer local variables recording Beginning/End-of-Macro position before a +;; change, when a macro straddles, respectively, the BEG or END (or both) of +;; the change region. Otherwise these have the values BEG/END. +(defvar c-old-BOM 0) +(make-variable-buffer-local 'c-old-BOM) +(defvar c-old-EOM 0) +(make-variable-buffer-local 'c-old-EOM) + +(defun c-extend-region-for-CPP (beg end) + ;; Set c-old-BOM or c-old-EOM respectively to BEG, END, each extended to the + ;; beginning/end of any preprocessor construct they may be in. + ;; + ;; Point is undefined both before and after this function call; the buffer + ;; has already been widened, and match-data saved. The return value is + ;; meaningless. + ;; + ;; This function is the C/C++/ObjC value of + ;; `c-get-state-before-change-function' and is called exclusively as a + ;; before change function. + (goto-char beg) + (c-beginning-of-macro) + (setq c-old-BOM (point)) + + (goto-char end) + (if (c-beginning-of-macro) + (c-end-of-macro)) + (setq c-old-EOM (point))) + +(defun c-neutralize-CPP-line (beg end) + ;; BEG and END bound a preprocessor line. Put a "punctuation" syntax-table + ;; property on syntactically obtrusive characters, ones which would interact + ;; syntactically with stuff outside the CPP line. + ;; + ;; These are unmatched string delimiters, or unmatched + ;; parens/brackets/braces. An unclosed comment is regarded as valid, NOT + ;; obtrusive. + (let (s) + (while + (progn + (setq s (parse-partial-sexp beg end -1)) + (cond + ((< (nth 0 s) 0) ; found an unmated ),},] + (c-put-char-property (1- (point)) 'syntax-table '(1)) + t) + ((nth 3 s) ; In a string + (c-put-char-property (nth 8 s) 'syntax-table '(1)) + t) + ((> (nth 0 s) 0) ; In a (,{,[ + (c-put-char-property (nth 1 s) 'syntax-table '(1)) + t) + (t nil)))))) + +(defun c-neutralize-syntax-in-CPP (begg endd old-len) + ;; "Neutralize" every preprocessor line wholly or partially in the changed + ;; region. "Restore" lines which were CPP lines before the change and are + ;; no longer so; these can be located from the Buffer local variables + ;; c-old-[EB]OM. + ;; + ;; That is, set syntax-table properties on characters that would otherwise + ;; interact syntactically with those outside the CPP line(s). + ;; + ;; This function is called from an after-change function, BEGG ENDD and + ;; OLD-LEN being the standard parameters. It prepares the buffer for font + ;; locking, hence must get called before `font-lock-after-change-function'. + ;; + ;; Point is undefined both before and after this function call, the buffer + ;; has been widened, and match-data saved. The return value is ignored. + ;; + ;; This function is the C/C++/ObjC value of `c-before-font-lock-function'. + ;; + ;; This function might do invisible changes. + (c-save-buffer-state (limits mbeg beg end) + ;; First calculate the region, possibly to be extended. + (setq beg (min begg c-old-BOM)) + (goto-char endd) + (when (c-beginning-of-macro) + (c-end-of-macro)) + (setq end (max (+ (- c-old-EOM old-len) (- endd begg)) + (point))) + ;; Clear all old punctuation properties + (c-clear-char-property-with-value beg end 'syntax-table '(1)) + + (goto-char beg) + ;; If we're inside a string/comment, go to its end. + (if (setq limits (c-literal-limits)) + (goto-char (cdr limits))) + + (while (and (< (point) end) + (search-forward-regexp c-anchored-cpp-prefix end t)) + (when (c-beginning-of-macro) ; Guard against being in a string/comment. + (setq mbeg (point)) + (c-end-of-macro) ; Do we need to go forward 1 char here? No! + (c-neutralize-CPP-line mbeg (point))) + (forward-char)))) ; We might still be in a comment - this is OK. + +(defun c-before-change (beg end) + ;; Function to be put on `before-change-function'. Primarily, this calls + ;; the language dependent `c-get-state-before-change-function'. It is + ;; otherwise used only to remove stale entries from the `c-found-types' + ;; cache, and to record entries which a `c-after-change' function might + ;; confirm as stale. + ;; + ;; Note that this function must be FAST rather than accurate. Note + ;; also that it only has any effect when font locking is enabled. + ;; We exploit this by checking for font-lock-*-face instead of doing + ;; rigourous syntactic analysis. + + ;; If either change boundary is wholly inside an identifier, delete + ;; it/them from the cache. Don't worry about being inside a string + ;; or a comment - "wrongly" removing a symbol from `c-found-types' + ;; isn't critical. + (setq c-maybe-stale-found-type nil) + (save-restriction + (save-match-data + (widen) + (save-excursion + ;; Are we inserting/deleting stuff in the middle of an identifier? + (c-unfind-enclosing-token beg) + (c-unfind-enclosing-token end) + ;; Are we coalescing two tokens together, e.g. "fo o" -> "foo"? + (when (< beg end) + (c-unfind-coalesced-tokens beg end)) + ;; Are we (potentially) disrupting the syntactic context which + ;; makes a type a type? E.g. by inserting stuff after "foo" in + ;; "foo bar;", or before "foo" in "typedef foo *bar;"? + ;; + ;; We search for appropriate c-type properties "near" the change. + ;; First, find an appropriate boundary for this property search. + (let (lim + type type-pos + marked-id term-pos + (end1 + (or (and (eq (get-text-property end 'face) 'font-lock-comment-face) + (previous-single-property-change end 'face)) + end))) + (when (>= end1 beg) ; Don't hassle about changes entirely in comments. + ;; Find a limit for the search for a `c-type' property + (while + (and (/= (skip-chars-backward "^;{}") 0) + (> (point) (point-min)) + (memq (c-get-char-property (1- (point)) 'face) + '(font-lock-comment-face font-lock-string-face)))) + (setq lim (max (point-min) (1- (point)))) + + ;; Look for the latest `c-type' property before end1 + (when (and (> end1 (point-min)) + (setq type-pos + (if (get-text-property (1- end1) 'c-type) + end1 + (previous-single-property-change end1 'c-type nil lim)))) + (setq type (get-text-property (max (1- type-pos) lim) 'c-type)) + + (when (memq type '(c-decl-id-start c-decl-type-start)) + ;; Get the identifier, if any, that the property is on. + (goto-char (1- type-pos)) + (setq marked-id + (when (looking-at "\\(\\sw\\|\\s_\\)") + (c-beginning-of-current-token) + (buffer-substring-no-properties (point) type-pos))) + + (goto-char end1) + (skip-chars-forward "^;{}") ; FIXME!!! loop for comment, maybe + (setq lim (point)) + (setq term-pos + (or (next-single-property-change end 'c-type nil lim) lim)) + (setq c-maybe-stale-found-type + (list type marked-id + type-pos term-pos + (buffer-substring-no-properties type-pos term-pos) + (buffer-substring-no-properties beg end))))))) + + (setq c-new-BEG beg + c-new-END end) + (if c-get-state-before-change-function + (funcall c-get-state-before-change-function beg end)) + )))) + +(defun c-after-change (beg end old-len) + ;; Function put on `after-change-functions' to adjust various caches + ;; etc. Prefer speed to finesse here, since there will be an order + ;; of magnitude more calls to this function than any of the + ;; functions that use the caches. + ;; + ;; Note that care must be taken so that this is called before any + ;; font-lock callbacks since we might get calls to functions using + ;; these caches from inside them, and we must thus be sure that this + ;; has already been executed. + ;; + ;; This calls the language variable c-before-font-lock-function, if non nil. + ;; This typically sets `syntax-table' properties. + + (c-save-buffer-state () + ;; When `combine-after-change-calls' is used we might get calls + ;; with regions outside the current narrowing. This has been + ;; observed in Emacs 20.7. + (save-restriction + (save-match-data ; c-recognize-<>-arglists changes match-data + (widen) + + (when (> end (point-max)) + ;; Some emacsen might return positions past the end. This has been + ;; observed in Emacs 20.7 when rereading a buffer changed on disk + ;; (haven't been able to minimize it, but Emacs 21.3 appears to + ;; work). + (setq end (point-max)) + (when (> beg end) + (setq beg end))) + + (c-trim-found-types beg end old-len) ; maybe we don't need all of these. + (c-invalidate-sws-region-after beg end) + (c-invalidate-state-cache beg) + (c-invalidate-find-decl-cache beg) + + (when c-recognize-<>-arglists + (c-after-change-check-<>-operators beg end)) + + (if c-before-font-lock-function + (save-excursion + (funcall c-before-font-lock-function beg end old-len))))))) + +(defun c-after-font-lock-init () + ;; Put on `font-lock-mode-hook'. + (remove-hook 'after-change-functions 'c-after-change t) + (add-hook 'after-change-functions 'c-after-change nil t)) + +(defun c-font-lock-init () + "Set up the font-lock variables for using the font-lock support in CC Mode. +This does not load the font-lock package. Use after +`c-basic-common-init' and after cc-fonts has been loaded." + + (make-local-variable 'font-lock-defaults) + (setq font-lock-defaults + `(,(if (c-major-mode-is 'awk-mode) + ;; awk-mode currently has only one font lock level. + 'awk-font-lock-keywords + (mapcar 'c-mode-symbol + '("font-lock-keywords" "font-lock-keywords-1" + "font-lock-keywords-2" "font-lock-keywords-3"))) + nil nil + ,c-identifier-syntax-modifications + c-beginning-of-syntax + (font-lock-lines-before . 1) + (font-lock-mark-block-function + . c-mark-function))) + + (make-local-hook 'font-lock-mode-hook) + (add-hook 'font-lock-mode-hook 'c-after-font-lock-init nil t)) + +(defmacro c-advise-fl-for-region (function) + `(defadvice ,function (before get-awk-region activate) +;; When font-locking an AWK Mode buffer, make sure that any string/regexp is +;; completely font-locked. + (when (eq major-mode 'awk-mode) + (save-excursion + (ad-set-arg 1 c-new-END) ; end + (ad-set-arg 0 c-new-BEG))))) ; beg + +(c-advise-fl-for-region font-lock-after-change-function) +(c-advise-fl-for-region jit-lock-after-change) +(c-advise-fl-for-region lazy-lock-defer-rest-after-change) +(c-advise-fl-for-region lazy-lock-defer-line-after-change) + + ;; Support for C ;;;###autoload @@ -1339,21 +1485,7 @@ (use-local-map awk-mode-map) (c-init-language-vars-for 'awk-mode) (c-common-init 'awk-mode) - ;; The rest of CC Mode does not (yet) use `font-lock-syntactic-keywords', - ;; so it's not set by `c-font-lock-init'. - (make-local-variable 'font-lock-syntactic-keywords) - (setq font-lock-syntactic-keywords - '((c-awk-set-syntax-table-properties - 0 (0) ; Everything on this line is a dummy. - nil t))) (c-awk-unstick-NL-prop) - (add-hook 'before-change-functions 'c-awk-before-change nil t) - (add-hook 'after-change-functions 'c-awk-after-change nil t) - (c-save-buffer-state nil - (save-restriction - (widen) - (c-awk-clear-NL-props (point-min) (point-max)) - (c-awk-after-change (point-min) (point-max) 0))) ; Set syntax-table props. ;; Prevent Xemacs's buffer-syntactic-context being used. See the comment ;; in cc-engine.el, just before (defun c-fast-in-literal ... diff -r 773ae07da318 -r f991f10f15ec lisp/progmodes/cc-styles.el --- a/lisp/progmodes/cc-styles.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/progmodes/cc-styles.el Sun Feb 24 10:09:07 2008 +0000 @@ -423,7 +423,7 @@ (defun c-read-offset (langelem) ;; read new offset value for LANGELEM from minibuffer. return a - ;; legal value only + ;; valid value only (let* ((oldoff (cdr-safe (or (assq langelem c-offsets-alist) (assq langelem (get 'c-offsets-alist 'c-stylevar-fallback))))) @@ -555,7 +555,7 @@ "[ \t\f]*\\\\?$") (setq c-sentence-end-with-esc-eol (concat "\\(\\(" (c-default-value-sentence-end) "\\)" - ;; N.B.: "$" would be illegal when not enclosed like "\\($\\)". + ;; N.B.: "$" would be invalid when not enclosed like "\\($\\)". "\\|" "[.?!][]\"')}]* ?\\\\\\($\\)[ \t\n]*" "\\)"))) diff -r 773ae07da318 -r f991f10f15ec lisp/progmodes/compile.el --- a/lisp/progmodes/compile.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/progmodes/compile.el Sun Feb 24 10:09:07 2008 +0000 @@ -1629,9 +1629,13 @@ (defun compilation-next-error (n &optional different-file pt) "Move point to the next error in the compilation buffer. +This function does NOT find the source line like \\[next-error]. Prefix arg N says how many error messages to move forwards (or backwards, if negative). -Does NOT find the source line like \\[next-error]." +Optional arg DIFFERENT-FILE, if non-nil, means find next error for a +file that is different from the current one. +Optional arg PT, if non-nil, specifies the value of point to start +looking for the next message." (interactive "p") (or (compilation-buffer-p (current-buffer)) (error "Not in a compilation buffer")) @@ -1943,13 +1947,17 @@ (defun compilation-find-file (marker filename directory &rest formats) "Find a buffer for file FILENAME. +If FILENAME is not found at all, ask the user where to find it. +Pop up the buffer containing MARKER and scroll to MARKER if we ask +the user where to find the file. Search the directories in `compilation-search-path'. A nil in `compilation-search-path' means to try the \"current\" directory, which is passed in DIRECTORY. If DIRECTORY is relative, it is combined with `default-directory'. If DIRECTORY is nil, that means use `default-directory'. -If FILENAME is not found at all, ask the user where to find it. -Pop up the buffer containing MARKER and scroll to MARKER if we ask the user." +FORMATS, if given, is a list of formats to reformat FILENAME when +looking for it: for each element FMT in FORMATS, this function +attempts to find a file whose name is produced by (format FMT FILENAME)." (or formats (setq formats '("%s"))) (let ((dirs compilation-search-path) (spec-dir (if directory diff -r 773ae07da318 -r f991f10f15ec lisp/progmodes/cperl-mode.el --- a/lisp/progmodes/cperl-mode.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/progmodes/cperl-mode.el Sun Feb 24 10:09:07 2008 +0000 @@ -1247,7 +1247,7 @@ ["Contract groups" cperl-contract-levels cperl-use-syntax-table-text-property] "----" - ["Find next interpolated" cperl-next-interpolated-REx + ["Find next interpolated" cperl-next-interpolated-REx (next-single-property-change (point-min) 'REx-interpolated)] ["Find next interpolated (no //o)" cperl-next-interpolated-REx-0 @@ -2846,7 +2846,7 @@ (skip-chars-backward " \t") (looking-at "[ \t]*[a-zA-Z_][a-zA-Z_0-9]*[ \t]*:"))) (get-text-property (point) 'first-format-line))) - + ;; Look at previous line that's at column 0 ;; to determine whether we are in top-level decls ;; or function's arg decls. Set basic-indent accordingly. @@ -3080,7 +3080,7 @@ ((eq 'toplevel (elt i 0)) ;; [toplevel start char-after state immed-after-block] (+ (save-excursion ; To beg-of-defun, or end of last sexp (goto-char (elt i 1)) ; start = Good place to start parsing - (- (current-indentation) ; + (- (current-indentation) ; (if (elt i 4) cperl-indent-level 0))) ; immed-after-block (if (eq (elt i 2) ?{) cperl-continued-brace-offset 0) ; char-after ;; Look at previous line that's at column 0 @@ -3900,7 +3900,7 @@ ;;; XXX What to do: foo < octal (up to total 3 dig) ;; \DIGIT -> backref unless \0 - ;; \DIGITs -> backref if legal + ;; \DIGITs -> backref if valid ;; otherwise up to 3 -> octal ;; Do not try to distinguish, we guess ((or (and (memq qtag (append "01234567" nil)) @@ -4461,7 +4461,7 @@ "\\=[01234567]?[01234567]?" (1- e) 'to-end)) (and (memq qtag (append "89" nil)) - (re-search-forward + (re-search-forward "\\=[0123456789]*" (1- e) 'to-end)) (and (eq qtag ?x) (re-search-forward @@ -4499,7 +4499,7 @@ ;; in m]]: m][\\\]\]] produces [\\]] ;;; POSIX? [:word:] [:^word:] only inside [] ;;; "\\=\\(\\\\.\\|[^][\\\\]\\|\\[:\\^?\sw+:]\\|\\[[^:]\\)*]") - (while + (while (and argument (re-search-forward (if (eq (char-after b) ?\] ) @@ -5816,7 +5816,7 @@ "," cperl-maybe-white-and-comment-rex "\\([$@%*]\\([a-zA-Z0-9_:]+\\|[^a-zA-Z0-9_]\\)\\)") - ;; Bug in font-lock: limit is used not only to limit + ;; Bug in font-lock: limit is used not only to limit ;; searches, but to set the "extend window for ;; facification" property. Thus we need to minimize. ,(if cperl-font-lock-multiline @@ -6785,7 +6785,7 @@ by CPerl." (interactive "P") (or arg - (setq arg (if (eq cperl-syntaxify-by-font-lock + (setq arg (if (eq cperl-syntaxify-by-font-lock (if backtrace 'backtrace 'message)) 0 1))) (setq arg (if (> arg 0) (if backtrace 'backtrace 'message) t)) (setq cperl-syntaxify-by-font-lock arg) @@ -8246,7 +8246,7 @@ (defun cperl-invert-if-unless-modifiers () "Change `B if A;' into `if (A) {B}' etc if possible. \(Unfinished.)" - (interactive) ; + (interactive) ; (let (A B pre-B post-B pre-if post-if pre-A post-A if-string (w-rex "\\<\\(if\\|unless\\|while\\|until\\|for\\|foreach\\)\\>")) (and (= (char-syntax (preceding-char)) ?w) diff -r 773ae07da318 -r f991f10f15ec lisp/progmodes/gdb-ui.el --- a/lisp/progmodes/gdb-ui.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/progmodes/gdb-ui.el Sun Feb 24 10:09:07 2008 +0000 @@ -326,6 +326,10 @@ (setq gud-filter-pending-text nil) (run-hooks 'gdb-mode-hook)) +;; Keep as an alias for compatibility with Emacs 22.1. +;;;###autoload +(defalias 'gdba 'gdb) + (defcustom gdb-debug-log-max 128 "Maximum size of `gdb-debug-log'. If nil, size is unlimited." :group 'gud @@ -1981,15 +1985,17 @@ (interactive "e") (mouse-minibuffer-check event) (let ((posn (event-end event))) - (if (numberp (posn-point posn)) - (with-selected-window (posn-window posn) - (save-excursion - (goto-char (posn-point posn)) - (if (or (posn-object posn) - (eq (car (fringe-bitmaps-at-pos (posn-point posn))) - 'breakpoint)) - (gud-remove nil) - (gud-break nil))))))) + (if (buffer-file-name) + (if (numberp (posn-point posn)) + (with-selected-window (posn-window posn) + (save-excursion + (goto-char (posn-point posn)) + (if (or (posn-object posn) + (eq (car (fringe-bitmaps-at-pos (posn-point posn))) + 'breakpoint)) + (gud-remove nil) + (gud-break nil))))) + (posn-set-point posn)))) (defun gdb-mouse-toggle-breakpoint-margin (event) "Enable/disable breakpoint in left margin with mouse click." diff -r 773ae07da318 -r f991f10f15ec lisp/progmodes/gud.el --- a/lisp/progmodes/gud.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/progmodes/gud.el Sun Feb 24 10:09:07 2008 +0000 @@ -145,7 +145,7 @@ (easy-mmode-defmap gud-menu-map '(([help] "Info" . gud-goto-info) - ([tooltips] menu-item "Toggle GUD tooltips" gud-tooltip-mode + ([tooltips] menu-item "Show GUD tooltips" gud-tooltip-mode :enable (and (not emacs-basic-display) (display-graphic-p) (fboundp 'x-show-tip)) diff -r 773ae07da318 -r f991f10f15ec lisp/progmodes/scheme.el --- a/lisp/progmodes/scheme.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/progmodes/scheme.el Sun Feb 24 10:09:07 2008 +0000 @@ -33,7 +33,7 @@ ;; for instance, at .] ;; All these Lisp-ish modes vary basically in details of the language ;; syntax they highlight/indent/index, but dsssl-mode uses "^;;;" as -;; the page-delimiter since ^L isn't normally a legal SGML character. +;; the page-delimiter since ^L isn't normally a valid SGML character. ;; ;; For interacting with a Scheme interpreter See also `run-scheme' in ;; the `cmuscheme' package and also the implementation-specific diff -r 773ae07da318 -r f991f10f15ec lisp/progmodes/verilog-mode.el --- a/lisp/progmodes/verilog-mode.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/progmodes/verilog-mode.el Sun Feb 24 10:09:07 2008 +0000 @@ -115,9 +115,9 @@ ;;; Code: ;; This variable will always hold the version number of the mode -(defconst verilog-mode-version "383" +(defconst verilog-mode-version "399" "Version of this Verilog mode.") -(defconst verilog-mode-release-date "2008-01-07-GNU" +(defconst verilog-mode-release-date "2008-02-19-GNU" "Release date of this Verilog mode.") (defconst verilog-mode-release-emacs t "If non-nil, this version of Verilog mode was released with Emacs itself.") @@ -161,13 +161,6 @@ (defmacro store-match-data (&rest args) nil)) (error nil)) (condition-case nil - (if (boundp 'current-menubar) - nil ;; great - (progn - (defmacro add-submenu (&rest args) nil)) - ) - (error nil)) - (condition-case nil (if (fboundp 'char-before) nil ;; great (defmacro char-before (&rest body) @@ -957,7 +950,8 @@ "Keymap used in Verilog mode.") ;; menus -(defvar verilog-xemacs-menu +(easy-menu-define + verilog-menu verilog-mode-map "Menu for Verilog mode" `("Verilog" ("Choose Compilation Action" ["None" @@ -992,15 +986,12 @@ :selected (equal verilog-tool `verilog-compiler)] ) ("Move" - ,(if (featurep 'xemacs) - (progn - ["Beginning of function" verilog-beg-of-defun t] - ["End of function" verilog-end-of-defun t] - ["Mark function" verilog-mark-defun t]) - ["Beginning of function" beginning-of-defun t] - ["End of function" end-of-defun t] - ["Mark function" mark-defun t]) - + ["Beginning of function" verilog-beg-of-defun + :keys "C-M-a"] + ["End of function" verilog-end-of-defun + :keys "C-M-e"] + ["Mark function" verilog-mark-defun + :keys "C-M-h"] ["Goto function/module" verilog-goto-defun t] ["Move to beginning of block" electric-verilog-backward-sexp t] ["Move to end of block" electric-verilog-forward-sexp t] @@ -1057,11 +1048,10 @@ ["Submit bug report" verilog-submit-bug-report t] ["Version and FAQ" verilog-faq t] ["Customize Verilog Mode..." verilog-customize t] - ["Customize Verilog Fonts & Colors" verilog-font-customize t] - ) - "Emacs menu for Verilog mode." - ) -(defvar verilog-statement-menu + ["Customize Verilog Fonts & Colors" verilog-font-customize t])) + +(easy-menu-define + verilog-stmt-menu verilog-mode-map "Menu for statement templates in Verilog." '("Statements" ["Header" verilog-sk-header t] ["Comment" verilog-sk-comment t] @@ -1092,14 +1082,7 @@ ["Repeat" verilog-sk-repeat t] ["Case" verilog-sk-case t] ["Casex" verilog-sk-casex t] - ["Casez" verilog-sk-casez t] - ) - "Menu for statement templates in Verilog.") - -(easy-menu-define verilog-menu verilog-mode-map "Menu for Verilog mode" - verilog-xemacs-menu) -(easy-menu-define verilog-stmt-menu verilog-mode-map "Menu for statement templates in Verilog." - verilog-statement-menu) + ["Casez" verilog-sk-casez t])) (defvar verilog-mode-abbrev-table nil "Abbrev table in use in Verilog-mode buffers.") @@ -1451,19 +1434,18 @@ (defconst verilog-beg-block-re-ordered ( concat "\\<" "\\(begin\\)" ;1 - "\\|\\(randcase\\|\\(unique\\s-+\\|priority\\s-+\\)?case[xz]?\\)" ; 2 -;; "\\|\\(randcase\\|case[xz]?\\)" ; 2 - "\\|\\(fork\\)" ;3 - "\\|\\(class\\)" ;4 - "\\|\\(table\\)" ;5 - "\\|\\(specify\\)" ;6 - "\\|\\(function\\)" ;7 - "\\|\\(task\\)" ;8 - "\\|\\(generate\\)" ;9 - "\\|\\(covergroup\\)" ;10 - "\\|\\(property\\)" ;11 - "\\|\\(\\(rand\\)?sequence\\)" ;12 - "\\|\\(clocking\\)" ;13 + "\\|\\(randcase\\|\\(unique\\s-+\\|priority\\s-+\\)?case[xz]?\\)" ; 2,3 + "\\|\\(\\(disable\\s-+\\)?fork\\)" ;4 + "\\|\\(class\\)" ;5 + "\\|\\(table\\)" ;6 + "\\|\\(specify\\)" ;7 + "\\|\\(function\\)" ;8 + "\\|\\(task\\)" ;9 + "\\|\\(generate\\)" ;10 + "\\|\\(covergroup\\)" ;11 + "\\|\\(property\\)" ;12 + "\\|\\(\\(rand\\)?sequence\\)" ;13 + "\\|\\(clocking\\)" ;14 "\\>")) (defconst verilog-end-block-ordered-rry @@ -1526,6 +1508,8 @@ (eval-when-compile (verilog-regexp-words `( + ;; port direction (by themselves) + "inout" "input" "output" ;; integer_atom_type "byte" "shortint" "int" "longint" "integer" "time" ;; integer_vector_type @@ -1572,8 +1556,8 @@ (concat verilog-defun-re "\\|" verilog-end-defun-re)) (defconst verilog-behavioral-block-beg-re - (concat "\\(\\\\|\\\\|\\\\|\\\\|\\\\|" - "\\\\|\\\\|\\\\)")) + (eval-when-compile (verilog-regexp-words `("initial" "final" "always" "always_comb" "always_latch" "always_ff" + "function" "task")))) (defconst verilog-indent-re (eval-when-compile @@ -1638,6 +1622,7 @@ `( "endmodule" "endprimitive" "endinterface" "endpackage" "endprogram" "endclass" )))) +(defconst verilog-disable-fork-re "disable\\s-+fork") (defconst verilog-extended-case-re "\\(unique\\s-+\\|priority\\s-+\\)?case[xz]?") (defconst verilog-extended-complete-re (concat "\\(\\\\|\\\\)" @@ -1813,6 +1798,20 @@ "Font lock mode face used to highlight AMS keywords." :group 'font-lock-highlighting-faces) +(defvar verilog-font-grouping-keywords-face + 'verilog-font-lock-grouping-keywords-face + "Font to use for Verilog Grouping Keywords (such as begin..end).") +(defface verilog-font-lock-grouping-keywords-face + '((((class color) + (background light)) + (:foreground "red4" :bold t )) + (((class color) + (background dark)) + (:foreground "red4" :bold t )) + (t (:italic t))) + "Font lock mode face used to highlight verilog grouping keywords." + :group 'font-lock-highlighting-faces) + (let* ((verilog-type-font-keywords (eval-when-compile (verilog-regexp-opt @@ -1877,8 +1876,8 @@ (eval-when-compile (verilog-regexp-opt '( - "assign" "begin" "case" "casex" "casez" "randcase" "deassign" - "default" "disable" "else" "end" "endcase" "endfunction" + "assign" "case" "casex" "casez" "randcase" "deassign" + "default" "disable" "else" "endcase" "endfunction" "endgenerate" "endinterface" "endmodule" "endprimitive" "endspecify" "endtable" "endtask" "final" "for" "force" "return" "break" "continue" "forever" "fork" "function" "generate" "if" "iff" "initial" @@ -1887,7 +1886,12 @@ "always_latch" "posedge" "primitive" "priority" "release" "repeat" "specify" "table" "task" "unique" "wait" "while" "class" "program" "endclass" "endprogram" - ) nil )))) + ) nil ))) + + (verilog-font-grouping-keywords + (eval-when-compile + (verilog-regexp-opt + '( "begin" "end" ) nil )))) (setq verilog-font-lock-keywords (list @@ -1897,7 +1901,9 @@ "\\$[a-zA-Z][a-zA-Z0-9_\\$]*" "\\)\\>") ;; Fontify all types - (cons (concat "\\<\\(" verilog-type-font-keywords "\\)\\>") + (cons (concat "\\(\\<" verilog-font-grouping-keywords "\\)\\>") + 'verilog-font-lock-ams-face) + (cons (concat "\\<\\(" verilog-type-font-keywords "\\)\\>") 'font-lock-type-face) ;; Fontify IEEE-P1800 keywords appropriately (if verilog-highlight-p1800-keywords @@ -2064,49 +2070,64 @@ (cond ((verilog-skip-forward-comment-or-string) (verilog-forward-syntactic-ws)) - ((looking-at verilog-beg-block-re-ordered);; begin|case|fork|class|table|specify|function|task|generate|covergroup|property|sequence|clocking + ((looking-at verilog-beg-block-re-ordered) ;; begin|(case)|xx|(fork)|class|table|specify|function|task|generate|covergroup|property|sequence|clocking (cond ((match-end 1) ; end ;; Search forward for matching begin (setq reg "\\(\\\\)\\|\\(\\\\)" )) ((match-end 2) ; endcase ;; Search forward for matching case - (setq reg "\\(\\\\|\\(\\\\s-+\\|\\\\s-+\\)?\\[^:]\\)\\|\\(\\\\)" )) - ((match-end 3) ; join - ;; Search forward for matching fork - (setq reg "\\(\\\\)\\|\\(\\\\)" )) - ((match-end 4) ; endclass + (setq reg "\\(\\\\|\\(\\\\s-+\\|\\\\s-+\\)?\\[^:]\\)\\|\\(\\\\)" ) + (setq md 3) ;; ender is third item in regexp + ) + ((match-end 4) ; join + ;; might be "disable fork" + (if (or + (looking-at verilog-disable-fork-re) + (and (looking-at "fork") + (progn + (forward-word -1) + (looking-at verilog-disable-fork-re)))) + (progn + (goto-char (match-end 0)) + (forward-word) + (setq reg nil)) + (progn + ;; Search forward for matching fork + (setq reg "\\(\\\\)\\|\\(\\\\)" )))) + ((match-end 5) ; endclass ;; Search forward for matching class (setq reg "\\(\\\\)\\|\\(\\\\)" )) - ((match-end 5) ; endtable + ((match-end 6) ; endtable ;; Search forward for matching table (setq reg "\\(\\\\)\\|\\(\\\\)" )) - ((match-end 6) ; endspecify + ((match-end 7) ; endspecify ;; Search forward for matching specify (setq reg "\\(\\\\)\\|\\(\\\\)" )) - ((match-end 7) ; endfunction + ((match-end 8) ; endfunction ;; Search forward for matching function (setq reg "\\(\\\\)\\|\\(\\\\)" )) - ((match-end 8) ; endtask + ((match-end 9) ; endtask ;; Search forward for matching task (setq reg "\\(\\\\)\\|\\(\\\\)" )) - ((match-end 9) ; endgenerate + ((match-end 10) ; endgenerate ;; Search forward for matching generate (setq reg "\\(\\\\)\\|\\(\\\\)" )) - ((match-end 10) ; endgroup + ((match-end 11) ; endgroup ;; Search forward for matching covergroup (setq reg "\\(\\\\)\\|\\(\\\\)" )) - ((match-end 11) ; endproperty + ((match-end 12) ; endproperty ;; Search forward for matching property (setq reg "\\(\\\\)\\|\\(\\\\)" )) - ((match-end 12) ; endsequence + ((match-end 13) ; endsequence ;; Search forward for matching sequence (setq reg "\\(\\<\\(rand\\)?sequence\\>\\)\\|\\(\\\\)" ) (setq md 3)) ; 3 to get to endsequence in the reg above - ((match-end 13) ; endclocking + ((match-end 14) ; endclocking ;; Search forward for matching clocking (setq reg "\\(\\\\)\\|\\(\\\\)" ))) - (if (forward-word 1) + (if (and reg + (forward-word 1)) (catch 'skip (let ((nest 1)) (while (verilog-re-search-forward reg nil 'move) @@ -2343,11 +2364,9 @@ ;; Setting up menus (when (featurep 'xemacs) - (when (and current-menubar - (not (assoc "Verilog" current-menubar))) - ;; (set-buffer-menubar (copy-sequence current-menubar)) - (add-submenu nil verilog-xemacs-menu) - (add-submenu nil verilog-stmt-menu))) + (easy-menu-add verilog-stmt-menu) + (easy-menu-add verilog-menu) + (setq mode-popup-menu (cons "Verilog Mode" verilog-stmt-menu))) ;; Stuff for GNU emacs (set (make-local-variable 'font-lock-defaults) @@ -2641,13 +2660,15 @@ "Mark the current Verilog function (or procedure). This puts the mark at the end, and point at the beginning." (interactive) - (when (featurep 'xemacs) - (push-mark (point)) - (verilog-end-of-defun) - (push-mark (point)) - (verilog-beg-of-defun) - (if (fboundp 'zmacs-activate-region) - (zmacs-activate-region)))) + (if (featurep 'xemacs) + (progn + (push-mark (point)) + (verilog-end-of-defun) + (push-mark (point)) + (verilog-beg-of-defun) + (if (fboundp 'zmacs-activate-region) + (zmacs-activate-region))) + (mark-defun))) (defun verilog-comment-region (start end) ; checkdoc-params: (start end) @@ -3932,6 +3953,16 @@ (throw 'nesting 'case) (goto-char here))) (throw 'nesting 'case)) + + ((match-end 4) ; *sigh* could be "disable fork" + (let ((here (point))) + (verilog-beg-of-statement) + (if (looking-at verilog-disable-fork-re) + t ; is disable fork, this is a normal statement + (progn ; or is fork, starts a new block + (goto-char here) + (throw 'nesting 'block))))) + ;; need to consider typedef struct here... ((looking-at "\\") @@ -4167,6 +4198,8 @@ (cond ((looking-at "\\") t) + ((looking-at verilog-behavioral-block-beg-re) + t) ((looking-at verilog-indent-re) nil) (t @@ -4682,7 +4715,7 @@ ;; -(defun verilog-pretty-declarations () +(defun verilog-pretty-declarations (&optional quiet) "Line up declarations around point." (interactive) (save-excursion @@ -4726,7 +4759,8 @@ (current-column)))) (goto-char end) (goto-char start) - (if (> (- end start) 100) + (if (and (not quiet) + (> (- end start) 100)) (message "Lining up declarations..(please stand by)")) ;; Get the beginning of line indent first (while (progn (setq e (marker-position edpos)) @@ -4751,7 +4785,7 @@ (setq r (- e (point))) (> r 0)) (setq e (point)) - (message "%d" r) + (unless quiet (message "%d" r)) (cond ((or (and verilog-indent-declaration-macros (looking-at verilog-declaration-re-1-macro)) @@ -4776,90 +4810,98 @@ (verilog-forward-ws&directives) (forward-line -1))) (forward-line 1)) - (message ""))))) - -(defun verilog-pretty-expr (&optional myre) + (unless quiet (message "")))))) + +(defun verilog-pretty-expr (&optional quiet myre) "Line up expressions around point, or optional regexp MYRE." (interactive "sRegular Expression: ((<|:)?=) ") (save-excursion (if (or (eq myre nil) (string-equal myre "")) (setq myre "\\(<\\|:\\)?=")) -; (setq myre (concat "\\(^[^;" myre "]*\\)\\([" myre "]\\)")) - (setq myre (concat "\\(^[^;#:?=]*\\)\\([" myre "]\\)")) - (beginning-of-line) - (if (and (not (looking-at (concat "^\\s-*" verilog-complete-reg))) - (looking-at myre)) - (let* ((here (point)) - (e) (r) - (start - (progn - (beginning-of-line) - (setq e (point)) - (verilog-backward-syntactic-ws) - (beginning-of-line) - (while (and (not (looking-at (concat "^\\s-*" verilog-complete-reg))) - (looking-at myre) - (not (bobp))) + (setq myre (concat "\\(^[^;#:<=>]*\\)\\(" myre "\\)")) + (let ((rexp(concat "^\\s-*" verilog-complete-reg))) + (beginning-of-line) + (if (and (not (looking-at rexp )) + (looking-at myre)) + (let* ((here (point)) + (e) (r) + (start + (progn + (beginning-of-line) (setq e (point)) (verilog-backward-syntactic-ws) (beginning-of-line) - ) ;Ack, need to grok `define - e)) - (end - (progn - (goto-char here) - (end-of-line) - (setq e (point)) ;Might be on last line - (verilog-forward-syntactic-ws) - (beginning-of-line) - (while (and (not (looking-at - (concat "^\\s-*" verilog-complete-reg))) - (looking-at myre)) + (while (and (not (looking-at rexp )) + (looking-at myre) + (not (bobp)) + ) + (setq e (point)) + (verilog-backward-syntactic-ws) + (beginning-of-line) + ) ;Ack, need to grok `define + e)) + (end + (progn + (goto-char here) (end-of-line) - (setq e (point)) + (setq e (point)) ;Might be on last line (verilog-forward-syntactic-ws) - (beginning-of-line)) - e)) - (edpos (set-marker (make-marker) end)) - (ind)) - (goto-char start) - (verilog-do-indent (verilog-calculate-indent)) - (if (> (- end start) 100) - (message "Lining up expressions..(please stand by)")) - - ;; Set indent to minimum throughout region - (while (< (point) (marker-position edpos)) - (beginning-of-line) - (verilog-just-one-space myre) - (end-of-line) - (verilog-forward-syntactic-ws)) - - ;; Now find biggest prefix - (setq ind (verilog-get-lineup-indent-2 myre start edpos)) - - ;; Now indent each line. - (goto-char start) - (while (progn (setq e (marker-position edpos)) - (setq r (- e (point))) - (> r 0)) - (setq e (point)) - (message "%d" r) - (cond - ((looking-at myre) - (goto-char (match-end 1)) - (if (eq (char-after) ?=) - (indent-to (1+ ind)) ; line up the = of the <= with surrounding = - (indent-to ind))) - ((verilog-continued-line-1 start) - (goto-char e) - (indent-line-to ind)) - (t ; Must be comment or white space - (goto-char e) - (verilog-forward-ws&directives) - (forward-line -1))) - (forward-line 1)) - (message ""))))) + (beginning-of-line) + (while (and (not (looking-at rexp )) + (looking-at myre)) + (end-of-line) + (setq e (point)) + (verilog-forward-syntactic-ws) + (beginning-of-line) + ) + e)) + (edpos (set-marker (make-marker) end)) + (ind) + ) + (goto-char start) + (verilog-do-indent (verilog-calculate-indent)) + (if (and (not quiet) + (> (- end start) 100)) + (message "Lining up expressions..(please stand by)")) + + ;; Set indent to minimum throughout region + (while (< (point) (marker-position edpos)) + (beginning-of-line) + (verilog-just-one-space myre) + (end-of-line) + (verilog-forward-syntactic-ws) + ) + + ;; Now find biggest prefix + (setq ind (verilog-get-lineup-indent-2 myre start edpos)) + + ;; Now indent each line. + (goto-char start) + (while (progn (setq e (marker-position edpos)) + (setq r (- e (point))) + (> r 0)) + (setq e (point)) + (if (not quiet) (message "%d" r)) + (cond + ((looking-at myre) + (goto-char (match-end 1)) + (if (not (verilog-parenthesis-depth)) ;; ignore parenthsized exprs + (if (eq (char-after) ?=) + (indent-to (1+ ind)) ; line up the = of the <= with surrounding = + (indent-to ind) + ))) + ((verilog-continued-line-1 start) + (goto-char e) + (indent-line-to ind)) + (t ; Must be comment or white space + (goto-char e) + (verilog-forward-ws&directives) + (forward-line -1)) + ) + (forward-line 1)) + (unless quiet (message "")) + ))))) (defun verilog-just-one-space (myre) "Remove extra spaces around regular expression MYRE." @@ -4873,8 +4915,8 @@ (if (looking-at "\\s-") (just-one-space)) (goto-char p1) (forward-char -1) - (if (looking-at "\\s-") (just-one-space))))) - (message "")) + (if (looking-at "\\s-") (just-one-space)) + )))) (defun verilog-indent-declaration (baseind) "Indent current lines as declaration. @@ -4975,13 +5017,15 @@ ;; Get rightmost position (while (progn (setq e (marker-position edpos)) (< (point) e)) - (if (verilog-re-search-forward myre e 'move) + (if (and (verilog-re-search-forward myre e 'move) + (not (verilog-parenthesis-depth))) ;; skip parenthsized exprs (progn - (goto-char (match-end 0)) + (goto-char (match-beginning 2)) (verilog-backward-syntactic-ws) (if (> (current-column) ind) (setq ind (current-column))) - (goto-char (match-end 0))))) + (goto-char (match-end 0))) + )) (if (> ind 0) (1+ ind) ;; No lineup-string found @@ -5455,9 +5499,7 @@ (verilog-goto-defun-file label)))) ;; Eliminate compile warning -(eval-when-compile - (if (not (boundp 'occur-pos-list)) - (defvar occur-pos-list nil "Backward compatibility occur positions."))) +(defvar occur-pos-list) (defun verilog-showscopes () "List all scopes in this module." @@ -8499,7 +8541,7 @@ (when nil ;; Too slow on huge modules, plus makes everyone's module change (beginning-of-line) (setq pnt (point)) - (verilog-pretty-declarations) + (verilog-pretty-declarations quiet) (goto-char pnt) (verilog-pretty-expr "//")))))) @@ -9814,23 +9856,6 @@ > ("case selector: " str ": begin" \n > "next_" verilog-sk-state " = " _ ";" \n > (- verilog-indent-level-behavioral) "end" \n ) resume: > (- verilog-case-indent) "endcase" (progn (electric-verilog-terminate-line) nil) > (- verilog-indent-level-behavioral) "end" (progn (electric-verilog-terminate-line) nil)) - -;; Eliminate compile warning -(eval-when-compile - (if (not (boundp 'mode-popup-menu)) - (defvar mode-popup-menu nil "Compatibility with XEmacs."))) - -;; ---- add menu 'Statements' in Verilog mode (MH) -(defun verilog-add-statement-menu () - "Add the menu 'Statements' to the menu bar in Verilog mode." - (if (featurep 'xemacs) - (progn - (easy-menu-add verilog-stmt-menu) - (easy-menu-add verilog-menu) - (setq mode-popup-menu (cons "Verilog Mode" verilog-stmt-menu))))) - -(add-hook 'verilog-mode-hook 'verilog-add-statement-menu) - ;; diff -r 773ae07da318 -r f991f10f15ec lisp/subr.el --- a/lisp/subr.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/subr.el Sun Feb 24 10:09:07 2008 +0000 @@ -1944,24 +1944,25 @@ (with-current-buffer (car elt) (setq elt (cdr elt)) (let ((old-car - (if (consp elt) (car elt))) - (old-cdr - (if (consp elt) (cdr elt)))) - ;; Temporarily truncate the undo log at ELT. - (when (consp elt) - (setcar elt nil) (setcdr elt nil)) - (unless (eq last-command 'undo) (undo-start)) - ;; Make sure there's no confusion. - (when (and (consp elt) (not (eq elt (last pending-undo-list)))) - (error "Undoing to some unrelated state")) - ;; Undo it all. - (while (listp pending-undo-list) (undo-more 1)) - ;; Reset the modified cons cell ELT to its original content. - (when (consp elt) - (setcar elt old-car) - (setcdr elt old-cdr)) - ;; Revert the undo info to what it was when we grabbed the state. - (setq buffer-undo-list elt))))) + (if (consp elt) (car elt))) + (old-cdr + (if (consp elt) (cdr elt)))) + ;; Temporarily truncate the undo log at ELT. + (when (consp elt) + (setcar elt nil) (setcdr elt nil)) + (unless (eq last-command 'undo) (undo-start)) + ;; Make sure there's no confusion. + (when (and (consp elt) (not (eq elt (last pending-undo-list)))) + (error "Undoing to some unrelated state")) + ;; Undo it all. + (save-excursion + (while (listp pending-undo-list) (undo-more 1))) + ;; Reset the modified cons cell ELT to its original content. + (when (consp elt) + (setcar elt old-car) + (setcdr elt old-cdr)) + ;; Revert the undo info to what it was when we grabbed the state. + (setq buffer-undo-list elt))))) ;;;; Display-related functions. diff -r 773ae07da318 -r f991f10f15ec lisp/textmodes/ispell.el --- a/lisp/textmodes/ispell.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/textmodes/ispell.el Sun Feb 24 10:09:07 2008 +0000 @@ -3730,7 +3730,7 @@ ;; any character other than a space. Not rigorous enough. (while (re-search-forward " *\\([^ ]+\\)" end t) (setq string (match-string-no-properties 1)) - ;; This can fail when string contains a word with illegal chars. + ;; This can fail when string contains a word with invalid chars. ;; Error handling needs to be added between ispell and emacs. (if (and (< 1 (length string)) (equal 0 (string-match ispell-casechars string))) diff -r 773ae07da318 -r f991f10f15ec lisp/textmodes/sgml-mode.el --- a/lisp/textmodes/sgml-mode.el Sun Feb 24 06:43:15 2008 +0000 +++ b/lisp/textmodes/sgml-mode.el Sun Feb 24 10:09:07 2008 +0000 @@ -465,8 +465,12 @@ sgml-transformation-function)) ;; This will allow existing comments within declarations to be ;; recognized. - (set (make-local-variable 'comment-start-skip) "\\(?:\\)?") + ;; I can't find a clear description of SGML/XML comments, but it seems that + ;; the only reliable ones are although it's not clear what + ;; "..." can contain. It used to accept -- ... -- as well, but that was + ;; apparently a mistake. + (set (make-local-variable 'comment-start-skip) "