Skip to content

Commit 3265507

Browse files
authored
Add arduino-cli-kill-arduino-connection. (#8)
1 parent 10f95ca commit 3265507

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ The following keybindings are provided out of the box.
9494
| Create new sketch | `C-c C-a n` |
9595
| Install a Library | `C-c C-a i` |
9696
| Uninstall a Library | `C-c C-a u` |
97+
| Kill Arduino Connection | `C-c C-a k` |
9798

9899

99100
## Limitations

arduino-cli-mode.el

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@
144144
(let* ((cmd (concat "arduino-cli " cmd " " (shell-quote-argument default-directory)))
145145
(cmd* (arduino-cli--add-flags 'compile cmd)))
146146
(save-some-buffers (not compilation-ask-about-save) (lambda () default-directory))
147-
(compilation-start cmd* 'arduino-cli-compilation-mode)))
147+
(setf arduino-cli--compilation-buffer
148+
(compilation-start cmd* 'arduino-cli-compilation-mode))))
148149

149150
(defun arduino-cli--message (cmd &rest path)
150151
"Run arduino-cli CMD in PATH (if provided) and print as message."
@@ -320,14 +321,28 @@ If BOARD has multiple matching_boards, the first one is used."
320321
(shell-command-to-string "arduino-cli core update-index")
321322
(arduino-cli--message "core upgrade"))
322323

324+
(defun arduino-cli-kill-arduino-connection ()
325+
"Kill any existing connection to an arduino."
326+
(interactive)
327+
(let ((comp-proc (get-buffer-process arduino-cli--compilation-buffer)))
328+
(if comp-proc
329+
(condition-case ()
330+
(progn
331+
(interrupt-process comp-proc)
332+
(sit-for 1)
333+
(delete-process comp-proc))
334+
(error nil))
335+
(message "No Arduino connection running!"))))
336+
323337
;; TODO change from compilation mode into other, non blocking mini-buffer display
324338
(defun arduino-cli-core-install ()
325339
"Find and install Arduino cores."
326340
(interactive)
327341
(let* ((core (arduino-cli--search-cores))
328342
(cmd (concat "arduino-cli core install " core)))
329343
(shell-command-to-string "arduino-cli core update-index")
330-
(compilation-start cmd 'arduino-cli-compilation-mode)))
344+
(setf arduino-cli--compilation-buffer
345+
(compilation-start cmd 'arduino-cli-compilation-mode))))
331346

332347
(defun arduino-cli-core-uninstall ()
333348
"Find and uninstall Arduino cores."
@@ -356,7 +371,8 @@ If BOARD has multiple matching_boards, the first one is used."
356371
(selection (arduino-cli--select libs "Library "))
357372
(cmd (concat "arduino-cli lib install " (shell-quote-argument selection))))
358373
(shell-command-to-string "arduino-cli lib update-index")
359-
(compilation-start cmd 'arduino-cli-compilation-mode)))
374+
(setf arduino-cli--compilation-buffer
375+
(compilation-start cmd 'arduino-cli-compilation-mode))))
360376

361377
(defun arduino-cli-lib-uninstall ()
362378
"Find and uninstall Arduino libraries."
@@ -396,6 +412,7 @@ If BOARD has multiple matching_boards, the first one is used."
396412
(define-key map (kbd "l") #'arduino-cli-board-list)
397413
(define-key map (kbd "i") #'arduino-cli-lib-install)
398414
(define-key map (kbd "u") #'arduino-cli-lib-uninstall)
415+
(define-key map (kbd "k") #'arduino-cli-kill-arduino-connection)
399416
map)
400417
"Keymap for arduino-cli mode commands after `arduino-cli-mode-keymap-prefix'.")
401418
(fset 'arduino-cli-command-map arduino-cli-command-map)
@@ -406,6 +423,9 @@ If BOARD has multiple matching_boards, the first one is used."
406423
map)
407424
"Keymap for arduino-cli mode.")
408425

426+
(defvar arduino-cli--compilation-buffer nil
427+
"The compilation buffer for the most recent compilation.")
428+
409429
(easy-menu-define arduino-cli-menu arduino-cli-mode-map
410430
"Menu for arduino-cli."
411431
'("Arduino-CLI"

0 commit comments

Comments
 (0)