[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/sm-c-mode 97dea83 02/12: * sm-c-mode.el (sm-c-font-lock
From: |
Stefan Monnier |
Subject: |
[elpa] externals/sm-c-mode 97dea83 02/12: * sm-c-mode.el (sm-c-font-lock-keywords): Match function defs. |
Date: |
Sat, 28 Nov 2020 18:11:07 -0500 (EST) |
branch: externals/sm-c-mode
commit 97dea83140537685a08c6bdedc642a83168ee7ed
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>
* sm-c-mode.el (sm-c-font-lock-keywords): Match function defs.
* sm-c-mode-test.c: New file.
---
sm-c-mode-test.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
sm-c-mode.el | 20 +++++++++++++++++++-
2 files changed, 69 insertions(+), 1 deletion(-)
diff --git a/sm-c-mode-test.c b/sm-c-mode-test.c
new file mode 100644
index 0000000..3a1f1b6
--- /dev/null
+++ b/sm-c-mode-test.c
@@ -0,0 +1,50 @@
+/* -*- sm-c -*- */
+
+#define toto /* bla
+ bla */ \
+ if (a) { \
+ f \
+ }
+
+DEFUN ()
+
+int main (void)
+{
+ if (a)
+ do
+ if (b)
+ if (c)
+ printf ("hello\n");
+ else
+ printf ("there\n");
+ else
+ printf ("elsewhere\n");
+ while (6);
+ else if (b)
+ printf ("wow\n");
+ else
+ if (c)
+ printf ("weee\n");
+ else
+ printf ("wop\n");
+
+ switch (a)
+ {
+ case 1:
+ {
+ if (a)
+ {
+ y = 5;
+ case 2:
+ x = 3;
+ }
+ }
+ }
+}
+
+static struct myownspecialstruct
+ *testfunction
+ (args)
+{
+ return NULL;
+}
diff --git a/sm-c-mode.el b/sm-c-mode.el
index f582677..3771169 100644
--- a/sm-c-mode.el
+++ b/sm-c-mode.el
@@ -622,7 +622,25 @@ Typically 2 for GNU style and `tab-width' for Linux style."
;; "case" already handled above.
(delete "case" kws)))
"\\_>"))
- (0 font-lock-keyword-face))))
+ (0 font-lock-keyword-face))
+ (,(let* ((spc0 "\\(?:\n?[ \t]\\|/\\*.*?\\*/\\)*")
+ (spc1 (concat "\n?[ \t]" spc0))
+ (id "\\(?:\\sw\\|\\s_\\)+"))
+ (cl-flet ((repeat (repetition &rest res)
+ (concat "\\(?:" (apply #'concat res) "\\)"
+ (pcase repetition
+ ((pred symbolp) (symbol-name repetition))
+ (1 "")))))
+ (concat
+ "^"
+ (repeat '* "\\*" spc0)
+ (repeat '* id (repeat 1 spc1 "\\|" spc0 "\\*" spc0))
+ "\\(" id "\\)[ \t\n]*(")))
+ (1
+ (prog1 font-lock-function-name-face
+ (if (< (match-beginning 0) (line-beginning-position))
+ (put-text-property (match-beginning 0) (match-end 0)
+ 'font-lock-multiline t)))))))
;;;###autoload
- [elpa] branch externals/sm-c-mode created (now a207ad8), Stefan Monnier, 2020/11/28
- [elpa] externals/sm-c-mode 1f2c7ec 04/12: * sm-c-mode: Improve indentation of struct; plus bug fixes, Stefan Monnier, 2020/11/28
- [elpa] externals/sm-c-mode 9d2cff5 06/12: * packages/sm-c-mode: Add imenu/which-func/add-log support, Stefan Monnier, 2020/11/28
- [elpa] externals/sm-c-mode 97dea83 02/12: * sm-c-mode.el (sm-c-font-lock-keywords): Match function defs.,
Stefan Monnier <=
- [elpa] externals/sm-c-mode 4c63cb1 03/12: * sm-c-mode.el: Auto-align backslashes. Improve indent rules, Stefan Monnier, 2020/11/28
- [elpa] externals/sm-c-mode 5e67afc 07/12: * sm-c-mode/sm-c-mode.el (sm-c-smie-rules): Improve indent of enum's {...}, Stefan Monnier, 2020/11/28
- [elpa] externals/sm-c-mode 3ef465d 11/12: * packages/sm-c-mode/sm-c-mode.el: Improve \ alignment with long lines, Stefan Monnier, 2020/11/28
- [elpa] externals/sm-c-mode a207ad8 12/12: * .gitignore: New file, Stefan Monnier, 2020/11/28
- [elpa] externals/sm-c-mode a3efebd 09/12: * sm-c-mode.el: Fix some problems reported by Andrés Ramírez, Stefan Monnier, 2020/11/28
- [elpa] externals/sm-c-mode 5646e71 05/12: * sm-c-mode.el: Improve "Commentary:" and docstrings, Stefan Monnier, 2020/11/28
- [elpa] externals/sm-c-mode 3c3b1f7 08/12: * sm-c-mode.el (sm-c--comment-regexp): Fix excessive backtracking, Stefan Monnier, 2020/11/28
- [elpa] externals/sm-c-mode 3b5d1e0 01/12: * sm-c-mode: New experimental package, Stefan Monnier, 2020/11/28
- [elpa] externals/sm-c-mode 0fde734 10/12: * packages/sm-c-mode/sm-c-mode.el: Release as version 1.0, Stefan Monnier, 2020/11/28