Use assert in prelude/start-process

Since the tokenizing isn't working as expected, my keyboard.el function
keyboard/swap-caps-lock-and-escape was silenting failing.

I'm adding a prelude/refute in that function to make the failures noisy until
the tokenizing is properly supported.
This commit is contained in:
William Carroll 2020-01-18 22:34:55 +00:00
parent e7200fb033
commit fa681ffdf0
2 changed files with 6 additions and 3 deletions

View file

@ -65,6 +65,8 @@
(defun keyboard/swap-caps-lock-and-escape ()
"Swaps the caps lock and escape keys using xmodmap."
(interactive)
;; TODO: Ensure these work once the tokenizing in prelude/start-process works
;; as expected.
(prelude/start-process
:name "keyboard/swap-caps-lock-and-escape"
:command "xmodmap -e 'remove Lock = Caps_Lock'")

View file

@ -116,13 +116,14 @@ difficult to troubleshoot bugs in your init files."
"Read input from user with PROMPT."
(read-string prompt))
;; TODO: Fix the bug with tokenizing here, since it will split any whitespace
;; character, (even though it shouldn't in the case of quoted string in shell).
;; e.g. - "xmodmap -e 'one two three'" => '("xmodmap" "-e" "'one two three'")
(cl-defun prelude/start-process (&key name command)
"Pass command string, COMMAND, and the function name, NAME.
This is a wrapper around `start-process' that has an API that resembles
`shell-command'."
;; TODO: Fix the bug with tokenizing here, since it will split any whitespace
;; character, even though it shouldn't in the case of quoted string in shell.
;; e.g. - "xmodmap -e 'one two three'" => '("xmodmap" "-e" "'one two three'")
(prelude/refute (string/contains? "'" command))
(let* ((tokens (string/split " " command))
(program-name (list/head tokens))
(program-args (list/tail tokens)))