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

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

[elpa] externals/firefox-javascript-repl f601354463 08/24: Show JavaScri


From: Thomas Fitzsimmons
Subject: [elpa] externals/firefox-javascript-repl f601354463 08/24: Show JavaScript quirk on startup
Date: Thu, 1 Jun 2023 00:41:51 -0400 (EDT)

branch: externals/firefox-javascript-repl
commit f6013544631a3dc8d6e2c708c72bf180380388b8
Author: Thomas Fitzsimmons <fitzsim@fitzsim.org>
Commit: Thomas Fitzsimmons <fitzsim@fitzsim.org>

    Show JavaScript quirk on startup
    
    * firefox-javascript-repl.el (firefox-javascript-repl--directory):
    New constant.
    (firefox-javascript-repl--show-quirk): New function.
    (firefox-javascript-repl-mode): Show quirk.
---
 .gitmodules                |  3 +++
 firefox-javascript-repl.el | 36 +++++++++++++++++++++++++++++++-----
 wtfjs                      |  1 +
 3 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000..02c249c827
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "wtfjs"]
+       path = wtfjs
+       url = https://github.com/denysdovhan/wtfjs
diff --git a/firefox-javascript-repl.el b/firefox-javascript-repl.el
index 888586573e..e20602b772 100644
--- a/firefox-javascript-repl.el
+++ b/firefox-javascript-repl.el
@@ -65,6 +65,36 @@ ARGUMENTS will be used for FORMAT, like `messages'."
                                 (replace-regexp-in-string "\"" "\\\\\"" string)
                                 fjrepl--console-actor)))
 
+(defconst firefox-javascript-repl--directory
+  (file-name-directory load-file-name)
+  "The directory in which `firefox-javascript-repl.el' is installed.")
+
+(defun firefox-javascript-repl--show-quirk ()
+  "Show a fun JavaScript quirk in the minibuffer."
+  (let ((quirk
+         (with-temp-buffer
+           (insert-file-contents (expand-file-name
+                                  "wtfjs/README.md"
+                                  firefox-javascript-repl--directory))
+           (goto-char (point-min))
+           (let* ((regexp "^```js\n")
+                  (count (count-matches regexp)))
+             (re-search-forward regexp nil t (1+ (random count)))
+             (let ((start (point)))
+               (re-search-forward "^```" nil t)
+               (beginning-of-line)
+               (backward-char)
+               (buffer-substring start (point)))))))
+    (let ((minibuffer-message-timeout 3))
+      (minibuffer-message
+       (with-temp-buffer (js-mode)
+                         (insert "// JavaScript quirk of the day:\n")
+                         (insert (truncate-string-to-width quirk 100))
+                         (insert "\n")
+                         (insert "// Happy Hacking!")
+                         (font-lock-ensure (point-min) (point-max))
+                         (buffer-string))))))
+
 (define-derived-mode firefox-javascript-repl-mode comint-mode "FJ"
   "Major mode for interactively evaluating JavaScript expressions in Firefox."
   :syntax-table js-mode-syntax-table
@@ -167,11 +197,7 @@ ARGUMENTS will be used for FORMAT, like `messages'."
     (setq-local comint-indirect-setup-function 'js-mode)
     (comint-indirect-buffer)
     (comint-fontify-input-mode)
-    (minibuffer-message
-     (with-temp-buffer (js-mode)
-                       (insert "// JavaScript tip of the day:\n")
-                       (font-lock-ensure (point-min) (point-max))
-                       (buffer-string)))))
+    (firefox-javascript-repl--show-quirk)))
 
 (defun fjrepl--create-profile-directory ()
   "Create a profile directory."
diff --git a/wtfjs b/wtfjs
new file mode 160000
index 0000000000..6f832d9874
--- /dev/null
+++ b/wtfjs
@@ -0,0 +1 @@
+Subproject commit 6f832d987472b30e1e3ede82de22e517af69e40b



reply via email to

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