From 2990bac9e19a4a92606c830ab39ef3eb1e555481 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Sun, 1 May 2005 07:24:24 +0000 Subject: [PATCH] Updated pspp-mode.el. Removed manpage(n) style references at RMS's request. Added a string to request_bug_report_and_abort which reports the compiler version. --- ChangeLog | 5 + doc/ChangeLog | 5 + doc/configuring.texi | 2 +- po/en_GB.po | 28 +- po/pspp.pot | 28 +- pspp-mode.el | 656 ++++++++++++++++++++++++++++++++++++---- src/ChangeLog | 8 + src/error.c | 12 +- src/font.h | 2 +- src/groff-font.c | 4 +- tests/bugs/agg_crash.sh | 4 +- 11 files changed, 664 insertions(+), 90 deletions(-) diff --git a/ChangeLog b/ChangeLog index 280a08d0a0..47fdd2fc91 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun May 1 15:00:09 WST 2005 John Darrington + + * pspp-mode.el: Now supports syntax highlighting, indentation and + generally works a lot better. + Thu Apr 28 10:24:47 WST 2005 John Darrington * Changed all copyright notices to contain the FSF's new address. diff --git a/doc/ChangeLog b/doc/ChangeLog index 03e18cac59..23f8cc9a05 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,8 @@ +Sun May 1 15:17:42 WST 2005 John Darrington + + * configuration.texi: Removed manpage(x) style references, because + RMS doesn't like them. + Wed Apr 27 07:44:57 WST 2005 John Darrington * utilities.texi: Added the ECHO command. diff --git a/doc/configuring.texi b/doc/configuring.texi index 818742dd24..eedc11d4e8 100644 --- a/doc/configuring.texi +++ b/doc/configuring.texi @@ -879,7 +879,7 @@ Default: @code{ps-prologue}. Sets the name of the Groff-format device description file. The PostScript driver reads this to know about the scaling of fonts -and so on. The format of such files is described in groff_font(5), +and so on. The format of such files is described in the groff_font man page, included with Groff. Default: @code{DESC}. @item encoding-file=@var{encoding-file-name} diff --git a/po/en_GB.po b/po/en_GB.po index 6a7a0b06a8..9850c2ebea 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PSPP 0.3.1\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2005-04-27 07:45+0800\n" +"POT-Creation-Date: 2005-05-01 15:18+0800\n" "PO-Revision-Date: 2004-01-23 13:04+0800\n" "Last-Translator: John Darrington \n" "Language-Team: John Darrington \n" @@ -733,7 +733,7 @@ msgid "" msgstr "" #: src/data-list.c:795 src/data-list.c:923 src/descript.c:880 src/print.c:796 -#: src/sysfile-info.c:134 src/sysfile-info.c:367 src/vfm.c:807 +#: src/sysfile-info.c:134 src/sysfile-info.c:367 src/vfm.c:809 msgid "Variable" msgstr "" @@ -3506,7 +3506,7 @@ msgstr "" msgid "Documents in the active file:" msgstr "" -#: src/sysfile-info.c:374 src/sysfile-info.c:532 src/vfm.c:809 +#: src/sysfile-info.c:374 src/sysfile-info.c:532 src/vfm.c:811 msgid "Label" msgstr "" @@ -3529,7 +3529,7 @@ msgstr "" msgid "Missing Values: " msgstr "" -#: src/sysfile-info.c:531 src/vfm.c:808 src/crosstabs.q:1099 +#: src/sysfile-info.c:531 src/vfm.c:810 src/crosstabs.q:1099 #: src/crosstabs.q:1126 src/crosstabs.q:1146 src/crosstabs.q:1168 #: src/examine.q:1129 src/frequencies.q:1138 src/frequencies.q:1259 msgid "Value" @@ -3564,26 +3564,26 @@ msgid "" "commands." msgstr "" -#: src/title.c:57 +#: src/title.c:56 #, c-format msgid "%s before: %s\n" msgstr "" -#: src/title.c:57 +#: src/title.c:56 msgid "" msgstr "" -#: src/title.c:69 +#: src/title.c:68 #, c-format msgid "%s: `.' expected after string." msgstr "" -#: src/title.c:85 +#: src/title.c:84 #, c-format msgid "%s after: %s\n" msgstr "" -#: src/title.c:141 +#: src/title.c:140 #, c-format msgid "Document entered %s %02d:%02d:%02d by %s (%s):" msgstr "" @@ -3612,28 +3612,28 @@ msgstr "" msgid "Truncating variable label to 255 characters." msgstr "" -#: src/vars-atr.c:249 +#: src/vars-atr.c:259 msgid "Variable names must be at least 1 character long." msgstr "" -#: src/vars-atr.c:255 +#: src/vars-atr.c:265 #, c-format msgid "Variable name %s exceeds %d-character limit." msgstr "" -#: src/vars-atr.c:264 +#: src/vars-atr.c:274 #, c-format msgid "Character `%c' (in %s) may not appear in a variable name." msgstr "" -#: src/vars-atr.c:273 +#: src/vars-atr.c:283 #, c-format msgid "" "Character `%c' (in %s), may not appear as the first character in a variable " "name." msgstr "" -#: src/vars-atr.c:281 +#: src/vars-atr.c:291 #, c-format msgid "%s may not be used as a variable name because it is a reserved word." msgstr "" diff --git a/po/pspp.pot b/po/pspp.pot index e2c23a7af0..37fcf55139 100644 --- a/po/pspp.pot +++ b/po/pspp.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2005-04-27 07:45+0800\n" +"POT-Creation-Date: 2005-05-01 15:18+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -734,7 +734,7 @@ msgid "" msgstr "" #: src/data-list.c:795 src/data-list.c:923 src/descript.c:880 src/print.c:796 -#: src/sysfile-info.c:134 src/sysfile-info.c:367 src/vfm.c:807 +#: src/sysfile-info.c:134 src/sysfile-info.c:367 src/vfm.c:809 msgid "Variable" msgstr "" @@ -3507,7 +3507,7 @@ msgstr "" msgid "Documents in the active file:" msgstr "" -#: src/sysfile-info.c:374 src/sysfile-info.c:532 src/vfm.c:809 +#: src/sysfile-info.c:374 src/sysfile-info.c:532 src/vfm.c:811 msgid "Label" msgstr "" @@ -3530,7 +3530,7 @@ msgstr "" msgid "Missing Values: " msgstr "" -#: src/sysfile-info.c:531 src/vfm.c:808 src/crosstabs.q:1099 +#: src/sysfile-info.c:531 src/vfm.c:810 src/crosstabs.q:1099 #: src/crosstabs.q:1126 src/crosstabs.q:1146 src/crosstabs.q:1168 #: src/examine.q:1129 src/frequencies.q:1138 src/frequencies.q:1259 msgid "Value" @@ -3565,26 +3565,26 @@ msgid "" "commands." msgstr "" -#: src/title.c:57 +#: src/title.c:56 #, c-format msgid "%s before: %s\n" msgstr "" -#: src/title.c:57 +#: src/title.c:56 msgid "" msgstr "" -#: src/title.c:69 +#: src/title.c:68 #, c-format msgid "%s: `.' expected after string." msgstr "" -#: src/title.c:85 +#: src/title.c:84 #, c-format msgid "%s after: %s\n" msgstr "" -#: src/title.c:141 +#: src/title.c:140 #, c-format msgid "Document entered %s %02d:%02d:%02d by %s (%s):" msgstr "" @@ -3613,28 +3613,28 @@ msgstr "" msgid "Truncating variable label to 255 characters." msgstr "" -#: src/vars-atr.c:249 +#: src/vars-atr.c:259 msgid "Variable names must be at least 1 character long." msgstr "" -#: src/vars-atr.c:255 +#: src/vars-atr.c:265 #, c-format msgid "Variable name %s exceeds %d-character limit." msgstr "" -#: src/vars-atr.c:264 +#: src/vars-atr.c:274 #, c-format msgid "Character `%c' (in %s) may not appear in a variable name." msgstr "" -#: src/vars-atr.c:273 +#: src/vars-atr.c:283 #, c-format msgid "" "Character `%c' (in %s), may not appear as the first character in a variable " "name." msgstr "" -#: src/vars-atr.c:281 +#: src/vars-atr.c:291 #, c-format msgid "%s may not be used as a variable name because it is a reserved word." msgstr "" diff --git a/pspp-mode.el b/pspp-mode.el index 5ccf78a073..bc2a3d1997 100644 --- a/pspp-mode.el +++ b/pspp-mode.el @@ -1,12 +1,12 @@ ;;; pspp-mode-el -- Major mode for editing PSPP files - +;; Copyright (C) 2005 Free Software Foundation ;; Author: John Darrington ;; Created: 05 March 2005 ;; Keywords: PSPP major-mode -;; Copyright (C) 2005 John Darrington -;; + + ;; Based on the example wpdl-mode.el by Scott Borton ;; Author: Scott Andrew Borton @@ -38,48 +38,70 @@ (add-to-list 'auto-mode-alist '("\\.sps\\'" . pspp-mode)) -(defun pspp-data-block () +(defun pspp-data-block-p () "Returns t if current line is inside a data block." - (interactive) - - (let ( - (end-data-found nil) - (begin-data-found nil) - (inside-block nil) + (save-excursion + (let ( + (pspp-end-of-block-found nil) + (pspp-start-of-block-found nil) + ) + (beginning-of-line) + (while (not (or + (or (bobp) pspp-end-of-block-found ) + pspp-start-of-block-found + ) + ) + (set 'pspp-end-of-block-found (looking-at "^[ \t]*END[\t ]+DATA\.")) + (set 'pspp-start-of-block-found (looking-at "^[ \t]*BEGIN[\t ]+DATA")) + (forward-line -1) ) + + (and pspp-start-of-block-found (not pspp-end-of-block-found)) + ) + ) + ) - (save-excursion - (beginning-of-line) - (while (not (or (bobp) end-data-found) ) +(defconst pspp-indent-width + 2 + "size of indent" +) - (if (looking-at "^[ \t]*END +DATA\.") - (setq end-data-found t) - ) - (forward-line -1) +(defconst pspp-indenters + (concat "^[\t ]*" + (regexp-opt '("DO" + "BEGIN" + "LOOP" + "INPUT") t) + "[\t ]+") + "constructs which cause indentation" +) - (if (looking-at "^[ \t]*BEGIN +DATA\.") - (setq begin-data-found t) - ) - - ) - ) - (setq inside-block (and begin-data-found (not end-data-found))) +(defconst pspp-unindenters + (concat "^[\t ]*END[\t ]+" + (regexp-opt '("IF" + "DATA" + "LOOP" + "REPEAT" + "INPUT") t) + "[\t ]*") - inside-block - ) - - ) + ;; Note that "END CASE" and "END FILE" do not unindent. + + "constructs which cause end of indentation" +) + (defun pspp-indent-line () "Indent current line as PSPP code." - (interactive) + (beginning-of-line) (let ( (verbatim nil) (the-indent 0) ; Default indent to column 0 + (case-fold-search t) ) (if (bobp) @@ -99,57 +121,583 @@ (while (and blank-line (not (bobp))) (forward-line -1) - (if (and (not (pspp-data-block)) (not (looking-at "^[ \t]*$"))) + (if (and (not (pspp-data-block-p)) (not (looking-at "^[ \t]*$"))) (progn - (setq blank-line nil) + (setq blank-line nil) - (if (not (looking-at ".*\\.[ \t]*$")) - (setq within-command t) - ) - ) + (if (not (looking-at ".*\\.[ \t]*$")) + (setq within-command t) + ) + ) + ) ) + ) + + + ;; If we're not at the start of a new command, then add an indent. + (if within-command + (set 'the-indent (+ 1 the-indent)) + ) + ) + + + ;; Set the indentation according to the DO - END blocks + (save-excursion + (beginning-of-line) + (while (not (bobp)) + (beginning-of-line) + (if (not (pspp-comment-p)) + (cond + ( + (save-excursion + (forward-line -1) + (looking-at pspp-indenters) + ) + (set 'the-indent (+ the-indent 1) ) + ) + + ( (looking-at pspp-unindenters) + (set 'the-indent (- the-indent 1) ) + ) + ) ) - - (if within-command (setq the-indent 8) ) + (forward-line -1) + ) ) - + + (save-excursion + (beginning-of-line) + (if (looking-at "^[\t ]*ELSE") + (set 'the-indent (- the-indent 1))) + ) + + ;; Stuff in the data-blocks should be untouched + (if (not (pspp-data-block-p)) (indent-line-to (* pspp-indent-width the-indent))) + ) +) + + +(defun pspp-comment-start-line-p () + "Returns t if the current line is the first line of a comment, nil otherwise" + (beginning-of-line) + (or (looking-at "^\*") + (looking-at "^[\t ]*COMMENT[\t ]") ) + ) + + +(defun pspp-comment-end-line-p () + "Returns t if the current line is the candidate for the last line of a comment, nil otherwise" + (beginning-of-line) + (looking-at ".*\\.[\t ]*$") + ) + - (if (not (pspp-data-block)) (indent-line-to the-indent)) -)) +(defun pspp-comment-p () + "Returns t if point is in a comment. Nil otherwise." + (if (pspp-data-block-p) + nil + (let ( + (pspp-comment-start-found nil) + (pspp-comment-end-found nil) + (pspp-single-line-comment nil) + (lines 1) + ) + (save-excursion + (end-of-line) + (while (and (>= lines 0) + (not pspp-comment-start-found) + (not pspp-comment-end-found) + ) + (beginning-of-line) + (if (pspp-comment-start-line-p) (set 'pspp-comment-start-found t)) + (if (bobp) + (set 'pspp-comment-end-found nil) + (save-excursion + (forward-line -1) + (if (pspp-comment-end-line-p) (set 'pspp-comment-end-found t)) + ) + ) + (set 'lines (forward-line -1)) + ) + ) + + (save-excursion + (set 'pspp-single-line-comment (and + (pspp-comment-start-line-p) + (pspp-comment-end-line-p))) + ) + + (or pspp-single-line-comment + (and pspp-comment-start-found (not pspp-comment-end-found))) + ) + ) + ) (defvar pspp-mode-syntax-table (let ( (x-pspp-mode-syntax-table (make-syntax-table)) ) - (modify-syntax-entry ?_ "w" x-pspp-mode-syntax-table) - (modify-syntax-entry ?. "w" x-pspp-mode-syntax-table) - (modify-syntax-entry ?\" "|" x-pspp-mode-syntax-table) - (modify-syntax-entry ?\' "|" x-pspp-mode-syntax-table) - - ;; Comment definitions - (modify-syntax-entry ?* "<\n" x-pspp-mode-syntax-table) - -;; (modify-syntax-entry ?\n "- 1" x-pspp-mode-syntax-table) -;; (modify-syntax-entry ?* ". 2" x-pspp-mode-syntax-table) - - (modify-syntax-entry ?\n ">*" x-pspp-mode-syntax-table) - + ;; Special chars allowed in variables + (modify-syntax-entry ?# "w" x-pspp-mode-syntax-table) + (modify-syntax-entry ?@ "w" x-pspp-mode-syntax-table) + (modify-syntax-entry ?$ "w" x-pspp-mode-syntax-table) + + ;; Comment syntax + ;; This is incomplete, because: + ;; a) Comments can also be given by COMMENT + ;; b) The sequence .\n* is interpreted incorrectly. + + (modify-syntax-entry ?* ". 2" x-pspp-mode-syntax-table) + (modify-syntax-entry ?. ". 3" x-pspp-mode-syntax-table) + (modify-syntax-entry ?\n "- 41" x-pspp-mode-syntax-table) + + + ;; String delimiters + (modify-syntax-entry ?' "\"" x-pspp-mode-syntax-table) + (modify-syntax-entry ?" "\"" x-pspp-mode-syntax-table) + x-pspp-mode-syntax-table) "Syntax table for pspp-mode") + +(defconst pspp-font-lock-keywords + (list + + (cons (concat "\\<" + (regexp-opt '( + "END DATA" + "ACF" + "ADD FILES" + "ADD VALUE LABELS" + "AGGREGATE" + "ANOVA" + "APPLY DICTIONARY" + "AREG" + "ARIMA" + "AUTORECODE" + "BEGIN DATA" + "BREAK" + "CASEPLOT" + "CASESTOVARS" + "CCF" + "CLEAR TRANSFORMATIONS" + "CLUSTER" + "COMPUTE" + "CONJOINT" + "CORRELATIONS" + "COXREG" + "COUNT" + "CREATE" + "CROSSTABS" + "CURVEFIT" + "DATA LIST" + "DATE" + "DEBUG CASEFILE" + "DEBUG EVALUATE" + "DEBUG MOMENTS" + "DEBUG POOL" + "DELETE VARIABLES" + "DESCRIPTIVES" + "DISCRIMINANT" + "DISPLAY" + "DOCUMENT" + "DO IF" + "DO REPEAT" + "DROP DOCUMENTS" + "ECHO" + "EDIT" + "ELSE" + "ELSE IF" + "END CASE" + "END FILE" + "END FILE TYPE" + "END IF" + "END INPUT PROGRAM" + "END LOOP" + "END REPEAT" + "ERASE" + "EXAMINE" + "EXECUTE" + "EXIT" + "EXPORT" + "FACTOR" + "FILE HANDLE" + "FILE LABEL" + "FILE TYPE" + "FILTER" + "FINISH" + "FIT" + "FLIP" + "FORMATS" + "FREQUENCIES" + "GENLOG" + "GET" + "GET TRANSLATE" + "GLM" + "GRAPH" + "HILOGLINEAR" + "HOST" + "IF" + "IGRAPH" + "IMPORT" + "INCLUDE" + "INFO" + "INPUT MATRIX" + "INPUT PROGRAM" + "KEYED DATA LIST" + "LEAVE" + "LIST" + "LOGLINEAR" + "LOGISITIC REGRESSION" + "LOOP" + "MATCH FILES" + "MATRIX DATA" + "MCONVERT" + "MEANS" + "MISSING VALUES" + "MODIFY VARS" + "MULT RESPONSE" + "MVA" + "NEW FILE" + "N" + "N OF CASES" + "NLR" + "NONPAR CORR" + "NPAR TESTS" + "NUMBERED" + "NUMERIC" + "OLAP CUBES" + "OMS" + "ONEWAY" + "ORTHOPLAN" + "PACF" + "PARTIAL CORR" + "PEARSON CORRELATIONS" + "PERMISSIONS" + "PLOT" + "POINT" + "PPLOT" + "PREDICT" + "PRESERVE" + "PRINT EJECT" + "PRINT" + "PRINT FORMATS" + "PRINT SPACE" + "PROCEDURE OUTPUT" + "PROCESS IF" + "PROXIMITIES" + "Q" + "QUICK CLUSTER" + "QUIT" + "RANK" + "RECODE" + "RECORD TYPE" + "REFORMAT" + "REGRESSION" + "RENAME VARIABLES" + "REPEATING DATA" + "REPORT" + "REREAD" + "RESTORE" + "RMV" + "SAMPLE" + "SAVE" + "SAVE TRANSLATE" + "SCRIPT" + "SELECT IF" + "SET" + "SHOW" + "SORT CASES" + "SORT" + "SPCHART" + "SPLIT FILE" + "STRING" + "SUBTITLE" + "SUMMARIZE" + "SURVIVAL" + "SYSFILE INFO" + "TEMPORARY" + "TITLE" + "TSET" + "TSHOW" + "TSPLOT" + "T-TEST" + "UNIANOVA" + "UNNUMBERED" + "UPDATE" + "USE" + "VALUE LABELS" + "VARIABLE ALIGNMENT" + "VARIABLE LABELS" + "VARIABLE LEVEL" + "VARIABLE WIDTH" + "VARSTOCASES" + "VECTOR" + "VERIFY" + "WEIGHT" + "WRITE" + "WRITE FORMATS" + "XSAVE") t) "\\>" ) + 'font-lock-builtin-face) + + (cons + (concat "\\<" (regexp-opt '( + "ALL" "AND" "BY" "EQ" "GE" "GT" "LE" "LT" + "NE" "NOT" "OR" "TO" "WITH" + ) t ) "\\>") 'font-lock-keyword-face) + + + (cons + (concat "\\<" + (regexp-opt '( + "ABS" + "ACOS" + "ANY" + "ANY" + "ARCOS" + "ARSIN" + "ARTAN" + "ASIN" + "ATAN" + "CDF.BERNOULLI" + "CDF.BETA" + "CDF.BINOM" + "CDF.BVNOR" + "CDF.CAUCHY" + "CDF.CHISQ" + "CDF.EXP" + "CDF.F" + "CDF.GAMMA" + "CDF.GEOM" + "CDF.HALFNRM" + "CDF.HYPER" + "CDF.IGAUSS" + "CDF.LAPLACE" + "CDF.LNORMAL" + "CDF.LOGISTIC" + "CDF.NEGBIN" + "CDF.NORMAL" + "CDF.PARETO" + "CDF.POISSON" + "CDF.RAYLEIGH" + "CDF.SMOD" + "CDF.SRANGE" + "CDF.T" + "CDF.T1G" + "CDF.T2G" + "CDF.UNIFORM" + "CDF.WEIBULL" + "CDFNORM" + "CFVAR" + "CONCAT" + "COS" + "CTIME.DAYS" + "CTIME.HOURS" + "CTIME.MINUTES" + "CTIME.SECONDS" + "DATE.DMY" + "DATE.MDY" + "DATE.MOYR" + "DATE.QYR" + "DATE.WKYR" + "DATE.YRDAY" + "EXP" + "IDF.BETA" + "IDF.CAUCHY" + "IDF.CHISQ" + "IDF.EXP" + "IDF.F" + "IDF.GAMMA" + "IDF.HALFNRM" + "IDF.IGAUSS" + "IDF.LAPLACE" + "IDF.LNORMAL" + "IDF.LOGISTIC" + "IDF.NORMAL" + "IDF.PARETO" + "IDF.RAYLEIGH" + "IDF.SMOD" + "IDF.SRANGE" + "IDF.T" + "IDF.T1G" + "IDF.T2G" + "IDF.UNIFORM" + "IDF.WEIBULL" + "INDEX" + "INDEX" + "LAG" + "LAG" + "LAG" + "LAG" + "LENGTH" + "LG10" + "LN" + "LNGAMMA" + "LOWER" + "LPAD" + "LPAD" + "LTRIM" + "LTRIM" + "MAX" + "MAX" + "MBLEN.BYTE" + "MEAN" + "MIN" + "MIN" + "MISSING" + "MOD" + "MOD10" + "NCDF.BETA" + "NCDF.CHISQ" + "NCDF.F" + "NCDF.T" + "NMISS" + "NORMAL" + "NPDF.BETA" + "NPDF.CHISQ" + "NPDF.F" + "NPDF.T" + "NUMBER" + "NVALID" + "PDF.BERNOULLI" + "PDF.BETA" + "PDF.BINOM" + "PDF.BVNOR" + "PDF.CAUCHY" + "PDF.CHISQ" + "PDF.EXP" + "PDF.F" + "PDF.GAMMA" + "PDF.GEOM" + "PDF.HALFNRM" + "PDF.HYPER" + "PDF.IGAUSS" + "PDF.LANDAU" + "PDF.LAPLACE" + "PDF.LNORMAL" + "PDF.LOG" + "PDF.LOGISTIC" + "PDF.NEGBIN" + "PDF.NORMAL" + "PDF.NTAIL" + "PDF.PARETO" + "PDF.POISSON" + "PDF.RAYLEIGH" + "PDF.RTAIL" + "PDF.T" + "PDF.T1G" + "PDF.T2G" + "PDF.UNIFORM" + "PDF.WEIBULL" + "PDF.XPOWER" + "PROBIT" + "RANGE" + "RANGE" + "RINDEX" + "RINDEX" + "RND" + "RPAD" + "RPAD" + "RTRIM" + "RTRIM" + "RV.BERNOULLI" + "RV.BETA" + "RV.BINOM" + "RV.CAUCHY" + "RV.CHISQ" + "RV.EXP" + "RV.F" + "RV.GAMMA" + "RV.GEOM" + "RV.HALFNRM" + "RV.HYPER" + "RV.IGAUSS" + "RV.LANDAU" + "RV.LAPLACE" + "RV.LEVY" + "RV.LNORMAL" + "RV.LOG" + "RV.LOGISTIC" + "RV.LVSKEW" + "RV.NEGBIN" + "RV.NORMAL" + "RV.NTAIL" + "RV.PARETO" + "RV.POISSON" + "RV.RAYLEIGH" + "RV.RTAIL" + "RV.T" + "RV.T1G" + "RV.T2G" + "RV.UNIFORM" + "RV.WEIBULL" + "RV.XPOWER" + "SD" + "SIG.CHISQ" + "SIG.F" + "SIN" + "SQRT" + "STRING" + "SUBSTR" + "SUBSTR" + "SUM" + "SYSMIS" + "SYSMIS" + "TAN" + "TIME.DAYS" + "TIME.HMS" + "TRUNC" + "UNIFORM" + "UPCASE" + "VALUE" + "VARIANCE" + "XDATE.DATE" + "XDATE.HOUR" + "XDATE.JDAY" + "XDATE.MDAY" + "XDATE.MINUTE" + "XDATE.MONTH" + "XDATE.QUARTER" + "XDATE.SECOND" + "XDATE.TDAY" + "XDATE.TIME" + "XDATE.WEEK" + "XDATE.WKDAY" + "XDATE.YEAR" + "YRMODA" ) + t) "\\>" ) 'font-lock-function-name-face) + + '( "\\<[#$@a-zA-Z][a-zA-Z0-9_]*\\>" . font-lock-variable-name-face) + + + + ) +"Highlighting expressions for PSPP mode.") + + (defun pspp-mode () (interactive) (kill-all-local-variables) (use-local-map pspp-mode-map) (set-syntax-table pspp-mode-syntax-table) - (setq comment-start "* ") + + (set (make-local-variable 'font-lock-keywords-case-fold-search) t) + (set (make-local-variable 'font-lock-defaults) '(pspp-font-lock-keywords)) + ;; Register our indentation function + (set (make-local-variable 'indent-line-function) 'pspp-indent-line) + + (set (make-local-variable 'compile-command) + (concat "pspp " + buffer-file-name + )) + (setq major-mode 'pspp-mode) (setq mode-name "PSPP") (run-hooks 'pspp-mode-hook)) diff --git a/src/ChangeLog b/src/ChangeLog index 00bb94316f..897f5e3b5b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +Sun May 1 15:05:54 WST 2005 John Darrington + + * error.c: Added a string for the compiler version to the + request_bug_report_and_abort function. + + * groff_font.c, font.c: Removed manpage(1) style references from + comments, because RMS frowns upon them. + Thu Apr 28 18:52:06 2005 Ben Pfaff * expressions/parse.c: Improve previous fix for PR 12858 (LAG). diff --git a/src/error.c b/src/error.c index 142b2c9f65..f3f805c60a 100644 --- a/src/error.c +++ b/src/error.c @@ -510,7 +510,9 @@ request_bug_report_and_abort(const char *msg ) "default_config_path: %s\n" "include_path: %s\n" "groff_font_path: %s\n" - "locale_dir: %s\n", + "locale_dir: %s\n" + "compiler version: %s\n" + , bare_version, version, @@ -520,7 +522,13 @@ request_bug_report_and_abort(const char *msg ) default_config_path, include_path, groff_font_path, - locale_dir); + locale_dir, +#ifdef __VERSION__ + __VERSION__ +#else + "Unknown" +#endif + ); if ( msg ) fprintf(stderr,"Diagnosis: %s\n",msg); diff --git a/src/font.h b/src/font.h index f372080550..a709667c88 100644 --- a/src/font.h +++ b/src/font.h @@ -122,7 +122,7 @@ int font_get_kern_adjust (const struct font_desc *font, int ch1, int ch2); /* groff fonts. */ struct groff_device_info { - /* See groff_font(5). */ + /* See groff_font man page. */ int res, horiz, vert; int size_scale, unit_width; int (*sizes)[2], n_sizes; diff --git a/src/groff-font.c b/src/groff-font.c index d321f2d7f0..9427089d30 100644 --- a/src/groff-font.c +++ b/src/groff-font.c @@ -48,7 +48,7 @@ static void add_kern (struct font_desc * font, int ch1, int ch2, int adjust); /* Typical whitespace characters for tokenizing. */ static const char whitespace[] = " \t\n\r\v"; -/* Some notes on the groff_font(8) manpage: +/* Some notes on the groff_font manpage: DESC file format: A typical PostScript `res' would be 72000, with `hor' and `vert' set to 1 to indicate that all those positions are @@ -62,7 +62,7 @@ static const char whitespace[] = " \t\n\r\v"; /* Reads a Groff font description file and converts it to a usable binary format in memory. Installs the binary format in the global - font table. See groff_font(8) for a description of the font + font table. See groff_font for a description of the font description format supported. Returns nonzero on success. */ struct font_desc * groff_read_font (const char *fn) diff --git a/tests/bugs/agg_crash.sh b/tests/bugs/agg_crash.sh index 30d63be106..0cadfe2c26 100755 --- a/tests/bugs/agg_crash.sh +++ b/tests/bugs/agg_crash.sh @@ -51,8 +51,8 @@ activity="create program" cat > $TESTFILE <