branch: master
commit c81eecb37b3d19b60d13d86c84de0b33cbbbb2c1
Author: Jackson Ray Hamilton <jack...@jacksonrayhamilton.com>
Commit: Jackson Ray Hamilton <jack...@jacksonrayhamilton.com>

    Update function names and docstrings.
---
 benchmark/context-coloring-benchmark.el |    1 +
 context-coloring.el                     |  131 +++++++++++++++++++++----------
 test/context-coloring-coverage.el       |    2 +-
 test/context-coloring-test.el           |   11 ++-
 4 files changed, 96 insertions(+), 49 deletions(-)

diff --git a/benchmark/context-coloring-benchmark.el 
b/benchmark/context-coloring-benchmark.el
index 9ce2f6d..c2dd653 100644
--- a/benchmark/context-coloring-benchmark.el
+++ b/benchmark/context-coloring-benchmark.el
@@ -38,6 +38,7 @@
   (expand-file-name path context-coloring-benchmark-path))
 
 (defun context-coloring-benchmark-next-tick (callback)
+  "Run CALLBACK in the next turn of the event loop."
   (run-with-timer nil nil callback))
 
 (defun context-coloring-benchmark-series (sequence callback)
diff --git a/context-coloring.el b/context-coloring.el
index 35e8c43..ffed467 100644
--- a/context-coloring.el
+++ b/context-coloring.el
@@ -93,7 +93,7 @@ backgrounds."
 
 (defvar context-coloring-original-maximum-face nil
   "Fallback value for `context-coloring-maximum-face' when all
-  themes have been disabled.")
+themes have been disabled.")
 
 (setq context-coloring-maximum-face 7)
 
@@ -138,7 +138,9 @@ used.")
   "Length of last text that changed.")
 
 (defun context-coloring-change-function (start end length)
-  "Register a change so that a buffer can be colorized soon."
+  "Register a change so that a buffer can be colorized soon.
+
+START, END and LENGTH are recorded for later use."
   ;; Tokenization is obsolete if there was a change.
   (context-coloring-cancel-scopification)
   (setq context-coloring-changed-start start)
@@ -147,7 +149,7 @@ used.")
   (setq context-coloring-changed-p t))
 
 (defun context-coloring-maybe-colorize (buffer)
-  "Colorize the current buffer if it has changed."
+  "Colorize the current buffer if it is BUFFER and has changed."
   (when (and (eq buffer (current-buffer))
              context-coloring-changed-p)
     (context-coloring-colorize)
@@ -231,10 +233,11 @@ the END point (exclusive) with the face corresponding to 
LEVEL."
   "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 (&optional min 
max)
+(defsubst context-coloring-colorize-comments-and-strings (&optional min max)
   "Color the current buffer's comments or strings if
 `context-coloring-syntactic-comments' or
-`context-coloring-syntactic-strings' are non-nil."
+`context-coloring-syntactic-strings' are non-nil.  MIN defaults
+to the beginning of the buffer and MAX defaults to the end."
   (when (or context-coloring-syntactic-comments
             context-coloring-syntactic-strings)
     (let ((min (or min (point-min)))
@@ -350,7 +353,7 @@ generated by `js2-mode'."
                 (context-coloring-js2-scope-level defining-scope))))))
          ;; The `t' indicates to search children.
          t)))
-    (context-coloring-maybe-colorize-comments-and-strings)))
+    (context-coloring-colorize-comments-and-strings)))
 
 
 ;;; Emacs Lisp colorization
@@ -361,10 +364,10 @@ generated by `js2-mode'."
 
 (defsubst context-coloring-elisp-forward-sws ()
   "Move forward through whitespace and comments, colorizing
-them along the way."
+comments along the way."
   (let ((start (point)))
     (context-coloring-forward-sws)
-    (context-coloring-maybe-colorize-comments-and-strings start (point))))
+    (context-coloring-colorize-comments-and-strings start (point))))
 
 (defsubst context-coloring-elisp-forward-sexp ()
   "Like `forward-sexp', but colorize comments and strings along
@@ -375,16 +378,17 @@ the way."
      start (point))))
 
 (defsubst context-coloring-get-syntax-code ()
+  "Get the syntax code at point."
   (syntax-class
    ;; Faster version of `syntax-after':
    (aref (syntax-table) (char-after (point)))))
 
 (defsubst context-coloring-exact-regexp (word)
-  "Create a regexp that matches exactly WORD."
+  "Create a regexp matching exactly WORD."
   (concat "\\`" (regexp-quote word) "\\'"))
 
 (defsubst context-coloring-exact-or-regexp (words)
-  "Create a regexp that matches any exact word in WORDS."
+  "Create a regexp matching any exact word in WORDS."
   (context-coloring-join
    (mapcar #'context-coloring-exact-regexp words) "\\|"))
 
@@ -398,12 +402,14 @@ the way."
    '("condition-case"
      "condition-case-unless-debug")))
 
-(defconst context-coloring-ignored-word-regexp
+(defconst context-coloring-elisp-ignored-word-regexp
   (context-coloring-join (list "\\`[-+]?[0-9]"
                                "\\`[&:].+"
                                (context-coloring-exact-or-regexp
                                 '("t" "nil" "." "?")))
-                         "\\|"))
+                         "\\|")
+  "Match words that might be considered symbols but can't be
+bound as variables.")
 
 (defconst context-coloring-WORD-CODE 2)
 (defconst context-coloring-SYMBOL-CODE 3)
@@ -430,9 +436,12 @@ the way."
 If user input is pending, stop the parse.  This makes for a
 smoother user experience for large files.")
 
-(defvar context-coloring-elisp-sexp-count 0)
+(defvar context-coloring-elisp-sexp-count 0
+  "Current number of sexps leading up to the next pause.")
 
 (defsubst context-coloring-elisp-increment-sexp-count ()
+  "Maybe check if the current parse should be interrupted as a
+result of pending user input."
   (setq context-coloring-elisp-sexp-count
         (1+ context-coloring-elisp-sexp-count))
   (when (and (zerop (% context-coloring-elisp-sexp-count
@@ -441,23 +450,30 @@ smoother user experience for large files.")
              (input-pending-p))
     (throw 'interrupted t)))
 
-(defvar context-coloring-elisp-scope-stack '())
+(defvar context-coloring-elisp-scope-stack '()
+  "List of scopes in the current parse.")
 
 (defsubst context-coloring-elisp-make-scope (level)
+  "Make a scope object for LEVEL."
   (list
    :level level
    :variables '()))
 
 (defsubst context-coloring-elisp-scope-get-level (scope)
+  "Get the level of SCOPE object."
   (plist-get scope :level))
 
 (defsubst context-coloring-elisp-scope-add-variable (scope variable)
+  "Add to SCOPE a VARIABLE."
   (plist-put scope :variables (cons variable (plist-get scope :variables))))
 
 (defsubst context-coloring-elisp-scope-has-variable (scope variable)
+  "Check if SCOPE has VARIABLE."
   (member variable (plist-get scope :variables)))
 
 (defsubst context-coloring-elisp-get-variable-level (variable)
+  "Search up the scope chain for the first instance of VARIABLE
+and return its level, or 0 (global) if it isn't found."
   (let* ((scope-stack context-coloring-elisp-scope-stack)
          scope
          level)
@@ -471,7 +487,8 @@ smoother user experience for large files.")
     ;; Assume a global variable.
     (or level 0)))
 
-(defsubst context-coloring-elisp-current-scope-level ()
+(defsubst context-coloring-elisp-get-current-scope-level ()
+  "Get the nesting level of the current scope."
   (cond
    ((car context-coloring-elisp-scope-stack)
     (context-coloring-elisp-scope-get-level (car 
context-coloring-elisp-scope-stack)))
@@ -479,29 +496,38 @@ smoother user experience for large files.")
     0)))
 
 (defsubst context-coloring-elisp-push-scope ()
+  "Add a new scope to the bottom of the scope chain."
   (push (context-coloring-elisp-make-scope
-         (1+ (context-coloring-elisp-current-scope-level)))
+         (1+ (context-coloring-elisp-get-current-scope-level)))
         context-coloring-elisp-scope-stack))
 
 (defsubst context-coloring-elisp-pop-scope ()
+  "Remove the scope on the bottom of the scope chain."
   (pop context-coloring-elisp-scope-stack))
 
 (defsubst context-coloring-elisp-add-variable (variable)
+  "Add VARIABLE to the current scope."
   (context-coloring-elisp-scope-add-variable
    (car context-coloring-elisp-scope-stack)
    variable))
 
-(defsubst context-coloring-elisp-parse-arg (callback)
+(defsubst context-coloring-elisp-parse-bindable (callback)
+  "Parse the symbol at point, and if the symbol can be bound,
+invoke CALLBACK with it."
   (let* ((arg-string (buffer-substring-no-properties
                       (point)
                       (progn (context-coloring-elisp-forward-sexp)
                              (point)))))
     (when (not (string-match-p
-                context-coloring-ignored-word-regexp
+                context-coloring-elisp-ignored-word-regexp
                 arg-string))
       (funcall callback arg-string))))
 
 (defun context-coloring-elisp-parse-let-varlist (type)
+  "Parse the list of variable initializers at point.  If TYPE is
+`let', all the variables are bound after all their initializers
+are parsed; if TYPE is `let*', each variable is bound immediately
+after its own initializer is parsed."
   (let ((varlist '())
         syntax-code)
     ;; Enter.
@@ -515,7 +541,7 @@ smoother user experience for large files.")
         (setq syntax-code (context-coloring-get-syntax-code))
         (when (or (= syntax-code context-coloring-WORD-CODE)
                   (= syntax-code context-coloring-SYMBOL-CODE))
-          (context-coloring-elisp-parse-arg
+          (context-coloring-elisp-parse-bindable
            (lambda (var)
              (push var varlist)))
           (context-coloring-elisp-forward-sws)
@@ -527,7 +553,7 @@ smoother user experience for large files.")
         (forward-char))
        ((or (= syntax-code context-coloring-WORD-CODE)
             (= syntax-code context-coloring-SYMBOL-CODE))
-        (context-coloring-elisp-parse-arg
+        (context-coloring-elisp-parse-bindable
          (lambda (var)
            (push var varlist)))))
       (when (eq type 'let*)
@@ -540,6 +566,7 @@ smoother user experience for large files.")
     (forward-char)))
 
 (defun context-coloring-elisp-parse-arglist ()
+  "Parse the list of function arguments at point."
   (let (syntax-code)
     ;; Enter.
     (forward-char)
@@ -548,10 +575,11 @@ smoother user experience for large files.")
       (cond
        ((or (= syntax-code context-coloring-WORD-CODE)
             (= syntax-code context-coloring-SYMBOL-CODE))
-        (context-coloring-elisp-parse-arg
+        (context-coloring-elisp-parse-bindable
          (lambda (arg)
            (context-coloring-elisp-add-variable arg))))
        (t
+        ;; Ignore artifacts.
         (context-coloring-elisp-forward-sexp)))
       (context-coloring-elisp-forward-sws))
     ;; Exit.
@@ -559,6 +587,9 @@ smoother user experience for large files.")
 
 (defun context-coloring-elisp-colorize-defun-like (&optional anonymous-p
                                                              let-type)
+  "Color the defun-like function at point.  ANONYMOUS-P indicates
+the function doesn't name itself (e.g. `lambda', `let').
+LET-TYPE can be one of `let' or `let*'."
   (let ((start (point))
         end
         stop
@@ -572,7 +603,7 @@ smoother user experience for large files.")
     (context-coloring-colorize-region
      start
      end
-     (context-coloring-elisp-current-scope-level))
+     (context-coloring-elisp-get-current-scope-level))
     (goto-char start)
     ;; Enter.
     (forward-char)
@@ -620,18 +651,23 @@ smoother user experience for large files.")
     (context-coloring-elisp-pop-scope)))
 
 (defun context-coloring-elisp-colorize-defun ()
+  "Color the `defun' (or defun-like function) at point."
   (context-coloring-elisp-colorize-defun-like))
 
 (defun context-coloring-elisp-colorize-lambda ()
+  "Color the `lambda' at point."
   (context-coloring-elisp-colorize-defun-like t))
 
 (defun context-coloring-elisp-colorize-let ()
+  "Color the `let' at point."
   (context-coloring-elisp-colorize-defun-like t 'let))
 
 (defun context-coloring-elisp-colorize-let* ()
+  "Color the `let*' at point."
   (context-coloring-elisp-colorize-defun-like t 'let*))
 
 (defun context-coloring-elisp-colorize-cond ()
+  "Color the `cond' at point."
   (let (syntax-code)
     ;; Enter.
     (forward-char)
@@ -651,12 +687,14 @@ smoother user experience for large files.")
           ;; Exit.
           (forward-char)))
        (t
+        ;; Ignore artifacts.
         (context-coloring-elisp-forward-sexp)))
       (context-coloring-elisp-forward-sws))
     ;; Exit.
     (forward-char)))
 
 (defun context-coloring-elisp-colorize-condition-case ()
+  "Color the `condition-case' at point."
   (let ((start (point))
         end
         syntax-code
@@ -670,7 +708,7 @@ smoother user experience for large files.")
     (context-coloring-colorize-region
      start
      end
-     (context-coloring-elisp-current-scope-level))
+     (context-coloring-elisp-get-current-scope-level))
     (goto-char start)
     ;; Enter.
     (forward-char)
@@ -682,7 +720,7 @@ smoother user experience for large files.")
     ;; Gracefully ignore missing variables.
     (when (or (= syntax-code context-coloring-WORD-CODE)
               (= syntax-code context-coloring-SYMBOL-CODE))
-      (context-coloring-elisp-parse-arg
+      (context-coloring-elisp-parse-bindable
        (lambda (parsed-variable)
          (setq variable parsed-variable)))
       (context-coloring-elisp-forward-sws))
@@ -721,6 +759,7 @@ smoother user experience for large files.")
     (context-coloring-elisp-pop-scope)))
 
 (defun context-coloring-elisp-colorize-parenthesized-sexp ()
+  "Color the sexp enclosed by parenthesis at point."
   (context-coloring-elisp-increment-sexp-count)
   (let* ((start (point))
          (end (progn (forward-sexp)
@@ -771,11 +810,12 @@ smoother user experience for large files.")
       (context-coloring-colorize-region
        start
        end
-       (context-coloring-elisp-current-scope-level))
+       (context-coloring-elisp-get-current-scope-level))
       (context-coloring-elisp-colorize-region (point) (1- end))
       (forward-char)))))
 
 (defun context-coloring-elisp-colorize-symbol ()
+  "Color the symbol at point."
   (context-coloring-elisp-increment-sexp-count)
   (let* ((symbol-pos (point))
          (symbol-end (progn (forward-sexp)
@@ -784,7 +824,7 @@ smoother user experience for large files.")
                          symbol-pos
                          symbol-end)))
     (cond
-     ((string-match-p context-coloring-ignored-word-regexp symbol-string))
+     ((string-match-p context-coloring-elisp-ignored-word-regexp 
symbol-string))
      (t
       (context-coloring-colorize-region
        symbol-pos
@@ -793,6 +833,8 @@ smoother user experience for large files.")
         symbol-string))))))
 
 (defun context-coloring-elisp-colorize-expression-prefix ()
+  "Color the expression prefix and the following expression at
+point.  It could be a quoted or backquoted expression."
   (context-coloring-elisp-increment-sexp-count)
   (let ((char (char-after))
         start
@@ -822,18 +864,19 @@ smoother user experience for large files.")
        start end)))))
 
 (defun context-coloring-elisp-colorize-comment ()
+  "Color the comment at point."
   (context-coloring-elisp-increment-sexp-count)
   (context-coloring-elisp-forward-sws))
 
 (defun context-coloring-elisp-colorize-string ()
+  "Color the string at point."
   (context-coloring-elisp-increment-sexp-count)
   (let ((start (point)))
     (forward-sexp)
-    (context-coloring-maybe-colorize-comments-and-strings
-     start
-     (point))))
+    (context-coloring-colorize-comments-and-strings start (point))))
 
 (defun context-coloring-elisp-colorize-sexp ()
+  "Color the sexp at point."
   (let ((syntax-code (context-coloring-get-syntax-code)))
     (cond
      ((= syntax-code context-coloring-OPEN-PARENTHESIS-CODE)
@@ -851,6 +894,7 @@ smoother user experience for large files.")
       (forward-char)))))
 
 (defun context-coloring-elisp-colorize-comments-and-strings-in-region (start 
end)
+  "Color comments and strings between START and END."
   (let (syntax-code)
     (goto-char start)
     (while (> end (progn (skip-syntax-forward "^<\"\\" end)
@@ -867,6 +911,7 @@ smoother user experience for large files.")
         (forward-char))))))
 
 (defun context-coloring-elisp-colorize-region (start end)
+  "Color everything between START and END."
   (let (syntax-code)
     (goto-char start)
     (while (> end (progn (skip-syntax-forward "^()w_'<\"\\" end)
@@ -890,6 +935,7 @@ smoother user experience for large files.")
         (forward-char))))))
 
 (defun context-coloring-elisp-colorize-region-initially (start end)
+  "Begin coloring everything between START and END."
   (setq context-coloring-elisp-sexp-count 0)
   (setq context-coloring-elisp-scope-stack '())
   (let ((inhibit-point-motion-hooks t)
@@ -932,7 +978,7 @@ separated by commas."
        (pop tokens)
        (pop tokens)
        (pop tokens))))
-  (context-coloring-maybe-colorize-comments-and-strings))
+  (context-coloring-colorize-comments-and-strings))
 
 (defun context-coloring-parse-array (array)
   "Parse ARRAY as a flat JSON array of numbers and use the tokens
@@ -997,6 +1043,9 @@ scopifying."
    context-coloring-scopifier-process))
 
 (defun context-coloring-start-scopifier-server (command host port callback)
+  "Connect to or start a scopifier server with COMMAND, HOST and PORT.
+Invoke CALLBACK with a network stream when the server is ready
+for connections."
   (let* ((connect
           (lambda ()
             (let ((stream (open-network-stream "context-coloring-stream" nil 
host port)))
@@ -1024,6 +1073,9 @@ scopifying."
               (funcall connect)))))))))
 
 (defun context-coloring-send-buffer-to-scopifier-server (command host port 
callback)
+  "Send the current buffer to the scopifier server running with
+COMMAND, HOST and PORT.  Invoke CALLBACK with the server's
+response (a stringified JSON array)."
   (context-coloring-start-scopifier-server
    command host port
    (lambda (process)
@@ -1056,12 +1108,8 @@ scopifying."
                (setq active nil)))))))
 
 (defun context-coloring-scopify-and-colorize-server (command host port 
&optional callback)
-  "Contact or start a scopifier server via COMMAND at HOST and
-PORT with the current buffer's contents, read the scopifier's
-response asynchronously and apply a parsed list of tokens to
-`context-coloring-apply-tokens'.
-
-Invoke CALLBACK when complete."
+  "Color the current buffer via the server started with COMMAND,
+HOST and PORT.  Invoke CALLBACK when complete."
   (let ((buffer (current-buffer)))
     (context-coloring-send-buffer-to-scopifier-server
      command host port
@@ -1071,11 +1119,8 @@ Invoke CALLBACK when complete."
        (when callback (funcall callback))))))
 
 (defun context-coloring-scopify-and-colorize (command &optional callback)
-  "Invoke a scopifier via COMMAND with the current buffer's contents,
-read the scopifier's response asynchronously and apply a parsed
-list of tokens to `context-coloring-apply-tokens'.
-
-Invoke CALLBACK when complete."
+  "Color the current buffer via COMMAND.  Invoke CALLBACK when
+complete."
   (let ((buffer (current-buffer)))
     (context-coloring-scopify-shell-command
      command
@@ -1091,7 +1136,7 @@ Invoke CALLBACK when complete."
 
 (defvar context-coloring-dispatch-hash-table (make-hash-table :test #'eq)
   "Map dispatch strategy names to their corresponding property
-  lists, which contain details about the strategies.")
+lists, which contain details about the strategies.")
 
 (defvar context-coloring-mode-hash-table (make-hash-table :test #'eq)
   "Map major mode names to dispatch property lists.")
@@ -1246,7 +1291,7 @@ version number required for the current major mode."
 (defvar context-coloring-originally-set-theme-hash-table
   (make-hash-table :test #'eq)
   "Cache custom themes who originally set their own
-  `context-coloring-level-N-face' faces.")
+`context-coloring-level-N-face' faces.")
 
 (defun context-coloring-theme-originally-set-p (theme)
   "Return t if there is a `context-coloring-level-N-face'
diff --git a/test/context-coloring-coverage.el 
b/test/context-coloring-coverage.el
index cbd1e47..107908c 100644
--- a/test/context-coloring-coverage.el
+++ b/test/context-coloring-coverage.el
@@ -152,4 +152,4 @@
 
 (provide 'context-coloring-coverage)
 
-;; context-coloring-coverage.el ends here
+;;; context-coloring-coverage.el ends here
diff --git a/test/context-coloring-test.el b/test/context-coloring-test.el
index 8e95219..bd37b3b 100644
--- a/test/context-coloring-test.el
+++ b/test/context-coloring-test.el
@@ -221,7 +221,8 @@ override it."
                  (setq js2-mode-show-strict-warnings nil)))
 
 (defmacro context-coloring-test-deftest-js-js2 (&rest args)
-  "Simultaneously define the same test for js and js2."
+  "Simultaneously define the same test for js and js2 (with
+ARGS)."
   (declare (indent defun))
   `(progn
      (context-coloring-test-deftest-js ,@args)
@@ -347,7 +348,7 @@ override it."
            (setq context-coloring-colorize-hook nil)))
 
 (defmacro context-coloring-test-define-derived-mode (name)
-  "Define a derived mode exclusively for tests."
+  "Define a derived mode exclusively for any test with NAME."
   (let ((name (intern (format "context-coloring-test-%s-mode" name))))
     `(define-derived-mode ,name fundamental-mode "Testing")))
 
@@ -519,8 +520,8 @@ FOREGROUND.  Apply ARGUMENTS to
 
 (defun context-coloring-test-assert-theme-originally-set-p
     (settings &optional negate)
-  "Assert that `context-coloring-theme-originally-set-p' returns
-t for a theme with SETTINGS, or the inverse if NEGATE is
+  "Assert that `context-coloring-theme-originally-set-p' will
+return t for a theme with SETTINGS, or the inverse if NEGATE is
 non-nil."
   (let ((theme (context-coloring-test-get-next-theme)))
     (put theme 'theme-settings settings)
@@ -894,7 +895,7 @@ see that function."
   (context-coloring-test-assert-position-face position nil))
 
 (defun context-coloring-test-assert-coloring (map)
-  "Assert that the current buffer's coloring matches MAP.
+  "Assert that the current buffer's coloring will match MAP.
 
 MAP's newlines should correspond to the current fixture.
 

Reply via email to