-
Notifications
You must be signed in to change notification settings - Fork 0
/
cli.old
131 lines (119 loc) · 5.49 KB
/
cli.old
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
;;; cli.el -*- lexical-binding: t; -*-
(setq org-confirm-babel-evaluate nil)
(defun doom-shut-up-a (orig-fn &rest args)
(quiet! (apply orig-fn args)))
(advice-add 'org-babel-execute-src-block :around #'doom-shut-up-a)
;;(require 'projectile)
;; (defcli! ((project-dir-p ["--project"] "Project directory (PWD)") dir)
;; "If starting in a project directory, then fire up project space"
;; (progn
;; (with-current-buffer "*scratch*" (insert "Initialize packages"))
;; (doom-initialize-packages)
;; (with-current-buffer "*scratch*" (insert "Require packages"))
;; (require 'projectile)
;; (with-current-buffer "*scratch*" (insert (format "Project Dir: %s" dir)))
;; (cd dir)
;; (with-current-buffer "*scratch*" (insert (format "Current Directory: %s" default-directory)))))
;; stolen from tecosaur: https://gateless.atlassian.net/browse/RUL-2958?atlOrigin=eyJpIjoiZGJhZTZkZWE0NjRkNGExNjhhMTNmYzNlZGZhNjNlMmUiLCJwIjoiamlyYS1zbGFjay1pbnQifQ
;; (defcli! repl ((in-rlwrap-p ["--rl"] "For internal use only."))
;; "Start an elisp REPL."
;; (when (and (executable-find "rlwrap") (not in-rlwrap-p))
;; ;; For autocomplete
;; (setq autocomplete-file "/tmp/doom_elisp_repl_symbols")
;; (unless (file-exists-p autocomplete-file)
;; (princ "\e[0;33mInitialising autocomplete list...\e[0m\n")
;; (with-temp-buffer
;; (cl-do-all-symbols (s)
;; (let ((sym (symbol-name s)))
;; (when (string-match-p "\\`[[:ascii:]][[:ascii:]]+\\'" sym)
;; (insert sym "\n"))))
;; (write-region nil nil autocomplete-file)))
;; (princ "\e[F")
;; (throw 'exit (list "rlwrap" "-f" autocomplete-file
;; (concat doom-emacs-dir "bin/doom") "repl" "--rl")))
;; (doom-initialize-packages)
;; (require 'engrave-faces-ansi)
;; (setq engrave-faces-ansi-color-mode '3-bit)
;; ;; For some reason (require 'parent-mode) doesn't work :(
;; (defun parent-mode-list (mode)
;; "Return a list of MODE and all its parent modes.
;; The returned list starts with the parent-most mode and ends with MODE."
;; (let ((result ()))
;; (parent-mode--worker mode (lambda (mode)
;; (push mode result)))
;; result))
;; (defun parent-mode--worker (mode func)
;; "For MODE and all its parent modes, call FUNC.
;; FUNC is first called for MODE, then for its parent, then for the parent's
;; parent, and so on.
;; MODE shall be a symbol referring to a function.
;; FUNC shall be a function taking one argument."
;; (funcall func mode)
;; (when (not (fboundp mode))
;; (signal 'void-function (list mode)))
;; (let ((modefunc (symbol-function mode)))
;; (if (symbolp modefunc)
;; ;; Hande all the modes that use (defalias 'foo-parent-mode (stuff)) as
;; ;; their parent
;; (parent-mode--worker modefunc func)
;; (let ((parentmode (get mode 'derived-mode-parent)))
;; (when parentmode
;; (parent-mode--worker parentmode func))))))
;; (provide 'parent-mode)
;; ;; Some extra highlighting (needs parent-mode)
;; (require 'rainbow-delimiters)
;; (require 'highlight-quoted)
;; (require 'highlight-numbers)
;; (setq emacs-lisp-mode-hook '(rainbow-delimiters-mode
;; highlight-quoted-mode
;; highlight-numbers-mode))
;; ;; Pretty print
;; (defun pp-sexp (sexp)
;; (with-temp-buffer
;; (cl-prettyprint sexp)
;; (emacs-lisp-mode)
;; (font-lock-ensure)
;; (with-current-buffer (engrave-faces-ansi-buffer)
;; (princ (string-trim (buffer-string)))
;; (kill-buffer (current-buffer)))))
;; ;; Now do the REPL
;; (defvar accumulated-input nil)
;; (while t
;; (condition-case nil
;; (let ((input (if accumulated-input
;; (read-string "\e[31m .\e[0m ")
;; (read-string "\e[31mλ:\e[0m "))))
;; (setq input (concat accumulated-input
;; (when accumulated-input "\n")
;; input))
;; (cond
;; ((string-match-p "\\`[[:space:]]*\\'" input)
;; nil)
;; ((string= input "exit")
;; (princ "\n") (kill-emacs 0))
;; (t
;; (condition-case err
;; (let ((input-sexp (car (read-from-string input))))
;; (setq accumulated-input nil)
;; (pp-sexp (eval input-sexp))
;; (princ "\n"))
;; ;; Caused when sexp in unbalanced
;; (end-of-file (setq accumulated-input input))
;; (error
;; (cl-destructuring-bind (backtrace &optional type data . _)
;; (cons (doom-cli--backtrace) err)
;; (princ (concat "\e[1;31mERROR:\e[0m " (get type 'error-message)))
;; (princ "\n ")
;; (pp-sexp (cons type data))
;; (when backtrace
;; (print! (bold "Backtrace:"))
;; (print-group!
;; (dolist (frame (seq-take backtrace 10))
;; (print!
;; "%0.74s" (replace-regexp-in-string
;; "[\n\r]" "\\\\n"
;; (format "%S" frame))))))
;; (princ "\n")))))))
;; ;; C-d causes an end-of-file error
;; (end-of-file (princ "exit\n") (kill-emacs 0)))
;; (unless accumulated-input (princ "\n"))))