markdown_exec 1.7 → 1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -2
- data/Gemfile.lock +1 -1
- data/Rakefile +1 -0
- data/bin/tab_completion.sh +19 -3
- data/examples/colors.md +48 -0
- data/examples/include.md +11 -4
- data/examples/opts.md +7 -0
- data/lib/ansi_formatter.rb +161 -0
- data/lib/directory_searcher.rb +239 -0
- data/lib/env.rb +1 -2
- data/lib/hash_delegator.rb +138 -51
- data/lib/markdown_exec/version.rb +1 -1
- data/lib/markdown_exec.rb +66 -29
- data/lib/mdoc.rb +148 -33
- data/lib/menu.src.yml +94 -17
- data/lib/menu.yml +86 -18
- data/lib/option_value.rb +2 -4
- data/lib/regexp.rb +1 -2
- data/lib/saved_assets.rb +2 -4
- data/lib/saved_files_matcher.rb +3 -7
- data/lib/tap.rb +2 -5
- metadata +5 -2
data/lib/mdoc.rb
CHANGED
@@ -21,7 +21,7 @@ module MarkdownExec
|
|
21
21
|
#
|
22
22
|
# @param table [Array<Hash>] An array of hashes representing markdown sections.
|
23
23
|
#
|
24
|
-
def initialize(table)
|
24
|
+
def initialize(table = [])
|
25
25
|
@table = table
|
26
26
|
end
|
27
27
|
|
@@ -47,8 +47,8 @@ module MarkdownExec
|
|
47
47
|
# write named variables to block at top of script
|
48
48
|
#
|
49
49
|
fcb[:body].join(' ').split.compact.map do |key|
|
50
|
-
format(opts[:block_type_port_set_format],
|
51
|
-
|
50
|
+
### format(opts[:block_type_port_set_format], { key: key, value: ENV.fetch(key, nil) })
|
51
|
+
"key: #{key}, value: #{ENV.fetch(key, nil)}"
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
@@ -72,22 +72,30 @@ module MarkdownExec
|
|
72
72
|
def collect_recursively_required_blocks(name)
|
73
73
|
name_block = get_block_by_anyname(name)
|
74
74
|
if name_block.nil? || name_block.keys.empty?
|
75
|
-
raise "Named code block `#{name}` not found."
|
75
|
+
raise "Named code block `#{name}` not found. (@#{__LINE__})"
|
76
76
|
end
|
77
77
|
|
78
|
-
|
78
|
+
# all_dependency_names = [name_block.oname] + recursively_required(name_block[:reqs])
|
79
|
+
dependencies = collect_dependencies(name_block[:oname])
|
80
|
+
all_dependency_names = collect_unique_names(dependencies).push(name_block[:oname]).uniq
|
81
|
+
unmet_dependencies = all_dependency_names.dup
|
79
82
|
|
80
|
-
# in order of appearance in document
|
83
|
+
# in order of appearance in document (@table)
|
81
84
|
# insert function blocks
|
82
|
-
@table.select { |fcb|
|
83
|
-
|
85
|
+
blocks = @table.select { |fcb| all_dependency_names.include? fcb[:oname] }
|
86
|
+
.map do |fcb|
|
87
|
+
unmet_dependencies.delete(fcb[:oname]) # may not exist if block name is duplicated
|
84
88
|
if (call = fcb[:call])
|
85
89
|
[get_block_by_oname("[#{call.match(/^%\((\S+) |\)/)[1]}]")
|
86
90
|
.merge({ cann: call })]
|
87
91
|
else
|
88
92
|
[]
|
89
93
|
end + [fcb]
|
90
|
-
end.flatten(1)
|
94
|
+
end.flatten(1) #.tap { rbp }
|
95
|
+
{ all_dependency_names: all_dependency_names,
|
96
|
+
blocks: blocks,
|
97
|
+
dependencies: dependencies,
|
98
|
+
unmet_dependencies: unmet_dependencies }
|
91
99
|
end
|
92
100
|
|
93
101
|
# Collects recursively required code blocks and returns them as an array of strings.
|
@@ -95,10 +103,9 @@ module MarkdownExec
|
|
95
103
|
# @param name [String] The name of the code block to start the collection from.
|
96
104
|
# @return [Array<String>] An array of strings containing the collected code blocks.
|
97
105
|
#
|
98
|
-
def collect_recursively_required_code(name,
|
99
|
-
|
100
|
-
|
101
|
-
).map do |fcb|
|
106
|
+
def collect_recursively_required_code(name, label_body: true, label_format_above: nil, label_format_below: nil)
|
107
|
+
block_search = collect_recursively_required_blocks(name)
|
108
|
+
block_search.merge({ code: collect_wrapped_blocks(block_search[:blocks]).map do |fcb|
|
102
109
|
if fcb[:cann]
|
103
110
|
collect_block_code_cann(fcb)
|
104
111
|
elsif fcb[:stdout]
|
@@ -108,11 +115,18 @@ module MarkdownExec
|
|
108
115
|
nil
|
109
116
|
elsif fcb[:shell] == BlockType::PORT
|
110
117
|
collect_block_code_shell(fcb)
|
111
|
-
|
118
|
+
elsif label_body
|
119
|
+
[label_format_above && format(label_format_above, { name: fcb[:oname] })] +
|
120
|
+
fcb[:body] +
|
121
|
+
[label_format_below && format(label_format_below, { name: fcb[:oname] })]
|
122
|
+
else # raw body
|
112
123
|
fcb[:body]
|
113
124
|
end
|
114
|
-
end.compact.flatten(1)
|
115
|
-
|
125
|
+
end.compact.flatten(1).compact })
|
126
|
+
end
|
127
|
+
|
128
|
+
def collect_unique_names(hash)
|
129
|
+
hash.values.flatten.uniq
|
116
130
|
end
|
117
131
|
|
118
132
|
# Retrieves code blocks that are wrapped
|
@@ -209,6 +223,7 @@ module MarkdownExec
|
|
209
223
|
end
|
210
224
|
end
|
211
225
|
|
226
|
+
# if tr ue
|
212
227
|
# Recursively fetches required code blocks for a given list of requirements.
|
213
228
|
#
|
214
229
|
# @param reqs [Array<String>] An array of requirements to start the recursion from.
|
@@ -219,7 +234,7 @@ module MarkdownExec
|
|
219
234
|
|
220
235
|
rem = reqs
|
221
236
|
memo = []
|
222
|
-
while rem.count.positive?
|
237
|
+
while rem && rem.count.positive?
|
223
238
|
rem = rem.map do |req|
|
224
239
|
next if memo.include? req
|
225
240
|
|
@@ -232,6 +247,57 @@ module MarkdownExec
|
|
232
247
|
memo
|
233
248
|
end
|
234
249
|
|
250
|
+
# else
|
251
|
+
# Recursively fetches required code blocks for a given list of requirements.
|
252
|
+
#
|
253
|
+
# @param source [String] The name of the code block to start the recursion from.
|
254
|
+
# @return [Hash] A list of code blocks required by each source code block.
|
255
|
+
#
|
256
|
+
def recursively_required_hash(source, memo = Hash.new([]))
|
257
|
+
return memo unless source
|
258
|
+
return memo if memo.keys.include? source
|
259
|
+
|
260
|
+
block = get_block_by_anyname(source)
|
261
|
+
if block.nil? || block.keys.empty?
|
262
|
+
raise "Named code block `#{source}` not found. (@#{__LINE__})"
|
263
|
+
end
|
264
|
+
|
265
|
+
memo[source] = block[:reqs]
|
266
|
+
return memo unless memo[source]&.count&.positive?
|
267
|
+
|
268
|
+
memo[source].each do |req|
|
269
|
+
next if memo.keys.include? req
|
270
|
+
|
271
|
+
recursively_required_hash(req, memo)
|
272
|
+
end
|
273
|
+
memo
|
274
|
+
end
|
275
|
+
|
276
|
+
# end
|
277
|
+
|
278
|
+
# Recursively collects dependencies of a given source.
|
279
|
+
# @param source [String] The name of the initial source block.
|
280
|
+
# @param memo [Hash] A memoization hash to store resolved dependencies.
|
281
|
+
# @return [Hash] A hash mapping sources to their respective dependencies.
|
282
|
+
def collect_dependencies(source, memo = {})
|
283
|
+
return memo unless source
|
284
|
+
|
285
|
+
if (block = get_block_by_anyname(source)).nil? || block.keys.empty?
|
286
|
+
if true
|
287
|
+
return memo
|
288
|
+
else
|
289
|
+
raise "Named code block `#{source}` not found. (@#{__LINE__})"
|
290
|
+
end
|
291
|
+
end
|
292
|
+
|
293
|
+
return memo unless block[:reqs]
|
294
|
+
|
295
|
+
memo[source] = block[:reqs]
|
296
|
+
|
297
|
+
block[:reqs].each { |req| collect_dependencies(req, memo) unless memo.key?(req) }
|
298
|
+
memo
|
299
|
+
end
|
300
|
+
|
235
301
|
def select_elements_with_neighbor_conditions(array,
|
236
302
|
last_selected_placeholder = nil, next_selected_placeholder = nil)
|
237
303
|
selected_elements = []
|
@@ -283,16 +349,64 @@ if $PROGRAM_NAME == __FILE__
|
|
283
349
|
Bundler.require(:default)
|
284
350
|
|
285
351
|
require 'minitest/autorun'
|
352
|
+
require 'mocha/minitest'
|
286
353
|
|
287
354
|
module MarkdownExec
|
355
|
+
class TestMDocCollectDependencies < Minitest::Test
|
356
|
+
def setup
|
357
|
+
@mdoc = MDoc.new
|
358
|
+
end
|
359
|
+
|
360
|
+
def test_collect_dependencies_with_no_source
|
361
|
+
assert_empty @mdoc.collect_dependencies(nil)
|
362
|
+
end
|
363
|
+
|
364
|
+
if false # must raise error
|
365
|
+
def test_collect_dependencies_with_nonexistent_source
|
366
|
+
assert_raises(RuntimeError) { @mdoc.collect_dependencies('nonexistent') }
|
367
|
+
end
|
368
|
+
end
|
369
|
+
|
370
|
+
def test_collect_dependencies_with_valid_source
|
371
|
+
@mdoc.stubs(:get_block_by_anyname).with('source1').returns({ reqs: ['source2'] })
|
372
|
+
@mdoc.stubs(:get_block_by_anyname).with('source2').returns({ reqs: [] })
|
373
|
+
|
374
|
+
expected = { 'source1' => ['source2'], 'source2' => [] }
|
375
|
+
assert_equal expected, @mdoc.collect_dependencies('source1')
|
376
|
+
end
|
377
|
+
end
|
378
|
+
|
379
|
+
class TestCollectUniqueNames < Minitest::Test
|
380
|
+
def setup
|
381
|
+
@mdoc = MDoc.new
|
382
|
+
end
|
383
|
+
|
384
|
+
def test_empty_hash
|
385
|
+
assert_empty @mdoc.collect_unique_names({})
|
386
|
+
end
|
387
|
+
|
388
|
+
def test_single_key
|
389
|
+
input = { group1: %w[Alice Bob Charlie] }
|
390
|
+
assert_equal %w[Alice Bob Charlie], @mdoc.collect_unique_names(input)
|
391
|
+
end
|
392
|
+
|
393
|
+
def test_multiple_keys
|
394
|
+
input = { group1: %w[Alice Bob], group2: %w[Charlie Alice] }
|
395
|
+
assert_equal %w[Alice Bob Charlie], @mdoc.collect_unique_names(input)
|
396
|
+
end
|
397
|
+
|
398
|
+
def test_no_unique_names
|
399
|
+
input = { group1: ['Alice'], group2: ['Alice'] }
|
400
|
+
assert_equal ['Alice'], @mdoc.collect_unique_names(input)
|
401
|
+
end
|
402
|
+
end
|
403
|
+
|
288
404
|
class TestMDoc < Minitest::Test
|
289
405
|
def setup
|
290
406
|
@table = [
|
291
|
-
{ oname: 'block1', body: ['code for block1'],
|
292
|
-
reqs: ['block2'] },
|
407
|
+
{ oname: 'block1', body: ['code for block1'], reqs: ['block2'] },
|
293
408
|
{ oname: 'block2', body: ['code for block2'], reqs: nil },
|
294
|
-
{ oname: 'block3', body: ['code for block3'],
|
295
|
-
reqs: ['block1'] }
|
409
|
+
{ oname: 'block3', body: ['code for block3'], reqs: ['block1'] }
|
296
410
|
]
|
297
411
|
@doc = MDoc.new(@table)
|
298
412
|
end
|
@@ -312,15 +426,15 @@ if $PROGRAM_NAME == __FILE__
|
|
312
426
|
end
|
313
427
|
|
314
428
|
### broken test
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
429
|
+
def test_collect_recursively_required_blocks
|
430
|
+
result = @doc.collect_recursively_required_blocks('block3')[:blocks]
|
431
|
+
expected_result = [@table[0], @table[1], @table[2]]
|
432
|
+
assert_equal expected_result, result
|
319
433
|
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
434
|
+
assert_raises(RuntimeError) do
|
435
|
+
@doc.collect_recursively_required_blocks('missing_block')
|
436
|
+
end
|
437
|
+
end
|
324
438
|
|
325
439
|
def test_hide_menu_block_per_options
|
326
440
|
opts = { hide_blocks_by_name: true,
|
@@ -338,11 +452,12 @@ if $PROGRAM_NAME == __FILE__
|
|
338
452
|
# end
|
339
453
|
|
340
454
|
def test_recursively_required
|
341
|
-
result = @doc.
|
342
|
-
assert_equal
|
455
|
+
result = @doc.recursively_required_hash('block3')
|
456
|
+
assert_equal ({ 'block3' => ['block1'], 'block1' => ['block2'], 'block2' => nil }),
|
457
|
+
result
|
343
458
|
|
344
|
-
result_no_reqs = @doc.
|
345
|
-
assert_equal
|
459
|
+
result_no_reqs = @doc.recursively_required_hash(nil)
|
460
|
+
assert_equal ({}), result_no_reqs
|
346
461
|
end
|
347
462
|
end
|
348
463
|
|
data/lib/menu.src.yml
CHANGED
@@ -92,6 +92,51 @@
|
|
92
92
|
:opt_name: document_load_opts_block_name
|
93
93
|
:procname: val_as_str
|
94
94
|
|
95
|
+
- :arg_name: BOOL
|
96
|
+
:default: false
|
97
|
+
:description: Dump BlocksInFile (stage 1)
|
98
|
+
:env_var: MDE_DUMP_BLOCKS_IN_FILE
|
99
|
+
:opt_name: dump_blocks_in_file
|
100
|
+
:procname: val_as_bool
|
101
|
+
|
102
|
+
- :arg_name: BOOL
|
103
|
+
:default: false
|
104
|
+
:description: Dump MenuBlocks (stage 2)
|
105
|
+
:env_var: MDE_DUMP_MENU_BLOCKS
|
106
|
+
:opt_name: dump_menu_blocks
|
107
|
+
:procname: val_as_bool
|
108
|
+
|
109
|
+
- :arg_name: BOOL
|
110
|
+
:default: false
|
111
|
+
:description: Dump selected block
|
112
|
+
:env_var: MDE_DUMP_SELECTED_BLOCK
|
113
|
+
:opt_name: dump_selected_block
|
114
|
+
:procname: val_as_bool
|
115
|
+
|
116
|
+
- :default: fg_rgbh_E0_E0_20 # Y
|
117
|
+
:description: Color of exception detail
|
118
|
+
:env_var: MDE_EXCEPTION_COLOR_DETAIL
|
119
|
+
:opt_name: exception_color_detail
|
120
|
+
:procname: val_as_str
|
121
|
+
|
122
|
+
- :default: " - %{detail}\n"
|
123
|
+
:description: Format for exception detail
|
124
|
+
:env_var: MDE_EXCEPTION_FORMAT_DETAIL
|
125
|
+
:opt_name: exception_format_detail
|
126
|
+
:procname: val_as_str
|
127
|
+
|
128
|
+
- :default: fg_rgbh_E0_20_20 # R
|
129
|
+
:description: Color of exception name
|
130
|
+
:env_var: MDE_EXCEPTION_COLOR_NAME
|
131
|
+
:opt_name: exception_color_name
|
132
|
+
:procname: val_as_str
|
133
|
+
|
134
|
+
- :default: "\n%{name}"
|
135
|
+
:description: Format for exception name
|
136
|
+
:env_var: MDE_EXCEPTION_FORMAT_NAME
|
137
|
+
:opt_name: exception_format_name
|
138
|
+
:procname: val_as_str
|
139
|
+
|
95
140
|
- :arg_name: REGEX
|
96
141
|
:default:
|
97
142
|
:description: Exclude blocks with name matching
|
@@ -113,7 +158,7 @@
|
|
113
158
|
:opt_name: exclude_expect_blocks
|
114
159
|
:procname: val_as_bool
|
115
160
|
|
116
|
-
- :default:
|
161
|
+
- :default: fg_rgbh_20_80_80
|
117
162
|
:description: execution_report_preview_frame_color
|
118
163
|
:env_var: MDE_EXECUTION_REPORT_PREVIEW_FRAME_COLOR
|
119
164
|
:opt_name: execution_report_preview_frame_color
|
@@ -157,6 +202,13 @@
|
|
157
202
|
:procname: val_as_str
|
158
203
|
:short_name: f
|
159
204
|
|
205
|
+
- :arg_name: FIND
|
206
|
+
:default: ""
|
207
|
+
:description: Find in documents
|
208
|
+
:long_name: find
|
209
|
+
:procname: find
|
210
|
+
:short_name: "?"
|
211
|
+
|
160
212
|
- :default: "^# *(?<name>[^#]*?) *$"
|
161
213
|
:env_var: MDE_HEADING1_MATCH
|
162
214
|
:opt_name: heading1_match
|
@@ -196,6 +248,13 @@
|
|
196
248
|
:opt_name: history_property_separator
|
197
249
|
:procname: val_as_str
|
198
250
|
|
251
|
+
- :arg_name: HOW
|
252
|
+
:default: ""
|
253
|
+
:description: Find in YAML configuration options
|
254
|
+
:long_name: how
|
255
|
+
:procname: how
|
256
|
+
:short_name: "?"
|
257
|
+
|
199
258
|
- :default: "^ *@import +(?<name>.+?) *$"
|
200
259
|
:env_var: MDE_IMPORT_PATTERN
|
201
260
|
:opt_name: import_pattern
|
@@ -261,7 +320,7 @@
|
|
261
320
|
:opt_name: menu_back_at_top
|
262
321
|
:procname: val_as_bool
|
263
322
|
|
264
|
-
- :default:
|
323
|
+
- :default: fg_rgbh_40_c0_f0
|
265
324
|
:description: Color of menu bash
|
266
325
|
:env_var: MDE_MENU_BASH_COLOR
|
267
326
|
:opt_name: menu_bash_color
|
@@ -281,7 +340,7 @@
|
|
281
340
|
:opt_name: menu_blocks_with_headings
|
282
341
|
:procname: val_as_bool
|
283
342
|
|
284
|
-
- :default:
|
343
|
+
- :default: fg_rgbh_80_80_20
|
285
344
|
:description: Color of menu chrome
|
286
345
|
:env_var: MDE_MENU_CHROME_COLOR
|
287
346
|
:opt_name: menu_chrome_color
|
@@ -293,7 +352,7 @@
|
|
293
352
|
:opt_name: menu_chrome_format
|
294
353
|
:procname: val_as_str
|
295
354
|
|
296
|
-
- :default:
|
355
|
+
- :default: fg_rgbh_20_98_80
|
297
356
|
:description: Color of menu divider
|
298
357
|
:env_var: MDE_MENU_DIVIDER_COLOR
|
299
358
|
:opt_name: menu_divider_color
|
@@ -358,7 +417,7 @@
|
|
358
417
|
:opt_name: menu_initial_divider
|
359
418
|
:procname: val_as_str
|
360
419
|
|
361
|
-
- :default:
|
420
|
+
- :default: fg_rgbh_20_E0_20 # G
|
362
421
|
:description: Color of menu link
|
363
422
|
:env_var: MDE_MENU_LINK_COLOR
|
364
423
|
:opt_name: menu_link_color
|
@@ -370,7 +429,7 @@
|
|
370
429
|
:opt_name: menu_link_format
|
371
430
|
:procname: val_as_str
|
372
431
|
|
373
|
-
- :default:
|
432
|
+
- :default: fg_rgbh_40_a0_a0
|
374
433
|
:description: Color of menu note
|
375
434
|
:env_var: MDE_MENU_NOTE_COLOR
|
376
435
|
:opt_name: menu_note_color
|
@@ -404,13 +463,13 @@
|
|
404
463
|
:opt_name: menu_option_exit_name
|
405
464
|
:procname: val_as_str
|
406
465
|
|
407
|
-
- :default:
|
466
|
+
- :default: fg_rgbh_E0_60_E0 # R
|
408
467
|
:description: Color of menu opts
|
409
468
|
:env_var: MDE_MENU_OPTS_COLOR
|
410
469
|
:opt_name: menu_opts_color
|
411
470
|
:procname: val_as_str
|
412
471
|
|
413
|
-
- :default:
|
472
|
+
- :default: fg_rgbh_E0_20_20
|
414
473
|
:description: Color of menu opts
|
415
474
|
:env_var: MDE_MENU_OPTS_SET_COLOR
|
416
475
|
:opt_name: menu_opts_set_color
|
@@ -422,7 +481,7 @@
|
|
422
481
|
:opt_name: menu_opts_set_format
|
423
482
|
:procname: val_as_str
|
424
483
|
|
425
|
-
- :default:
|
484
|
+
- :default: fg_rgbh_A0_20_D0 # V
|
426
485
|
:description: Color of menu task
|
427
486
|
:env_var: MDE_MENU_TASK_COLOR
|
428
487
|
:opt_name: menu_task_color
|
@@ -446,13 +505,13 @@
|
|
446
505
|
:opt_name: menu_task_symbol
|
447
506
|
:procname: val_as_str
|
448
507
|
|
449
|
-
- :default:
|
508
|
+
- :default: fg_rgbh_E0_80_20
|
450
509
|
:description: Color of menu vars
|
451
510
|
:env_var: MDE_MENU_VARS_COLOR
|
452
511
|
:opt_name: menu_vars_color
|
453
512
|
:procname: val_as_str
|
454
513
|
|
455
|
-
- :default:
|
514
|
+
- :default: fg_rgbh_E0_80_20
|
456
515
|
:description: Color of menu vars
|
457
516
|
:env_var: MDE_MENU_VARS_SET_COLOR
|
458
517
|
:opt_name: menu_vars_set_color
|
@@ -499,13 +558,13 @@
|
|
499
558
|
:opt_name: output_execution_label_format
|
500
559
|
:procname: val_as_str
|
501
560
|
|
502
|
-
- :default:
|
561
|
+
- :default: fg_rgbh_20_D8_80
|
503
562
|
:description: Color of output_execution_label_name
|
504
563
|
:env_var: MDE_OUTPUT_EXECUTION_LABEL_NAME_COLOR
|
505
564
|
:opt_name: output_execution_label_name_color
|
506
565
|
:procname: val_as_str
|
507
566
|
|
508
|
-
- :default:
|
567
|
+
- :default: fg_rgbh_20_E0_80
|
509
568
|
:description: Color of output_execution_label_value
|
510
569
|
:env_var: MDE_OUTPUT_EXECUTION_LABEL_VALUE_COLOR
|
511
570
|
:opt_name: output_execution_label_value_color
|
@@ -567,7 +626,7 @@
|
|
567
626
|
:opt_name: prompt_approve_block
|
568
627
|
:procname: val_as_str
|
569
628
|
|
570
|
-
- :default:
|
629
|
+
- :default: fg_rgbh_20_E8_80
|
571
630
|
:description: Color of prompt after script execution
|
572
631
|
:env_var: MDE_PROMPT_COLOR_AFTER_SCRIPT_EXECUTION
|
573
632
|
:opt_name: prompt_color_after_script_execution
|
@@ -631,6 +690,12 @@
|
|
631
690
|
:opt_name: run_last_script
|
632
691
|
:procname: val_as_bool
|
633
692
|
|
693
|
+
- :default: 1
|
694
|
+
:description: "Runtime exception error level (warn if < 0, ignore if 0, abort if > 0)"
|
695
|
+
:env_var: MDE_RUNTIME_EXCEPTION_ERROR_LEVEL
|
696
|
+
:opt_name: runtime_exception_error_level
|
697
|
+
:procname: val_as_int
|
698
|
+
|
634
699
|
- :arg_name: BOOL
|
635
700
|
:default: false
|
636
701
|
:description: Save executed script
|
@@ -703,7 +768,7 @@
|
|
703
768
|
:opt_name: saved_stdout_glob
|
704
769
|
:procname: val_as_str
|
705
770
|
|
706
|
-
- :default:
|
771
|
+
- :default: fg_rgbh_20_80_80
|
707
772
|
:description: script_execution_frame_color
|
708
773
|
:env_var: MDE_SCRIPT_EXECUTION_FRAME_COLOR
|
709
774
|
:opt_name: script_execution_frame_color
|
@@ -721,7 +786,7 @@
|
|
721
786
|
:opt_name: script_execution_tail
|
722
787
|
:procname: val_as_str
|
723
788
|
|
724
|
-
- :default:
|
789
|
+
- :default: fg_rgbh_20_80_80
|
725
790
|
:description: Color of output divider
|
726
791
|
:env_var: MDE_OUTPUT_DIVIDER_COLOR
|
727
792
|
:opt_name: script_preview_frame_color
|
@@ -781,6 +846,18 @@
|
|
781
846
|
:opt_name: shell
|
782
847
|
:procname: val_as_str
|
783
848
|
|
849
|
+
- :default: "# -^- +%{name} -^-"
|
850
|
+
:description: shell_code_label_format_above
|
851
|
+
:env_var: MDE_SHELL_CODE_LABEL_FORMAT_ABOVE
|
852
|
+
:opt_name: shell_code_label_format_above
|
853
|
+
:procname: val_as_str
|
854
|
+
|
855
|
+
- :default: "# -v- +%{name} -v-"
|
856
|
+
:description: shell_code_label_format_below
|
857
|
+
:env_var: MDE_SHELL_CODE_LABEL_FORMAT_BELOW
|
858
|
+
:opt_name: shell_code_label_format_below
|
859
|
+
:procname: val_as_str
|
860
|
+
|
784
861
|
- :description: List tab completions
|
785
862
|
:long_name: tab-completions
|
786
863
|
:opt_name: tab_completions
|
@@ -800,7 +877,7 @@
|
|
800
877
|
:procname: version
|
801
878
|
:short_name: v
|
802
879
|
|
803
|
-
- :default:
|
880
|
+
- :default: fg_rgbh_E0_E0_20 # Y
|
804
881
|
:description: Color of warning message
|
805
882
|
:env_var: MDE_WARNING_COLOR
|
806
883
|
:opt_name: warning_color
|