@@ -84,42 +84,46 @@ def _sep [
84
84
color ?: string = ' light_yellow'
85
85
fg ?: string
86
86
] {
87
- if not $env .NU_POWERLINE {
88
- let r = match $direction {
89
- ' >' => {
90
- let r = $' (ansi light_yellow )|'
91
- {|s | $" ($s )($r )" }
87
+ match $env .NU_POWER_DECORATOR {
88
+ ' plain' => {
89
+ let r = match $direction {
90
+ ' >' => {
91
+ let r = $' (ansi light_yellow )|'
92
+ {|s | $" ($s )($r )" }
93
+ }
94
+ ' <' => {
95
+ let l = $' (ansi light_yellow )|'
96
+ {|s | $" ($l )($s )" }
97
+ }
98
+ ' <<' | ' >>' => {{|s | $s }}
92
99
}
93
- ' <' => {
94
- let l = $' (ansi light_yellow )|'
95
- {|s | $" ($l )($s )" }
96
- }
97
- ' <<' | ' >>' => {{|s | $s }}
98
- }
99
- return $r
100
- }
101
- let fg = if ($fg | is-empty ) { $color } else { $fg }
102
- match $direction {
103
- ' >' => {
104
- let l = (ansi - e {bg : $fg })
105
- let r = $' (ansi - e {fg : $fg , bg : $color })(char nf_left_segment )'
106
- {|s | $' ($l )($s )($r )' }
100
+ return $r
107
101
}
108
- ' >>' => {
109
- let l = (ansi - e {bg : $fg })
110
- let r = $' (ansi reset )(ansi - e {fg : $fg })(char nf_left_segment )'
111
- {|s | $' ($l )($s )($r )' }
112
- }
113
- ' <' | ' <<' => {
114
- let l = $' (ansi - e {fg : $color })(char nf_right_segment )(ansi - e {bg : $color })'
115
- {|s | $' ($l )($s )' }
102
+ ' power' => {
103
+ let fg = if ($fg | is-empty ) { $color } else { $fg }
104
+ match $direction {
105
+ ' >' => {
106
+ let l = (ansi - e {bg : $fg })
107
+ let r = $' (ansi - e {fg : $fg , bg : $color })(char nf_left_segment )'
108
+ {|s | $' ($l )($s )($r )' }
109
+ }
110
+ ' >>' => {
111
+ let l = (ansi - e {bg : $fg })
112
+ let r = $' (ansi reset )(ansi - e {fg : $fg })(char nf_left_segment )'
113
+ {|s | $' ($l )($s )($r )' }
114
+ }
115
+ ' <' | ' <<' => {
116
+ let l = $' (ansi - e {fg : $color })(char nf_right_segment )(ansi - e {bg : $color })'
117
+ {|s | $' ($l )($s )' }
118
+ }
119
+ }
116
120
}
117
121
}
118
122
}
119
123
120
124
def left_prompt [segment ] {
121
125
let stop = ($segment | length ) - 1
122
- let vs = ($segment | each {|x | [$x.power ($env .NU_PROMPT_COMPONENTS | get $x.source )]})
126
+ let vs = ($segment | each {|x | [$x.color ($env .NU_PROMPT_COMPONENTS | get $x.source )]})
123
127
let cs = ($vs | each {|x | $x.0 })
124
128
let cs = ($cs | prepend $cs.1 ? )
125
129
let thunk = ($vs
@@ -141,7 +145,7 @@ def left_prompt [segment] {
141
145
142
146
def right_prompt [segment ] {
143
147
let thunk = ( $segment
144
- | each {|x | [$x.power ($env .NU_PROMPT_COMPONENTS | get $x.source )]}
148
+ | each {|x | [$x.color ($env .NU_PROMPT_COMPONENTS | get $x.source )]}
145
149
| enumerate
146
150
| each {|x |
147
151
if $x.index == 0 {
@@ -191,21 +195,30 @@ export def default_env [name value] {
191
195
}
192
196
193
197
export def-env init [] {
194
- if ($env .NU_UPPROMPT ? | is-empty ) {
195
- let-env PROMPT_COMMAND = (left_prompt $env .NU_PROMPT_SCHEMA.0 )
196
- let-env PROMPT_COMMAND_RIGHT = (right_prompt $env .NU_PROMPT_SCHEMA.1 )
197
- } else {
198
- let-env PROMPT_COMMAND = (up_prompt $env .NU_PROMPT_SCHEMA )
198
+ match $env .NU_POWER_FRAME {
199
+ ' default' => {
200
+ let-env PROMPT_COMMAND = (left_prompt $env .NU_POWER_SCHEMA.0 )
201
+ let-env PROMPT_COMMAND_RIGHT = (right_prompt $env .NU_POWER_SCHEMA.1 )
202
+ }
203
+ ' fill' => {
204
+ let-env PROMPT_COMMAND = (up_prompt $env .NU_POWER_SCHEMA )
205
+ }
206
+ }
207
+
208
+ let-env PROMPT_INDICATOR = {||
209
+ match $env .NU_POWER_DECORATOR {
210
+ ' plain' => { " > " }
211
+ ' power' => { " " }
212
+ }
199
213
}
200
- let-env PROMPT_INDICATOR = {|| if not $env .NU_POWERLINE { " > " } else { " " } }
201
214
let-env PROMPT_INDICATOR_VI_INSERT = {|| " : " }
202
215
let-env PROMPT_INDICATOR_VI_NORMAL = {|| " > " }
203
216
let-env PROMPT_MULTILINE_INDICATOR = {|| " ::: " }
204
217
205
218
let-env config = ( $env .config | update menus ($env .config.menus
206
219
| each {|x |
207
- if ($x.marker in ($env .MENU_MARKER_SCHEMA | columns )) {
208
- let c = ($env .MENU_MARKER_SCHEMA | get $x.marker )
220
+ if ($x.marker in ($env .NU_MENU_MARKER | columns )) {
221
+ let c = ($env .NU_MENU_MARKER | get $x.marker )
209
222
$x | upsert marker $' (ansi - e {fg : $c })(char nf_left_segment_thin ) '
210
223
} else {
211
224
$x
@@ -223,7 +236,7 @@ export def-env register [name source] {
223
236
}
224
237
225
238
export def-env inject [pos idx define ] {
226
- let prev = ($env .NU_PROMPT_SCHEMA | get $pos )
239
+ let prev = ($env .NU_POWER_SCHEMA | get $pos )
227
240
let next = if $idx == 0 {
228
241
$prev | prepend $define
229
242
} else {
@@ -234,8 +247,8 @@ export def-env inject [pos idx define] {
234
247
] | flatten
235
248
}
236
249
237
- let-env NU_PROMPT_SCHEMA = (
238
- $env .NU_PROMPT_SCHEMA
250
+ let-env NU_POWER_SCHEMA = (
251
+ $env .NU_POWER_SCHEMA
239
252
| update $pos $next
240
253
)
241
254
}
@@ -248,30 +261,48 @@ export def-env hook [] {
248
261
let-env config = ( $env .config | upsert hooks.env_change { |config |
249
262
let init = [{|before , after | if not ($before | is-empty ) { init } }]
250
263
$config.hooks.env_change
251
- | upsert NU_UPPROMPT $init
252
- | upsert NU_POWERLINE $init
253
- | upsert NU_PROMPT_SCHEMA $init
254
- | upsert MENU_MARKER_SCHEMA $init
264
+ | upsert NU_POWER_SCHEMA $init
265
+ | upsert NU_POWER_FRAME $init
266
+ | upsert NU_POWER_DECORATOR $init
267
+ | upsert NU_MENU_MARKER $init
268
+ # NU_POWER_THEME
255
269
})
256
270
}
257
271
258
272
export-env {
259
- let-env NU_PROMPT_SCHEMA = (default_env
260
- NU_PROMPT_SCHEMA
273
+ let-env NU_POWER_SCHEMA = (default_env
274
+ NU_POWER_SCHEMA
261
275
[
262
276
[
263
- {source : pwd , power : ' #353230' }
277
+ {source : pwd , color : ' #353230' }
264
278
]
265
279
[
266
- {source : proxy , power : ' dark_gray' }
267
- {source : host , power : ' #353230' }
268
- {source : time , power : ' #666560' }
280
+ {source : proxy , color : ' dark_gray' }
281
+ {source : host , color : ' #353230' }
282
+ {source : time , color : ' #666560' }
269
283
]
270
284
]
271
285
)
272
286
273
- let-env MENU_MARKER_SCHEMA = (default_env
274
- MENU_MARKER_SCHEMA
287
+ let-env NU_POWER_FRAME = (default_env
288
+ NU_POWER_FRAME
289
+ ' default' # default | fill
290
+ )
291
+
292
+ let-env NU_POWER_DECORATOR = (default_env
293
+ NU_POWER_DECORATOR
294
+ ' power' # power | plain
295
+ )
296
+
297
+ let-env NU_POWER_THEME = (default_env
298
+ NU_POWER_THEME
299
+ {
300
+ red : (ansi red )
301
+ }
302
+ )
303
+
304
+ let-env NU_MENU_MARKER = (default_env
305
+ NU_MENU_MARKER
275
306
{
276
307
"| " : ' green'
277
308
": " : ' yellow'
@@ -280,8 +311,6 @@ export-env {
280
311
}
281
312
)
282
313
283
- let-env NU_POWERLINE = (default_env NU_POWERLINE true )
284
-
285
314
let-env NU_PROMPT_COMPONENTS = {
286
315
pwd : (pwd_abbr )
287
316
proxy : (proxy_stat )
0 commit comments