[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';
- [elpa] master updated (b36c4b4 -> 1d1af16), Jackson Ray Hamilton, 2015/03/14
- [elpa] master 5dff74a 01/11: Cleanup., Jackson Ray Hamilton, 2015/03/14
- [elpa] master 6d0ed0e 03/11: Cleanup dependency management., Jackson Ray Hamilton, 2015/03/14
- [elpa] master 32f67a7 02/11: Cleanup., Jackson Ray Hamilton, 2015/03/14
- [elpa] master ba015ce 04/11: Add option to only colorize comments specially., Jackson Ray Hamilton, 2015/03/14
- [elpa] master 5ef598f 05/11: Refactor tests for setups and reused fixtures., Jackson Ray Hamilton, 2015/03/14
- [elpa] master 7e208ed 08/11: Use the better zenburn red., Jackson Ray Hamilton, 2015/03/14
- [elpa] master bde8c44 06/11: Add syntactic strings option.,
Jackson Ray Hamilton <=
- [elpa] master b83709f 07/11: Deprecate `comments-and-strings'., Jackson Ray Hamilton, 2015/03/14
- [elpa] master f062d5a 10/11: Version 6.1.0., Jackson Ray Hamilton, 2015/03/14
- [elpa] master 4849fd4 09/11: Update options documentation., Jackson Ray Hamilton, 2015/03/14
- [elpa] master 1d1af16 11/11: Merge commit 'f062d5a55496e22cf89f2ef9778a24a840a5a68e' from context-coloring, Jackson Ray Hamilton, 2015/03/14