X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pspp-mode.el;h=edfc243b641606688559027abcbc4166af0808bb;hb=425a1cb12b530fed2936815d5424092c2cb4dfcf;hp=f992f25cb9ade5bcc346b8e4a28e0f1e5fb68ab9;hpb=43b1296aafe7582e7dbe6c2b6a8b478d7d9b0fcf;p=pspp diff --git a/pspp-mode.el b/pspp-mode.el index f992f25cb9..edfc243b64 100644 --- a/pspp-mode.el +++ b/pspp-mode.el @@ -1,13 +1,14 @@ -;;; pspp-mode-el -- Major mode for editing PSPP files +;;; pspp-mode.el --- Major mode for editing PSPP files -;; Copyright (C) 2005 Free Software Foundation +;; Copyright (C) 2005,2018 Free Software Foundation +;; Author: Scott Andrew Borton ;; Created: 05 March 2005 +;; Version: 1.0 ;; Keywords: PSPP major-mode +;; This file is not part of GNU Emacs. - - +;;; Commentary: ;; Based on the example wpdl-mode.el by Scott Borton -;; Author: Scott Andrew Borton ;; Copyright (C) 2000, 2003 Scott Andrew Borton @@ -15,12 +16,12 @@ ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. -;; +;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. -;; +;; ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . @@ -32,6 +33,7 @@ pspp-mode-map) "Keymap for PSPP major mode") +;;;+++autoload (add-to-list 'auto-mode-alist '("\\.sps\\'" . pspp-mode)) @@ -43,16 +45,16 @@ (pspp-start-of-block-found nil) ) (beginning-of-line) - (while (not (or - (or (bobp) pspp-end-of-block-found ) - pspp-start-of-block-found + (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)) ) ) @@ -90,7 +92,7 @@ ) - + (defun pspp-indent-line () "Indent current line as PSPP code." @@ -104,7 +106,7 @@ (if (bobp) (setq the-indent 0) ; First line is always non-indented ) - + (let ( (within-command nil) @@ -114,14 +116,14 @@ ;; If the most recent non blank line ended with a `.' then ;; we're at the start of a new command. - (save-excursion + (save-excursion (while (and blank-line (not (bobp))) (forward-line -1) - + (if (and (not (pspp-data-block-p)) (not (looking-at "^[ \t]*$"))) - (progn + (progn (setq blank-line nil) - + (if (not (looking-at ".*\\.[ \t]*$")) (setq within-command t) ) @@ -132,7 +134,7 @@ ;; If we're not at the start of a new command, then add an indent. - (if within-command + (if within-command (set 'the-indent (+ 1 the-indent)) ) ) @@ -144,15 +146,15 @@ (while (not (bobp)) (beginning-of-line) (if (not (pspp-comment-p)) - (cond + (cond ( - (save-excursion + (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) ) ) @@ -209,9 +211,9 @@ ) (beginning-of-line) (if (pspp-comment-start-line-p) (set 'pspp-comment-start-found t)) - (if (bobp) + (if (bobp) (set 'pspp-comment-end-found nil) - (save-excursion + (save-excursion (forward-line -1) (if (pspp-comment-end-line-p) (set 'pspp-comment-end-found t)) ) @@ -220,12 +222,12 @@ ) ) - (save-excursion + (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))) @@ -237,7 +239,7 @@ (let ( (x-pspp-mode-syntax-table (make-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) @@ -247,7 +249,7 @@ ;; 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) @@ -255,12 +257,12 @@ ;; String delimiters (modify-syntax-entry ?' "\"" x-pspp-mode-syntax-table) - (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 @@ -268,187 +270,187 @@ (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" - "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" + "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" + "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 + (cons (concat "\\<" (regexp-opt '( "ALL" "AND" "BY" "EQ" "GE" "GT" "LE" "LT" "NE" "NOT" "OR" "TO" "WITH" ) t ) "\\>") 'font-lock-keyword-face) - (cons + (cons (concat "\\<" (regexp-opt '( "ABS" @@ -675,7 +677,7 @@ ) "Highlighting expressions for PSPP mode.") - +;;;+++autoload (defun pspp-mode () (interactive) (kill-all-local-variables) @@ -685,7 +687,7 @@ (set (make-local-variable 'font-lock-keywords-case-fold-search) t) (set (make-local-variable 'font-lock-defaults) '(pspp-font-lock-keywords)) - (set (make-local-variable 'indent-line-function) 'pspp-indent-line) + (set (make-local-variable 'indent-line-function) 'pspp-indent-line) (set (make-local-variable 'comment-start ) "* ") (set (make-local-variable 'compile-command) (concat "pspp "