diff options
-rw-r--r-- | lisp/modules/indent.lsp | 6 | ||||
-rw-r--r-- | lisp/modules/progmodes/c.lsp | 24 | ||||
-rw-r--r-- | lisp/modules/progmodes/lisp.lsp | 2 | ||||
-rw-r--r-- | lisp/modules/xedit.lsp | 24 |
4 files changed, 43 insertions, 13 deletions
diff --git a/lisp/modules/indent.lsp b/lisp/modules/indent.lsp index 6fd32a9..1ba8b72 100644 --- a/lisp/modules/indent.lsp +++ b/lisp/modules/indent.lsp @@ -1038,6 +1038,12 @@ ;; Initial input already read (go :ind-loop) + ;; Just to avoid a warning about unused variable, as this + ;; variable is somewhat redundant as code should already + ;; know before entering indent parser, but useful inside + ;; indent macros. + *ind-point* + ;------------------------------------------------------------------------ ; Read a text line :ind-read diff --git a/lisp/modules/progmodes/c.lsp b/lisp/modules/progmodes/c.lsp index e49630e..fba6b99 100644 --- a/lisp/modules/progmodes/c.lsp +++ b/lisp/modules/progmodes/c.lsp @@ -1099,9 +1099,33 @@ ;; Preprocessor includes comments. (syntoken "/*" :nospec t :begin :comment :contained t) + ;; Ignore strings and constants in the same line and finishes table + ;; This is kind hackish, but must be done because the current parser + ;; will not flag eol. Maybe it could be extended to properly handle + ;; and have an internal flag to tell it to pass again if there + ;; is a regex that can match eol on an empty string. + ;; A test is already done (but at compile time) to not allow patterns + ;; that match an empty string (but allow patterns matching + ;; bol, eol or both on an empty string). + (syntoken "\"([^\\\"]|\\\\.)*\"$" :property *prop-string* :switch -1) + (syntoken "'([^']|\\\\.)*'$" :property *prop-constant* :switch -1) + + ;; Ignore strings and constants in the same line + (syntoken "\"([^\\\"]|\\\\.)*\"" :property *prop-string*) + (syntoken "'([^']|\\\\.)*'" :property *prop-constant*) + ;; Ignore lines finishing with a backslash. (syntoken "\\\\$") + ;; multiline strings + (syntoken "\"" :nospec t :begin :string) + + ;; multiline constants + (syntoken "'" :nospec t :begin :character) + + ;; C++ style comments + (syntoken "//.*$" :property *prop-comment* :switch -1) + ;; Return to previous state if end of line found. (syntoken ".?$" :switch -1) ) diff --git a/lisp/modules/progmodes/lisp.lsp b/lisp/modules/progmodes/lisp.lsp index c15352b..2472b72 100644 --- a/lisp/modules/progmodes/lisp.lsp +++ b/lisp/modules/progmodes/lisp.lsp @@ -43,7 +43,7 @@ (defsynprop *prop-quote* "quote" :font "*courier-bold-r*-12-*" - :foreground "Red3" + :foreground "Red4" ) (defsynprop *prop-package* diff --git a/lisp/modules/xedit.lsp b/lisp/modules/xedit.lsp index 09858ef..25019ec 100644 --- a/lisp/modules/xedit.lsp +++ b/lisp/modules/xedit.lsp @@ -54,17 +54,19 @@ ;; syntax-p, the entry is removed. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defvar *auto-modes* '( - ("\\.(c|cc|C|cxx|h|bm|xbm|xpm|l|y)$" + ("\\.(c|cc|C|cxx|cpp|h|hpp|bm|xbm|xpm|l|y|h\\.in)$" "C/C++" "c" . *c-mode*) ("\\.(li?sp|scm)$" "Lisp/Scheme" "lisp" . *lisp-mode*) - ("Imakefile|(\\.(cf|rules|tmpl|def|cpp)$)" - "X imake" "imake" . *imake-mode*) - ("[Mm]akefile.*|\\.mk$" - "Makefile" "make" . *make-mode*) ("\\.sh$" "Unix shell" "sh" . *sh-mode*) - ("\\.sgml?$" + ("\\.(diff|patch)" + "Patch file" "patch" . *patch-mode*) + ("[Mm]akefile.*|\\.mk$" + "Makefile" "make" . *make-mode*) + ("\\.spec$" + "RPM spec" "rpm" . *rpm-mode*) + ("\\.(sgml?|dtd)$" "SGML" "sgml" . *sgml-mode*) ("\\.html?$" "HTML" "html" . *html-mode*) @@ -72,14 +74,12 @@ "Man page" "man" . *man-mode*) ("app-defaults/\\w+|\\u[A-Za-z0-9_-]+\\.ad" "X resource" "xrdb" . *xrdb-mode*) - ("\\<XF86Config[^/]*" + ("\\<(XF86Config[^/]*|xorg.conf$)" "XF86Config" "xconf" . *xconf-mode*) - ("\\.spec$" - "RPM spec" "rpm" . *rpm-mode*) - ("\\<XFree86\\.\\d+\\.log$" + ("\\<(XFree86|Xorg)\\.\\d+\\.log$" "XFree86 log" "xlog" . *xlog-mode*) - ("\\.(diff|patch)" - "Patch file" "patch" . *patch-mode*) + ("Imakefile|(\\.(cf|rules|tmpl|def)$)" + "X imake" "imake" . *imake-mode*) )) |