144
144
(let* ((cmd (concat " arduino-cli " cmd " " (shell-quote-argument default-directory)))
145
145
(cmd* (arduino-cli--add-flags 'compile cmd)))
146
146
(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 ))))
148
149
149
150
(defun arduino-cli--message (cmd &rest path )
150
151
" 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."
320
321
(shell-command-to-string " arduino-cli core update-index" )
321
322
(arduino-cli--message " core upgrade" ))
322
323
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
+
323
337
; ; TODO change from compilation mode into other, non blocking mini-buffer display
324
338
(defun arduino-cli-core-install ()
325
339
" Find and install Arduino cores."
326
340
(interactive )
327
341
(let* ((core (arduino-cli--search-cores))
328
342
(cmd (concat " arduino-cli core install " core)))
329
343
(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 ))))
331
346
332
347
(defun arduino-cli-core-uninstall ()
333
348
" Find and uninstall Arduino cores."
@@ -356,7 +371,8 @@ If BOARD has multiple matching_boards, the first one is used."
356
371
(selection (arduino-cli--select libs " Library " ))
357
372
(cmd (concat " arduino-cli lib install " (shell-quote-argument selection))))
358
373
(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 ))))
360
376
361
377
(defun arduino-cli-lib-uninstall ()
362
378
" Find and uninstall Arduino libraries."
@@ -396,6 +412,7 @@ If BOARD has multiple matching_boards, the first one is used."
396
412
(define-key map (kbd " l" ) #'arduino-cli-board-list )
397
413
(define-key map (kbd " i" ) #'arduino-cli-lib-install )
398
414
(define-key map (kbd " u" ) #'arduino-cli-lib-uninstall )
415
+ (define-key map (kbd " k" ) #'arduino-cli-kill-arduino-connection )
399
416
map)
400
417
" Keymap for arduino-cli mode commands after `arduino-cli-mode-keymap-prefix' ." )
401
418
(fset 'arduino-cli-command-map arduino-cli-command-map)
@@ -406,6 +423,9 @@ If BOARD has multiple matching_boards, the first one is used."
406
423
map)
407
424
" Keymap for arduino-cli mode." )
408
425
426
+ (defvar arduino-cli--compilation-buffer nil
427
+ " The compilation buffer for the most recent compilation." )
428
+
409
429
(easy-menu-define arduino-cli-menu arduino-cli-mode-map
410
430
" Menu for arduino-cli."
411
431
'(" Arduino-CLI"
0 commit comments