Commit 3824eb87 authored by Antonino D'Annaç's avatar Antonino D'Annaç

Now it checks for lsbdio and if not available, dowload the bdio repository,...

Now it checks for lsbdio and if not available, dowload the bdio repository, builds the tool and uses that
parent e0914fba
;;; bdio-mode.el --- View .bdio files using lsbdio
(require 's)
(require 'f)
(defvar bdio-mode-hook nil)
(defvar source-file nil)
(defvar lsbdio "lsbdio")
(defun bdio--render-file (file)
"Render FILE using lsbdio into current buffer."
(let ((inhibit-read-only t))
(erase-buffer)
(let ((exit-code
(call-process "lsbdio" nil t nil file "-c 0")))
(call-process lsbdio nil t nil file "-c 0")))
(unless (eq exit-code 0)
(insert (format "Error running lsbdio on %s\n" file))))
(goto-char (point-min))
......@@ -59,7 +61,7 @@
(insert "\n")
(let ((output-start (point)))
;; insert command output
(call-process "lsbdio" nil t nil bdio-file "-d" (number-to-string record)))
(call-process lsbdio nil t nil bdio-file "-d" (number-to-string record)))
;; mark inserted region
(put-text-property lstart lend 'bdio-expanded t)))))
(goto-char cpoint))
......@@ -71,6 +73,46 @@
(setq-local revert-buffer-function #'bdio-revert-buffer)
(defun bdio-mode--clone-repo (dir)
(message "cloning bdio in " dir)
(with-temp-buffer
(let ((exit-code
(call-process
"git"
nil
t
nil
"clone"
"https://github.com/to-ko/bdio.git"
dir))
)
(list exit-code
(buffer-string)))))
(defun bdio-mode--make-tools (bdio-dir)
(message "making tools")
(defvar current-dir default-directory)
(cd bdio-dir)
(call-process "make" nil nil nil)
(cd "tools")
(call-process "make" nil nil nil)
(cd current-dir))
(defun bdio-mode--get-lsbdio ()
(defvar bdio-dir (f-join package-user-dir "bdio"))
(if (not (file-directory-p bdio-dir))
(bdio-mode--clone-repo bdio-dir))
(defvar lsbdio-path (f-join bdio-dir "tools" lsbdio))
(if (not (file-exists-p lsbdio-path))
(bdio-mode--make-tools bdio-dir))
(setq lsbdio (f-join bdio-dir "tools" lsbdio)))
(defun bdio-mode--check-for-lsbdio ()
(interactive)
(if (not (executable-find lsbdio))
(bdio-mode--get-lsbdio)))
;;;###autoload
(add-to-list 'auto-mode-alist '("\\.bdio\\'" . bdio-open-file))
......@@ -83,6 +125,7 @@
(define-derived-mode bdio-mode special-mode "BDIO"
"Major mode for viewing BDIO files via lsbdio."
(use-local-map bdio-mode-map)
(bdio-mode--check-for-lsbdio)
(setq buffer-read-only t))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment