Updated pspp-mode.el.
authorJohn Darrington <john@darrington.wattle.id.au>
Sun, 1 May 2005 07:24:24 +0000 (07:24 +0000)
committerJohn Darrington <john@darrington.wattle.id.au>
Sun, 1 May 2005 07:24:24 +0000 (07:24 +0000)
Removed manpage(n) style references at RMS's request.
Added a string to request_bug_report_and_abort which reports the compiler
version.

ChangeLog
doc/ChangeLog
doc/configuring.texi
po/en_GB.po
po/pspp.pot
pspp-mode.el
src/ChangeLog
src/error.c
src/font.h
src/groff-font.c
tests/bugs/agg_crash.sh

index 280a08d0a00b72c7a2d73f6a6bb9fc0b0e41b6e1..47fdd2fc91ea0d8f534e6c3818fcd99dba2e4e60 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sun May  1 15:00:09 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * pspp-mode.el: Now supports syntax highlighting, indentation and
+       generally works a lot better.
+
 Thu Apr 28 10:24:47 WST 2005 John Darrington <john@darrington.wattle.id.au> 
 
        * Changed all copyright notices to contain the FSF's new address.
index 03e18cac59045b88a7bb1e47ea11974d66785163..23f8cc9a0566ffdcadbaaeb73a5f37cc1e715b1a 100644 (file)
@@ -1,3 +1,8 @@
+Sun May  1 15:17:42 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * configuration.texi: Removed manpage(x) style references, because 
+       RMS doesn't like them.
+
 Wed Apr 27 07:44:57 WST 2005 John Darrington <john@darrington.wattle.id.au>
 
        * utilities.texi: Added the ECHO command.
index 818742dd242f2015686858b44d8944b7e3ad4e3d..eedc11d4e8d7b59bfe77485b93207947e931c749 100644 (file)
@@ -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}
index 6a7a0b06a8dcf31b215bce2e92bcf2f38ab02a7c..9850c2ebea908228a34d2e264d2f2286991c3659 100644 (file)
@@ -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 <john@darrington.wattle.id.au>\n"
 "Language-Team: John Darrington <john@darrington.wattle.id.au>\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 "<none>"
 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 ""
index e2c23a7af0c168fa86f596aaa84088d38300267e..37fcf55139e41da36fbe4e0e8517a782bbd60b1f 100644 (file)
@@ -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 <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\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 "<none>"
 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 ""
index 5ccf78a0738fb322e624ba750274a918e5be9897..bc2a3d1997f1e257fbda1b10c308cbe68284a000 100644 (file)
@@ -1,12 +1,12 @@
 ;;; pspp-mode-el -- Major mode for editing PSPP files
 
-
+;; Copyright (C) 2005 Free Software Foundation
 ;; Author: John Darrington <john@darrington.wattle.id.au>
 ;; 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 <scott@pp.htv.fi>
 
 (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)
        (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))
index 00bb94316f568d41a1c9a0a43a58f585a6f61362..897f5e3b5bed507a6aa1251d8aa9166856408be7 100644 (file)
@@ -1,3 +1,11 @@
+Sun May  1 15:05:54 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * 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  <blp@gnu.org>
 
        * expressions/parse.c: Improve previous fix for PR 12858 (LAG).
index 142b2c9f6590fc3dc0b71a0c583b2e517931485e..f3f805c60a3992b538c40c1a365cb24e20d9607a 100644 (file)
@@ -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);
index f372080550a91bc834a101ac2ee20996b9e332a6..a709667c88d6218f522923e78f74f10a51fc183a 100644 (file)
@@ -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;
index d321f2d7f0e563dc55e737173f772a4895c78ba1..9427089d3009f330e1e5997a6c59aab56583862e 100644 (file)
@@ -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)
index 30d63be106bd5f4a8c8c859e29b8a76859b28847..0cadfe2c267c86e21bcbb64ab90ce6b5802bda30 100755 (executable)
@@ -51,8 +51,8 @@ activity="create program"
 cat > $TESTFILE <<EOF
 INPUT PROGRAM.
 LOOP c=1 TO 20.
-COMPUTE x=UNIFORM(10)
-END CASE.
+  COMPUTE x=UNIFORM(10)
+  END CASE.
 END LOOP.
 END FILE.
 END INPUT PROGRAM.