summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/modules/indent.lsp6
-rw-r--r--lisp/modules/progmodes/c.lsp24
-rw-r--r--lisp/modules/progmodes/lisp.lsp2
-rw-r--r--lisp/modules/xedit.lsp24
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*)
))