Skip to content

Add arduino-cli-kill-arduino-connection. #8

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ The following keybindings are provided out of the box.
| Create new sketch | `C-c C-a n` |
| Install a Library | `C-c C-a i` |
| Uninstall a Library | `C-c C-a u` |
| Kill Arduino Connection | `C-c C-a k` |


## Limitations
Expand Down
26 changes: 23 additions & 3 deletions arduino-cli-mode.el
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,8 @@
(let* ((cmd (concat "arduino-cli " cmd " " (shell-quote-argument default-directory)))
(cmd* (arduino-cli--add-flags 'compile cmd)))
(save-some-buffers (not compilation-ask-about-save) (lambda () default-directory))
(compilation-start cmd* 'arduino-cli-compilation-mode)))
(setf arduino-cli--compilation-buffer
(compilation-start cmd* 'arduino-cli-compilation-mode))))

(defun arduino-cli--message (cmd &rest path)
"Run arduino-cli CMD in PATH (if provided) and print as message."
Expand Down Expand Up @@ -305,14 +306,28 @@
(shell-command-to-string "arduino-cli core update-index")
(arduino-cli--message "core upgrade"))

(defun arduino-cli-kill-arduino-connection ()
"Kill any existing connection to an arduino."
(interactive)
(let ((comp-proc (get-buffer-process arduino-cli--compilation-buffer)))
(if comp-proc
(condition-case ()
(progn
(interrupt-process comp-proc)
(sit-for 1)
(delete-process comp-proc))
(error nil))
(message "No Arduino connection running!"))))

;; TODO change from compilation mode into other, non blocking mini-buffer display
(defun arduino-cli-core-install ()
"Find and install Arduino cores."
(interactive)
(let* ((core (arduino-cli--search-cores))
(cmd (concat "arduino-cli core install " core)))
(shell-command-to-string "arduino-cli core update-index")
(compilation-start cmd 'arduino-cli-compilation-mode)))
(setf arduino-cli--compilation-buffer
(compilation-start cmd 'arduino-cli-compilation-mode))))

(defun arduino-cli-core-uninstall ()
"Find and uninstall Arduino cores."
Expand Down Expand Up @@ -341,7 +356,8 @@
(selection (arduino-cli--select libs "Library "))
(cmd (concat "arduino-cli lib install " (shell-quote-argument selection))))
(shell-command-to-string "arduino-cli lib update-index")
(compilation-start cmd 'arduino-cli-compilation-mode)))
(setf arduino-cli--compilation-buffer
(compilation-start cmd 'arduino-cli-compilation-mode))))

(defun arduino-cli-lib-uninstall ()
"Find and uninstall Arduino libraries."
Expand Down Expand Up @@ -381,6 +397,7 @@
(define-key map (kbd "l") #'arduino-cli-board-list)
(define-key map (kbd "i") #'arduino-cli-lib-install)
(define-key map (kbd "u") #'arduino-cli-lib-uninstall)
(define-key map (kbd "k") #'arduino-cli-kill-arduino-connection)
map)
"Keymap for arduino-cli mode commands after `arduino-cli-mode-keymap-prefix'.")
(fset 'arduino-cli-command-map arduino-cli-command-map)
Expand All @@ -391,6 +408,9 @@
map)
"Keymap for arduino-cli mode.")

(defvar arduino-cli--compilation-buffer nil
"The compilation buffer for the most recent compilation.")

(easy-menu-define arduino-cli-menu arduino-cli-mode-map
"Menu for arduino-cli."
'("Arduino-CLI"
Expand Down