So I ended up using this EMACS keyboard macro, which helps a lot...
It's not fully optimized; I don't think I fully understand the ways that keyboard macros can be edited...
;; Keyboard Macro Editor. Press C-c C-c to finish; press C-x k RET to cancel.
;; Original keys: ESC d ESC d ESC d sprintf ( spbuffer , "%6s=%0x08lx SPC ( %s ) " , " SPC C-f ESC \ ESC C-s ; C-b C-w C-d C-y " , SPC p-> C-y , SPC " M-\ C-e " ) ; C-n C-a mySerial.print ( spbuffer ) ; RET
Command: last-kbd-macro
Key: none
Macro:
ESC d ;; kill-word -get rid of "__IOM uint32_t"
ESC d ;; kill-word
ESC d ;; kill-word
sprintf ;; self-insert-command * 7
( ;; c-electric-paren
spbuffer ;; self-insert-command * 8
, ;; c-electric-semi&comma
"%6s=%0x08lx ;; self-insert-command "sprintf(spbuf, "%6s=0x%08lx%s","
SPC ;; self-insert-command
( ;; c-electric-paren
%s ;; self-insert-command * 2
) ;; c-electric-paren
" ;; self-insert-command
, ;; c-electric-semi&comma
" ;; self-insert-command
SPC ;; self-insert-command
C-f ;; forward-char skip the spaces
ESC \ ;; delete-horizontal-space
ESC C-s ;; isearch-forward-regexp copy structure member name
; ;; c-electric-semi&comma into the kill buffer
C-b ;; backward-char ...
C-w ;; kill-region
C-d ;; c-electric-delete-forward
C-y ;; yank into the quoted string
" ;; self-insert-command
, ;; c-electric-semi&comma
SPC ;; self-insert-command
p-> ;; self-insert-command * 3
C-y ;; yank and again as a variable p->member
, ;; c-electric-semi&comma
SPC ;; self-insert-command
" ;; self-insert-command
M-\ ;; delete-horizontal-space and clean up the description from the comment
C-e ;; move-end-of-line
" ;; self-insert-command
) ;; c-electric-paren
; ;; c-electric-semi&comma
C-n ;; next-line
C-a ;; move-beginning-of-line
mySerial.print ;; self-insert-command * 14 and print the constructed string
( ;; c-electric-paren
spbuffer ;; self-insert-command * 8
) ;; c-electric-paren
; ;; c-electric-semi&comma
RET ;; newline