diff --git a/command.fnl b/command.fnl index 842e43b..e4e6e35 100644 --- a/command.fnl +++ b/command.fnl @@ -24,21 +24,15 @@ (define-command "switch-to-buffer" - [[:buffer - Buffer.match - #(. (Buffer.next $1.buffer) :name)] - ] - (fn [{:frame frame :buffer buffer}] + [[:buffer Buffer.match #(. (Buffer.next $1.buffer) :name)]] + (fn [{: frame : buffer}] (frame:show-buffer buffer))) (define-command "visit-location" - [[:buffer - Buffer.match - #$1.buffer.name] - [:url #{$1 $1} #($1.buffer:location)] - ] - (fn [{:url url :buffer buffer}] + [[:buffer Buffer.match #$1.buffer.name] + [:url #{$1 $1} #($1.buffer:location)]] + (fn [{: url : buffer}] (buffer:visit url))) (define-command @@ -93,8 +87,7 @@ {:command c :this-param k :collected-params p} (let [{ : completer} (. c.params k) - vals (completer input-string) - value (. vals input-string)] + value (. (completer input-string) input-string)] (tset p k value) (state-for-next-param c p)) @@ -110,20 +103,20 @@ param (if s.active (. (. s.command :params) s.this-param))] (set self.state s) { - :active s.active :error s.error :prompt (if s.active (or s.this-param "Command?" "") "") :default (and param (param.default self.frame)) })) -(fn update-widget-state [{ : widget : entry : completions-widget : prompt} result] +(fn update-widget-state [{ : state : widget : entry : completions-widget : prompt} result] (set prompt.label (or result.prompt "")) - (set entry.sensitive result.active) - (if (not result.active) + (set entry.sensitive state.active) + (if (not state.active) (completions-widget:hide)) (set entry.text (or result.default result.error "")) - (widget.parent:set_visible_child_name - (if result.active "commander" "echo-area"))) + (match widget.parent + p (p:set_visible_child_name + (if state.active "commander" "echo-area")))) (fn on-input [self str] (match self.state @@ -146,17 +139,16 @@ (tset state :active true) (update-widget-state self - {:active true + { :prompt (or state.this-param "Command" "") }) - (entry:grab_focus) - state) + (entry:grab_focus)) (fn deactivate [{: state : entry : prompt &as self}] (doto state (lume.clear) (tset :active false)) - (update-widget-state self {:active false})) + (update-widget-state self {})) (fn invoke-interactively [self name params] (let [c (find-command name)