commit d39d7059b95b30a2cbc27772f2c6a02d61748587
parent 561c717609b3043b8b9f412cb506bde39ee053d5
Author: Daniel Barlow <dan@telent.net>
Date: Mon, 2 Jan 2023 18:20:19 +0000
Revert "inline temps and whitespace, improve update-widget-state"
This reverts commit 9775e0054590486a740b33d1ae801c4154caca9c.
Diffstat:
| M | command.fnl | | | 38 | +++++++++++++++++++++++--------------- |
1 file changed, 23 insertions(+), 15 deletions(-)
diff --git a/command.fnl b/command.fnl
@@ -24,15 +24,21 @@
(define-command
"switch-to-buffer"
- [[:buffer Buffer.match #(. (Buffer.next $1.buffer) :name)]]
- (fn [{: frame : buffer}]
+ [[:buffer
+ Buffer.match
+ #(. (Buffer.next $1.buffer) :name)]
+ ]
+ (fn [{:frame frame :buffer buffer}]
(frame:show-buffer buffer)))
(define-command
"visit-location"
- [[:buffer Buffer.match #$1.buffer.name]
- [:url #{$1 $1} #($1.buffer:location)]]
- (fn [{: url : buffer}]
+ [[:buffer
+ Buffer.match
+ #$1.buffer.name]
+ [:url #{$1 $1} #($1.buffer:location)]
+ ]
+ (fn [{:url url :buffer buffer}]
(buffer:visit url)))
(define-command
@@ -87,7 +93,8 @@
{:command c :this-param k :collected-params p}
(let [{ : completer} (. c.params k)
- value (. (completer input-string) input-string)]
+ vals (completer input-string)
+ value (. vals input-string)]
(tset p k value)
(state-for-next-param c p))
@@ -103,20 +110,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 [{ : state : widget : entry : completions-widget : prompt} result]
+(fn update-widget-state [{ : widget : entry : completions-widget : prompt} result]
(set prompt.label (or result.prompt ""))
- (set entry.sensitive state.active)
- (if (not state.active)
+ (set entry.sensitive result.active)
+ (if (not result.active)
(completions-widget:hide))
(set entry.text (or result.default result.error ""))
- (match widget.parent
- p (p:set_visible_child_name
- (if state.active "commander" "echo-area"))))
+ (widget.parent:set_visible_child_name
+ (if result.active "commander" "echo-area")))
(fn on-input [self str]
(match self.state
@@ -140,16 +147,17 @@
(tset state :active true)
(update-widget-state
self
- {
+ {:active true
:prompt (or state.this-param "Command" "")
})
- (entry:grab_focus))
+ (entry:grab_focus)
+ state)
(fn deactivate [{: state : entry : prompt &as self}]
(doto state
(lume.clear)
(tset :active false))
- (update-widget-state self {}))
+ (update-widget-state self {:active false}))
(fn invoke-interactively [self name params]
(let [c (find-command name)