-
Notifications
You must be signed in to change notification settings - Fork 0
/
mojo-mode-ext.el
99 lines (78 loc) · 3.29 KB
/
mojo-mode-ext.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
;;; mojo-mode-ext.el --- Mojo based commands -*-lexical-binding: t-*-
;;; Commentary:
;; This library implements support for `mojo-mode'.
;;; Code:
(require 'compile)
(defvar mojo-run-arguments ""
"Holds arguments for 'mojo run', similar to `compilation-arguments`.")
(defvar mojo-build-arguments ""
"Holds arguments for 'mojo build', similar to `compilation-arguments`.")
(defvar mojo-package-arguments ""
"Holds arguments for 'mojo package', similar to `compilation-arguments`.")
(defvar mojo-format-arguments ""
"Holds arguments for 'mojo format', similar to `compilation-arguments`.")
(defvar mojo-test-arguments ""
"Holds arguments for 'mojo test', similar to `compilation-arguments`.")
(defun mojo-run (&optional arg)
"Run 'mojo run' for the current file.
If ARG is not nil, use the value as argument and store it in `mojo-run-arguments'.
"
(interactive "P")
(when arg
(setq mojo-run-arguments (read-from-minibuffer "Mojo run arguments: " mojo-run-arguments)))
(if (eq mojo-run-arguments "")
(compile (concat "mojo run " buffer-file-name))
(compile (concat "mojo run " mojo-run-arguments " " buffer-file-name))))
(defun mojo-build (&optional arg)
"Run 'mojo build' for the current file.
If ARG is not nil, use the value as argument and store it in `mojo-build-arguments'.
"
(interactive "P")
(when arg
(setq mojo-build-arguments (read-from-minibuffer "Mojo build arguments: " "")))
(if (string-empty-p mojo-package-arguments)
(compile (concat "mojo build " buffer-file-name))
(compile (concat "mojo build " mojo-build-arguments " " buffer-file-name))))
(defun mojo-package (&optional arg)
"Run 'mojo package'.
If options are provided via prefix argument, it is assumed that a path is included.
Without prefix argument, `default-directory' is used as the path."
(interactive "P")
(when arg
(setq mojo-package-arguments (read-from-minibuffer "Mojo package arguments: " "")))
(if (string-empty-p mojo-package-arguments)
(compile (concat "mojo package "
(directory-file-name (expand-file-name default-directory))))
(compile (concat "mojo package " mojo-package-arguments))))
(defun mojo-format (&optional arg)
"Run 'mojo format' for the current file.
If ARG is not nil, use the value as argument and store it in `mojo-format-arguments'.
"
(interactive "P")
(when arg
(setq mojo-format-arguments
(read-from-minibuffer "Mojo format arguments: " mojo-format-arguments)))
(if (eq mojo-format-arguments "")
(compile (concat "mojo format " buffer-file-name))
(compile (concat "mojo format " mojo-format-arguments " " buffer-file-name))))
(defun mojo-test (&optional arg)
"Run 'mojo test'.
If ARG is not nil, use the value as argument and store it in `mojo-test-arguments'.
"
(interactive "P")
(when arg
(setq mojo-format-arguments
(read-from-minibuffer "Mojo test arguments: " mojo-test-arguments)))
(if (eq mojo-test-arguments "")
(compile "mojo test")
(compile (concat "mojo test " mojo-test-arguments))))
;;; Tentative keymap
;; (defvar-keymap mojo-mode-map
;; :doc "Keymap for `mojo-mode'."
;; "C-c C-c C-r" #'mojo-run
;; "C-c C-c C-b" #'mojo-build
;; "C-c C-c C-f" #'mojo-format
;; "C-c C-c C-t" #'mojo-test
;; )
(provide 'mojo-mode-ext)
;;; mojo-mode-ext.el ends here