emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master bde8c44 06/11: Add syntactic strings option.


From: Jackson Ray Hamilton
Subject: [elpa] master bde8c44 06/11: Add syntactic strings option.
Date: Sat, 14 Mar 2015 20:21:43 +0000

branch: master
commit bde8c441dbafedcb222f4dd0d8877fd9a674c51d
Author: Jackson Ray Hamilton <address@hidden>
Commit: Jackson Ray Hamilton <address@hidden>

    Add syntactic strings option.
---
 context-coloring.el                   |   28 ++++++++++++++++++----
 test/context-coloring-test.el         |   42 +++++++++++++++++++++++---------
 test/fixtures/comments-and-strings.js |    1 +
 3 files changed, 54 insertions(+), 17 deletions(-)

diff --git a/context-coloring.el b/context-coloring.el
index 4755ca0..5382339 100644
--- a/context-coloring.el
+++ b/context-coloring.el
@@ -140,22 +140,40 @@ the END point (exclusive) with the face corresponding to 
LEVEL."
   "If non-nil, also color comments using `font-lock'."
   :group 'context-coloring)
 
+(defcustom context-coloring-syntactic-strings nil
+  "If non-nil, also color comments using `font-lock'."
+  :group 'context-coloring)
+
 (defun context-coloring-font-lock-syntactic-comment-function (state)
   "Tell `font-lock' to color a comment but not a string."
   (if (nth 3 state) nil font-lock-comment-face))
 
+(defun context-coloring-font-lock-syntactic-string-function (state)
+  "Tell `font-lock' to color a string but not a comment."
+  (if (nth 3 state) font-lock-string-face nil))
+
 (defsubst context-coloring-maybe-colorize-comments-and-strings ()
   "Color the current buffer's comments and strings if
 `context-coloring-comments-and-strings' is non-nil."
   (when (or context-coloring-comments-and-strings
-            context-coloring-syntactic-comments)
-    (let ((old-function font-lock-syntactic-face-function))
-      (when context-coloring-syntactic-comments
+            context-coloring-syntactic-comments
+            context-coloring-syntactic-strings)
+    (let ((old-function font-lock-syntactic-face-function)
+          saved-function-p)
+      (cond
+       ((and context-coloring-syntactic-comments
+             (not context-coloring-syntactic-strings))
+        (setq font-lock-syntactic-face-function
+              'context-coloring-font-lock-syntactic-comment-function)
+        (setq saved-function-p t))
+       ((and context-coloring-syntactic-strings
+             (not context-coloring-syntactic-comments))
         (setq font-lock-syntactic-face-function
-              'context-coloring-font-lock-syntactic-comment-function))
+              'context-coloring-font-lock-syntactic-string-function)
+        (setq saved-function-p t)))
       (save-excursion
         (font-lock-fontify-syntactically-region (point-min) (point-max)))
-      (when context-coloring-syntactic-comments
+      (when saved-function-p
         (setq font-lock-syntactic-face-function old-function)))))
 
 
diff --git a/test/context-coloring-test.el b/test/context-coloring-test.el
index 7ddf51d..5801dd8 100644
--- a/test/context-coloring-test.el
+++ b/test/context-coloring-test.el
@@ -53,6 +53,7 @@
   "Cleanup after all tests."
   (setq context-coloring-comments-and-strings t)
   (setq context-coloring-syntactic-comments nil)
+  (setq context-coloring-syntactic-strings nil)
   (setq context-coloring-js-block-scopes nil))
 
 (defmacro context-coloring-test-with-fixture (fixture &rest body)
@@ -701,28 +702,30 @@ see that function."
 (context-coloring-test-deftest-js2-mode key-values)
 
 (defun context-coloring-test-js-comments-and-strings ()
-  "Test fixtures/comments-and-strings.js."
-  (context-coloring-test-assert-region-comment-delimiter 1 4)
-  (context-coloring-test-assert-region-comment 4 8)
+  "Test comments and strings."
+  (context-coloring-test-assert-region-level 1 8 0)
   (context-coloring-test-assert-region-comment-delimiter 9 12)
-  (context-coloring-test-assert-region-comment 12 19)
-  (context-coloring-test-assert-region-string 20 32)
-  (context-coloring-test-assert-region-level 32 33 0))
+  (context-coloring-test-assert-region-comment 12 16)
+  (context-coloring-test-assert-region-comment-delimiter 17 20)
+  (context-coloring-test-assert-region-comment 20 27)
+  (context-coloring-test-assert-region-string 28 40)
+  (context-coloring-test-assert-region-level 40 41 0))
 
 (defun context-coloring-test-js-comments-and-strings-setup ()
-  "Setup comments-and-strings."
+  "Setup comments and strings."
   (setq context-coloring-comments-and-strings t))
 
 (context-coloring-test-deftest-js-mode comments-and-strings)
 (context-coloring-test-deftest-js2-mode comments-and-strings)
 
 (defun context-coloring-test-js-syntactic-comments ()
-  "Test fixtures/comments-and-strings.js."
-  (context-coloring-test-assert-region-comment-delimiter 1 4)
-  (context-coloring-test-assert-region-comment 4 8)
+  "Test syntactic comments."
+  (context-coloring-test-assert-region-level 1 8 0)
   (context-coloring-test-assert-region-comment-delimiter 9 12)
-  (context-coloring-test-assert-region-comment 12 19)
-  (context-coloring-test-assert-region-level 20 33 0))
+  (context-coloring-test-assert-region-comment 12 16)
+  (context-coloring-test-assert-region-comment-delimiter 17 20)
+  (context-coloring-test-assert-region-comment 20 27)
+  (context-coloring-test-assert-region-level 28 41 0))
 
 (defun context-coloring-test-js-syntactic-comments-setup ()
   "Setup syntactic comments."
@@ -733,6 +736,21 @@ see that function."
 (context-coloring-test-deftest-js2-mode syntactic-comments
   :fixture-name comments-and-strings)
 
+(defun context-coloring-test-js-syntactic-strings ()
+  "Test syntactic strings."
+  (context-coloring-test-assert-region-level 1 28 0)
+  (context-coloring-test-assert-region-string 28 40)
+  (context-coloring-test-assert-region-level 40 41 0))
+
+(defun context-coloring-test-js-syntactic-strings-setup ()
+  "Setup syntactic strings."
+  (setq context-coloring-syntactic-strings t))
+
+(context-coloring-test-deftest-js-mode syntactic-strings
+  :fixture-name comments-and-strings)
+(context-coloring-test-deftest-js2-mode syntactic-strings
+  :fixture-name comments-and-strings)
+
 (provide 'context-coloring-test)
 
 ;;; context-coloring-test.el ends here
diff --git a/test/fixtures/comments-and-strings.js 
b/test/fixtures/comments-and-strings.js
index 9910b02..4297011 100644
--- a/test/fixtures/comments-and-strings.js
+++ b/test/fixtures/comments-and-strings.js
@@ -1,3 +1,4 @@
+void 0;
 // Foo.
 /* Bar. */
 'use strict';



reply via email to

[Prev in Thread] Current Thread [Next in Thread]