devtools module has been splitted into submodules
This commit is contained in:
parent
8c25a66513
commit
63afbd12df
|
@ -12,6 +12,7 @@
|
||||||
(depends-on 'dockerfile-mode)
|
(depends-on 'dockerfile-mode)
|
||||||
(depends-on 'quickrun)
|
(depends-on 'quickrun)
|
||||||
(depends-on 'dash)
|
(depends-on 'dash)
|
||||||
|
(depends-on 'websocket)
|
||||||
|
|
||||||
(with-ability parinfer
|
(with-ability parinfer
|
||||||
(depends-on 'parinfer))
|
(depends-on 'parinfer))
|
||||||
|
|
|
@ -80,7 +80,6 @@
|
||||||
(with-ability tabbar
|
(with-ability tabbar
|
||||||
(depends-on 'tabbar))
|
(depends-on 'tabbar))
|
||||||
|
|
||||||
|
|
||||||
(if (eq system-type 'darwin)
|
(if (eq system-type 'darwin)
|
||||||
(depends-on 'exec-path-from-shell))
|
(depends-on 'exec-path-from-shell))
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
;;; ability --- ability library of FG42
|
||||||
|
;;; Commentary:
|
||||||
|
;;;
|
||||||
|
;;; Code:
|
||||||
|
(require 'cl-lib)
|
||||||
|
|
||||||
|
(defvar fg42--abilities '()
|
||||||
|
"Internal data structure to store abilities.")
|
||||||
|
|
||||||
|
(cl-defstruct fg42-ability
|
||||||
|
"Each FG42 ability should implement a copy of this structure."
|
||||||
|
name
|
||||||
|
docs
|
||||||
|
depends-on
|
||||||
|
(start! nil)
|
||||||
|
(stop! nil))
|
||||||
|
|
||||||
|
(defun register-ability (ability-name)
|
||||||
|
"Register the given ABILITY-NAME as an activity."
|
||||||
|
(add-to-list
|
||||||
|
fg42--abilities
|
||||||
|
'(ability-name . (make-fg42-ability :name ability-name))))
|
||||||
|
|
||||||
|
(defun start-ability (ability-name))
|
||||||
|
|
||||||
|
(provide 'fg42/ability)
|
||||||
|
;;; ability ends here
|
|
@ -85,6 +85,7 @@
|
||||||
(defvar fg42/devtools-console-input)
|
(defvar fg42/devtools-console-input)
|
||||||
|
|
||||||
|
|
||||||
|
(defun fg42/devtools-append-to-console-buffer)
|
||||||
(define-derived-mode fg42/devtools-console-mode comint-mode "fg42/devtools-console"
|
(define-derived-mode fg42/devtools-console-mode comint-mode "fg42/devtools-console"
|
||||||
"Provide a REPL into the visiting browser."
|
"Provide a REPL into the visiting browser."
|
||||||
:group 'fg42/devtools
|
:group 'fg42/devtools
|
||||||
|
@ -106,12 +107,29 @@
|
||||||
(comint-output-filter (fg42/devtools-console-process) fg42/devtools-console-prompt)
|
(comint-output-filter (fg42/devtools-console-process) fg42/devtools-console-prompt)
|
||||||
(set-process-filter (fg42/devtools-console-process) 'comint-output-filter)))
|
(set-process-filter (fg42/devtools-console-process) 'comint-output-filter)))
|
||||||
|
|
||||||
|
(defun fg42/devtools-append-to-console-buffer (log-entry)
|
||||||
|
(let* ((message (plist-get data :message))
|
||||||
|
(url (plist-get message :url))
|
||||||
|
(column (plist-get message :column))
|
||||||
|
(line (plist-get message :line))
|
||||||
|
(type (plist-get message :type))
|
||||||
|
(level (plist-get message :level))
|
||||||
|
(text (plist-get message :text)))
|
||||||
|
(->buffer
|
||||||
|
fg42/devtools-console-buffer-name
|
||||||
|
(format "[%s:%s:%s]<%s>: %s"
|
||||||
|
(apply-face 'error url)
|
||||||
|
line
|
||||||
|
column
|
||||||
|
level
|
||||||
|
message))))
|
||||||
|
|
||||||
(defun fg42/devtools-console-append (data)
|
|
||||||
(let ((buffer (get-buffer "*fg42/devtools-console*")))
|
;; (defun fg42/devtools-console-append (data)
|
||||||
(when buffer
|
;; (let ((buffer (get-buffer-create fg42/devtools-console-buffer-name)))
|
||||||
(with-current-buffer buffer
|
;; (when buffer
|
||||||
(comint-output-filter (fg42/devtools-console-process) (concat data "\n"))))))
|
;; (with-current-buffer buffer
|
||||||
|
;; (comint-output-filter (fg42/devtools-console-process) (concat data "\n"))))))
|
||||||
|
|
||||||
|
|
||||||
(defun fg42/devtools-console-process ()
|
(defun fg42/devtools-console-process ()
|
||||||
|
|
|
@ -33,27 +33,9 @@
|
||||||
(require 'dash)
|
(require 'dash)
|
||||||
(require 'websocket)
|
(require 'websocket)
|
||||||
|
|
||||||
|
(require 'fg42/utils/json)
|
||||||
(require 'fg42/utils)
|
(require 'fg42/utils)
|
||||||
|
(require 'fg42/devtools/vars)
|
||||||
;;; Customs & Vars ------------------------------------------------------------
|
|
||||||
(defcustom fg42/devtools-remote-host "127.0.0.1"
|
|
||||||
"Default host for connection to WebKit remote debugging API."
|
|
||||||
:group 'fg42/devtools)
|
|
||||||
|
|
||||||
|
|
||||||
(defcustom fg42/devtools-remote-port 9222
|
|
||||||
"Default port for connection to WebKit remote debugging API."
|
|
||||||
:group 'fg42/devtools)
|
|
||||||
|
|
||||||
|
|
||||||
(defvar fg42/devtools-socket nil
|
|
||||||
"Websocket connection to WebKit remote debugging API.")
|
|
||||||
|
|
||||||
|
|
||||||
(defvar fg42/devtools-rpc-id 0)
|
|
||||||
(defvar fg42/devtools-rpc-callbacks nil)
|
|
||||||
(defvar fg42/devtools-rpc-scripts nil
|
|
||||||
"List of JavaScript files available for live editing.")
|
|
||||||
|
|
||||||
;;; Functions -----------------------------------------------------------------
|
;;; Functions -----------------------------------------------------------------
|
||||||
(defun fg42/devtools-next-rpc-id ()
|
(defun fg42/devtools-next-rpc-id ()
|
||||||
|
@ -66,6 +48,7 @@
|
||||||
(let ((hook (intern (number-to-string id) fg42/devtools-rpc-callbacks)))
|
(let ((hook (intern (number-to-string id) fg42/devtools-rpc-callbacks)))
|
||||||
(add-hook hook fn t)))
|
(add-hook hook fn t)))
|
||||||
|
|
||||||
|
|
||||||
(defun fg42/devtools-dispatch-callback (id data)
|
(defun fg42/devtools-dispatch-callback (id data)
|
||||||
"Execute the callback registered by the given ID with the given DATA."
|
"Execute the callback registered by the given ID with the given DATA."
|
||||||
(let ((hook (intern (number-to-string id) fg42/devtools-rpc-callbacks)))
|
(let ((hook (intern (number-to-string id) fg42/devtools-rpc-callbacks)))
|
||||||
|
@ -91,9 +74,12 @@
|
||||||
(when (and (eq extension? :json-false) (not (string-equal "" url)))
|
(when (and (eq extension? :json-false) (not (string-equal "" url)))
|
||||||
(add-to-list 'fg42/devtools-rpc-scripts (list :id id :url url)))))
|
(add-to-list 'fg42/devtools-rpc-scripts (list :id id :url url)))))
|
||||||
|
|
||||||
|
(defun fg42/devtools->inspect-buffer (data)
|
||||||
|
(inspect-data-append (list "ERRRR" data)))
|
||||||
|
|
||||||
(defun fg42/devtools-on-script-failed-to-parse (data)
|
(defun fg42/devtools-on-script-failed-to-parse (data)
|
||||||
(fg42/devtools-console-append (format "%s" data)))
|
;; (fg42/devtools-console-append (format "%s" data))
|
||||||
|
(fg42/devtools->inspect-buffer data))
|
||||||
|
|
||||||
|
|
||||||
(defun fg42/devtools-on-message-added (data)
|
(defun fg42/devtools-on-message-added (data)
|
||||||
|
@ -105,11 +91,16 @@
|
||||||
(level (plist-get message :level))
|
(level (plist-get message :level))
|
||||||
(text (plist-get message :text)))
|
(text (plist-get message :text)))
|
||||||
;; TODO: add colors based on level
|
;; TODO: add colors based on level
|
||||||
(fg42/devtools-console-append
|
;;(fg42/devtools-console-append
|
||||||
(propertize
|
(fg42/devtools->inspect-buffer data)))
|
||||||
(format "%s: %s\t%s (line: %s column: %s)"
|
;; (fg42/devtools->inspect-buffer
|
||||||
level text url line column)
|
;; (propertize
|
||||||
'font-lock-face (intern (format "fg42/devtools-log-%s" level))))))
|
;; (format "%s: %s\t%s (line: %s column: %s)"
|
||||||
|
;; level text url line column)
|
||||||
|
;; 'font-lock-face (intern (format "fg42/devtools-log-%s" level))))))
|
||||||
|
|
||||||
|
(defun fg42/devtools-log-added (data)
|
||||||
|
(fg42/devtools-append-to-console-buffer data))
|
||||||
|
|
||||||
|
|
||||||
(defun fg42/devtools-on-message (socket data)
|
(defun fg42/devtools-on-message (socket data)
|
||||||
|
@ -122,12 +113,13 @@
|
||||||
("Debugger.scriptParsed" (fg42/devtools-on-script-parsed params))
|
("Debugger.scriptParsed" (fg42/devtools-on-script-parsed params))
|
||||||
;; we are getting an error in Console.messageAdded
|
;; we are getting an error in Console.messageAdded
|
||||||
;; ("Debugger.scriptFailedToParse" (fg42/devtools-on-script-failed-to-parse params))
|
;; ("Debugger.scriptFailedToParse" (fg42/devtools-on-script-failed-to-parse params))
|
||||||
("Console.messageAdded" (fg42/devtools-on-message-added params))
|
("Log.entryAdded" (fg42/devtools-log-added params))
|
||||||
|
;; ("Console.messageAdded" (fg42/devtools-on-message-added params))
|
||||||
;; ;; TODO: do something usefull here, possibly great for REPL
|
;; ;; TODO: do something usefull here, possibly great for REPL
|
||||||
("Console.messageRepeatCountUpdated")
|
("Console.messageRepeatCountUpdated")
|
||||||
;; nil -> These are return messages from RPC calls, not notification
|
;; nil -> These are return messages from RPC calls, not notification
|
||||||
(_ (if method
|
(_ (if method
|
||||||
(inspect-data-append data)
|
(message "FG42: Got a method - %s" method)
|
||||||
(fg42/devtools-dispatch-callback (plist-get data :id)
|
(fg42/devtools-dispatch-callback (plist-get data :id)
|
||||||
(plist-get data :result)))))))
|
(plist-get data :result)))))))
|
||||||
|
|
||||||
|
@ -143,12 +135,16 @@
|
||||||
:method method
|
:method method
|
||||||
:params params)))))
|
:params params)))))
|
||||||
|
|
||||||
|
(defun fg42/devtools-on-error (socket where error)
|
||||||
|
(message "FG42: Got and error in %s" where)
|
||||||
|
(message error))
|
||||||
|
|
||||||
(defun fg42/devtools-open-socket (url)
|
(defun fg42/devtools-open-socket (url)
|
||||||
"Connect to the given URL and return a socket."
|
"Connect to the given URL and return a socket."
|
||||||
(websocket-open url
|
(websocket-open url
|
||||||
:on-open #'fg42/devtools-on-open
|
:on-open #'fg42/devtools-on-open
|
||||||
:on-message #'fg42/devtools-on-message
|
:on-message #'fg42/devtools-on-message
|
||||||
|
:on-error #'fg42/devtools-on-error
|
||||||
:on-close #'fg42/devtools-on-close))
|
:on-close #'fg42/devtools-on-close))
|
||||||
|
|
||||||
|
|
||||||
|
@ -203,8 +199,10 @@
|
||||||
(message (format "FG42: Connecting to %s" socket-url))
|
(message (format "FG42: Connecting to %s" socket-url))
|
||||||
(setq fg42/devtools-socket (fg42/devtools-open-socket socket-url))
|
(setq fg42/devtools-socket (fg42/devtools-open-socket socket-url))
|
||||||
(message "Sending initial RPC calls...")
|
(message "Sending initial RPC calls...")
|
||||||
(fg42/devtools-call-rpc "Console.enable")
|
;; (fg42/devtools-call-rpc "Console.enable")
|
||||||
|
(fg42/devtools-call-rpc "Log.enable")
|
||||||
(fg42/devtools-call-rpc "Debugger.enable")
|
(fg42/devtools-call-rpc "Debugger.enable")
|
||||||
|
(fg42/devtools-call-rpc "Runtime.enable")
|
||||||
(fg42/devtools-call-rpc "Network.setCacheDisabled" '(:cacheDisabled t))))
|
(fg42/devtools-call-rpc "Network.setCacheDisabled" '(:cacheDisabled t))))
|
||||||
|
|
||||||
|
|
||||||
|
@ -309,7 +307,7 @@
|
||||||
(fg42/devtools-connect))
|
(fg42/devtools-connect))
|
||||||
|
|
||||||
;; (fg42/devtools-debug-restart)
|
;; (fg42/devtools-debug-restart)
|
||||||
|
;; (fg42/devtools-disconnect)
|
||||||
|
|
||||||
|
(provide 'fg42/devtools/core)
|
||||||
(provide 'fg42/devtools)
|
;;; core.el ends here
|
||||||
;;; devtools.el ends here
|
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
;;; fg42-devtools --- Webkit devtool driver for FG42
|
||||||
|
;;
|
||||||
|
;; Copyright (c) 2019 Sameer Rahmani <lxsameer@gnu.org>
|
||||||
|
;;
|
||||||
|
;; Author: Sameer Rahmani <lxsameer@gnu.org>
|
||||||
|
;; URL: https://gitlab.com/FG42/FG42
|
||||||
|
;; Keywords: webkit
|
||||||
|
;; Version: 0.1.0
|
||||||
|
;;
|
||||||
|
;; This program is free software; you can redistribute it and/or modify
|
||||||
|
;; it under the terms of the GNU General Public License as published by
|
||||||
|
;; the Free Software Foundation, either version 3 of the License, or
|
||||||
|
;; (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This program is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;; GNU General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU General Public License
|
||||||
|
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
;;
|
||||||
|
;;; Acknoledgement:
|
||||||
|
;; This library is heavily inspired by Kite mini library. Kudos Tung Dao
|
||||||
|
;; for his great work.
|
||||||
|
;;
|
||||||
|
;;; Commentary:
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
;;; Customs & Vars ------------------------------------------------------------
|
||||||
|
(defcustom fg42/devtools-remote-host "127.0.0.1"
|
||||||
|
"Default host for connection to WebKit remote debugging API."
|
||||||
|
:group 'fg42/devtools)
|
||||||
|
|
||||||
|
|
||||||
|
(defcustom fg42/devtools-remote-port 9222
|
||||||
|
"Default port for connection to WebKit remote debugging API."
|
||||||
|
:group 'fg42/devtools)
|
||||||
|
|
||||||
|
|
||||||
|
(defvar fg42/devtools-socket nil
|
||||||
|
"Websocket connection to WebKit remote debugging API.")
|
||||||
|
|
||||||
|
|
||||||
|
(defvar fg42/devtools-rpc-id 0)
|
||||||
|
|
||||||
|
|
||||||
|
(defvar fg42/devtools-rpc-callbacks nil)
|
||||||
|
|
||||||
|
|
||||||
|
(defvar fg42/devtools-rpc-scripts nil
|
||||||
|
"List of JavaScript files available for live editing.")
|
||||||
|
|
||||||
|
(defvar fg42/devtools-console-buffer-name "*1-console*")
|
||||||
|
(defvar fg42/devtools-network-buffer-name "*2-network*")
|
||||||
|
|
||||||
|
(provide 'fg42/devtools/vars)
|
||||||
|
;;; vars.el ends here
|
|
@ -0,0 +1,8 @@
|
||||||
|
;;; logger --- logger library of FG42
|
||||||
|
;;; Commentary:
|
||||||
|
;;;
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
|
||||||
|
(provide 'fg42/logger)
|
||||||
|
;;; logger ends here
|
|
@ -23,7 +23,8 @@ with is the buffer."
|
||||||
(let ((buf (get-buffer-create buffer-name)))
|
(let ((buf (get-buffer-create buffer-name)))
|
||||||
(with-current-buffer buf
|
(with-current-buffer buf
|
||||||
(insert data)
|
(insert data)
|
||||||
(funcall fn buf))))
|
(when fn
|
||||||
|
(funcall fn buf)))))
|
||||||
|
|
||||||
|
|
||||||
(defun inspect-as-json-and-switch (data)
|
(defun inspect-as-json-and-switch (data)
|
||||||
|
@ -60,5 +61,10 @@ with is the buffer."
|
||||||
";; END.\n")))
|
";; END.\n")))
|
||||||
|
|
||||||
|
|
||||||
|
(defun apply-face (face-symbol text)
|
||||||
|
"Apply the given FACE-SYMBOL to the given TEXT."
|
||||||
|
(put-text-property 0 (length text) 'face face-symbol text))
|
||||||
|
|
||||||
|
|
||||||
(provide 'fg42/utils)
|
(provide 'fg42/utils)
|
||||||
;;; utils.el ends here
|
;;; utils.el ends here
|
||||||
|
|
Loading…
Reference in New Issue