markdown_exec 2.0.4 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -19,7 +19,12 @@ class InputSequencer
19
19
  @document_filename = document_filename
20
20
  @current_block = nil
21
21
  @block_queue = initial_blocks
22
- @debug = Env::env_bool('INPUT_SEQUENCER_DEBUG', default: false) ### false e
22
+ @debug = Env.env_bool('INPUT_SEQUENCER_DEBUG', default: false)
23
+ # rubocop:disable Style/RescueStandardError
24
+ rescue
25
+ pp $!, $@
26
+ exit 1
27
+ # rubocop:enable Style/RescueStandardError
23
28
  end
24
29
 
25
30
  # Merges the current menu state with the next, prioritizing the next state's values.
@@ -33,9 +38,11 @@ class InputSequencer
33
38
  inherited_lines: next_state.inherited_lines,
34
39
  prior_block_was_link: next_state.prior_block_was_link.nil? ? current.prior_block_was_link : next_state.prior_block_was_link
35
40
  )
41
+ # rubocop:disable Style/RescueStandardError
36
42
  rescue
37
43
  pp $!, $@
38
44
  exit 1
45
+ # rubocop:enable Style/RescueStandardError
39
46
  end
40
47
 
41
48
  # Generates the next menu state based on provided attributes.
@@ -52,6 +59,11 @@ class InputSequencer
52
59
  # Orchestrates the flow of menu states and user interactions.
53
60
  def run_yield(sym, *args, &block)
54
61
  block.call sym, *args
62
+ # rubocop:disable Style/RescueStandardError
63
+ rescue
64
+ pp $!, $@
65
+ exit 1
66
+ # rubocop:enable Style/RescueStandardError
55
67
  end
56
68
 
57
69
  def bq_is_empty?
@@ -69,7 +81,6 @@ class InputSequencer
69
81
  loop do
70
82
  break if run_yield(:parse_document, now_menu.document_filename, &block) == :break
71
83
 
72
- pp [__LINE__, 'exit_when_bq_empty', exit_when_bq_empty, '@block_queue', @block_queue, 'now_menu', now_menu] if @debug
73
84
  # self.imw_ins now_menu, 'now_menu'
74
85
 
75
86
  break if exit_when_bq_empty && bq_is_empty? && !now_menu.prior_block_was_link
@@ -80,15 +91,11 @@ class InputSequencer
80
91
 
81
92
  choice = run_yield :user_choice, &block
82
93
 
83
- if choice.nil?
84
- raise "Block not recognized."
85
- break
86
- end
94
+ raise 'Block not recognized.' if choice.nil?
87
95
  break if run_yield(:exit?, choice&.downcase, &block) # Exit loop and method to terminate the app
88
96
 
89
97
  next_state = run_yield :execute_block, choice, &block
90
98
  # imw_ins next_state, 'next_state'
91
- pp [__LINE__, 'next_state', next_state] if @debug
92
99
  return :break if next_state == :break
93
100
 
94
101
  next_menu = next_state
@@ -102,7 +109,6 @@ class InputSequencer
102
109
  block_name = @block_queue.shift
103
110
  end
104
111
  # self.imw_ins block_name, 'block_name'
105
- pp [__LINE__, 'block_name', block_name] if @debug
106
112
 
107
113
  next_menu = if block_name == '.'
108
114
  exit_when_bq_empty = false
@@ -112,15 +118,16 @@ class InputSequencer
112
118
  state.display_menu = bq_is_empty?
113
119
  state
114
120
  end
115
- pp [__LINE__, 'next_menu', next_menu] if @debug
116
121
  next_menu
117
122
  # imw_ins next_menu, 'next_menu'
118
123
  end
119
124
  now_menu = InputSequencer.merge_link_state(now_menu, next_menu)
120
125
  end
126
+ # rubocop:disable Style/RescueStandardError
121
127
  rescue
122
128
  pp $!, $@
123
129
  exit 1
130
+ # rubocop:enable Style/RescueStandardError
124
131
  end
125
132
  end
126
133
 
@@ -7,5 +7,5 @@ module MarkdownExec
7
7
  BIN_NAME = 'mde'
8
8
  GEM_NAME = 'markdown_exec'
9
9
  TAP_DEBUG = 'MDE_DEBUG'
10
- VERSION = '2.0.4'
10
+ VERSION = '2.0.6'
11
11
  end
data/lib/markdown_exec.rb CHANGED
@@ -9,6 +9,7 @@ require 'fileutils'
9
9
  require 'open3'
10
10
  require 'optparse'
11
11
  require 'shellwords'
12
+ require 'time'
12
13
  require 'tmpdir'
13
14
  require 'tty-prompt'
14
15
  require 'yaml'
@@ -17,6 +18,7 @@ require_relative 'ansi_formatter'
17
18
  require_relative 'block_label'
18
19
  require_relative 'cached_nested_file_reader'
19
20
  require_relative 'cli'
21
+ require_relative 'color_scheme'
20
22
  require_relative 'colorize'
21
23
  require_relative 'directory_searcher'
22
24
  require_relative 'env'
@@ -103,6 +105,81 @@ end
103
105
  module MarkdownExec
104
106
  include Exceptions
105
107
 
108
+ class FileInMenu
109
+ # Prepends the age of the file in days to the file name for display in a menu.
110
+ # @param filename [String] the name of the file
111
+ # @return [String] modified file name with age prepended
112
+ def self.for_menu(filename)
113
+ file_age = (Time.now - File.mtime(filename)) / (60 * 60 * 24 * 30)
114
+ filename = ColorScheme.colorize_path(filename)
115
+
116
+ " #{Histogram.display(file_age, 0, 11, 12, inverse: false)}: #{filename}"
117
+ end
118
+
119
+ # Removes the age from the string to retrieve the original file name.
120
+ # @param filename_with_age [String] the modified file name with age
121
+ # @return [String] the original file name
122
+ def self.from_menu(dname)
123
+ filename_with_age = dname.gsub(/\033\[[\d;]+m|\033\[0m/, '')
124
+ filename_with_age.split(': ', 2).last
125
+ end
126
+ end
127
+
128
+ # A class that generates a histogram bar in terminal using xterm-256 color codes.
129
+ class Histogram
130
+ # Generates and prints a histogram bar for a given value within a specified range and width, with an option for inverse display.
131
+ # @param integer_value [Integer] the value to represent in the histogram
132
+ # @param min [Integer] the minimum value of the range
133
+ # @param max [Integer] the maximum value of the range
134
+ # @param width [Integer] the total width of the histogram in characters
135
+ # @param inverse [Boolean] whether the histogram is displayed in inverse order (right to left)
136
+ def self.display(integer_value, min, max, width, inverse: false)
137
+ return if max <= min # Ensure the range is valid
138
+
139
+ # Normalize the value within the range 0 to 1
140
+ normalized_value = [0, [(integer_value - min).to_f / (max - min), 1].min].max
141
+
142
+ # Calculate how many characters should be filled
143
+ filled_length = (normalized_value * width).round
144
+
145
+ # # Generate the histogram bar using xterm-256 colors (color code 42 is green)
146
+ # filled_bar = "\e[48;5;42m" + ' ' * filled_length + "\e[0m"
147
+ filled_bar = ('¤' * filled_length).fg_rgbh_AF_AF_00
148
+ empty_bar = ' ' * (width - filled_length)
149
+
150
+ # Determine the order of filled and empty parts based on the inverse flag
151
+ inverse ? (empty_bar + filled_bar) : (filled_bar + empty_bar)
152
+ end
153
+ end
154
+
155
+ class MenuBuilder
156
+ def initialize
157
+ @chrome_color = :cyan
158
+ @o_color = :red
159
+ end
160
+
161
+ def build_menu(file_names, directory_names, found_in_block_names, files_in_directories, vbn)
162
+ choices = []
163
+
164
+ # Adding section title and data for file names
165
+ choices << { disabled: '', name: "in #{file_names[:section_title]}".send(@chrome_color) }
166
+ choices += file_names[:data].map { |str| FileInMenu.for_menu(str) }
167
+
168
+ # Conditionally add directory names if data is present
169
+ unless directory_names[:data].count.zero?
170
+ choices << { disabled: '', name: "in #{directory_names[:section_title]}".send(@chrome_color) }
171
+ choices += files_in_directories
172
+ end
173
+
174
+ # Adding found in block names
175
+ choices << { disabled: '', name: "in #{found_in_block_names[:section_title]}".send(@chrome_color) }
176
+
177
+ choices += vbn
178
+
179
+ choices
180
+ end
181
+ end
182
+
106
183
  class SearchResultsReport < DirectorySearcher
107
184
  def directory_names(search_options, highlight_value)
108
185
  matched_directories = find_directory_names
@@ -113,20 +190,24 @@ module MarkdownExec
113
190
  }
114
191
  end
115
192
 
116
- def file_contents(search_options, highlight_value)
117
- matched_contents = find_file_contents.map.with_index do |(file, contents), index|
118
- [file, contents.map { |detail| format('=%4.d: %s', detail.index, detail.line) }, index]
193
+ def found_in_block_names(search_options, highlight_value, formspec: '=%<index>4.d: %<line>s')
194
+ matched_contents = (find_file_contents do |line|
195
+ read_block_name(line, search_options[:fenced_start_and_end_regex], search_options[:block_name_match], search_options[:block_name_nick_match])
196
+ end).map.with_index do |(file, contents), index|
197
+ # [file, contents.map { |detail| format(formspec, detail.index, detail.line) }, index]
198
+ [file, contents.map { |detail| format(formspec, { index: detail.index, line: detail.line }) }, index]
119
199
  end
120
200
  {
121
- section_title: 'file contents',
201
+ section_title: 'block names',
122
202
  data: matched_contents.map(&:first),
123
203
  formatted_text: matched_contents.map do |(file, details, index)|
124
- { header: format('- %3.d: %s', index + 1, file),
125
- content: AnsiFormatter.new(search_options).format_and_highlight_array(
126
- details,
127
- highlight: [highlight_value]
128
- ) }
129
- end
204
+ { header: format('- %3.d: %s', index + 1, file),
205
+ content: AnsiFormatter.new(search_options).format_and_highlight_array(
206
+ details,
207
+ highlight: [highlight_value]
208
+ ) }
209
+ end,
210
+ matched_contents: matched_contents
130
211
  }
131
212
  end
132
213
 
@@ -140,6 +221,21 @@ module MarkdownExec
140
221
  ).join("\n") }]
141
222
  }
142
223
  end
224
+
225
+ def read_block_name(line, fenced_start_and_end_regex, block_name_match, block_name_nick_match)
226
+ return unless line.match(fenced_start_and_end_regex)
227
+
228
+ bm = extract_named_captures_from_option(line, block_name_match)
229
+ return if bm.nil?
230
+
231
+ name = bm[:title]
232
+
233
+ if block_name_nick_match.present? && line =~ Regexp.new(block_name_nick_match)
234
+ $~[0]
235
+ else
236
+ bm && bm[1] ? bm[:title] : name
237
+ end
238
+ end
143
239
  end
144
240
 
145
241
  ##
@@ -248,7 +344,14 @@ module MarkdownExec
248
344
  # Reports and executes block logic
249
345
  def execute_block_logic(files)
250
346
  @options[:filename] = select_document_if_multiple(files)
251
- @options.document_menu_loop
347
+ @options.document_inpseq
348
+ rescue StandardError
349
+ error_handler('execute_block_logic')
350
+ # rubocop:disable Style/RescueStandardError
351
+ rescue
352
+ pp $!, $@
353
+ exit 1
354
+ # rubocop:enable Style/RescueStandardError
252
355
  end
253
356
 
254
357
  ## Executes the block specified in the options
@@ -353,16 +456,17 @@ module MarkdownExec
353
456
  :menu_chrome_color)}"
354
457
  searcher = SearchResultsReport.new(value, [find_path])
355
458
  file_names = searcher.file_names(options, value)
356
- file_contents = searcher.file_contents(options, value)
459
+ found_in_block_names = searcher.found_in_block_names(options, value, formspec: '%<line>s')
357
460
  directory_names = searcher.directory_names(options, value)
358
461
 
359
462
  ### search in file contents (block names, chrome, or text)
360
- [file_contents,
463
+ [found_in_block_names,
361
464
  directory_names,
362
465
  file_names].each do |data|
363
- @fout.fout "In #{data[:section_title]}" if data[:section_title]
466
+ next if data[:data].count.zero?
364
467
  next unless data[:formatted_text]
365
468
 
469
+ @fout.fout "In #{data[:section_title]}" if data[:section_title]
366
470
  data[:formatted_text].each do |fi|
367
471
  @fout.fout fi[:header] if fi[:header]
368
472
  @fout.fout fi[:content] if fi[:content]
@@ -372,17 +476,29 @@ module MarkdownExec
372
476
 
373
477
  ## pick a document to open
374
478
  #
375
- files = directory_names[:data].map do |dn|
479
+ files_in_directories = directory_names[:data].map do |dn|
376
480
  find_files('*', [dn], exclude_dirs: true)
377
- end.flatten(1)
378
- choices = \
379
- [{ disabled: '', name: "in #{file_names[:section_title]}".cyan }] \
380
- + file_names[:data] \
381
- + [{ disabled: '', name: "in #{directory_names[:section_title]}".cyan }] \
382
- + files \
383
- + [{ disabled: '', name: "in #{file_contents[:section_title]}".cyan }] \
384
- + file_contents[:data]
385
- @options[:filename] = select_document_if_multiple(choices)
481
+ end.flatten(1).map { |str| FileInMenu.for_menu(str) }
482
+
483
+ return { exit: true } unless file_names[:data]&.count.positive? || files_in_directories&.count.positive? || found_in_block_names[:data]&.count.positive?
484
+
485
+ vbn = found_in_block_names[:matched_contents].map do |matched_contents|
486
+ filename, details, = matched_contents
487
+ nexo = AnsiFormatter.new(@options).format_and_highlight_array(
488
+ details,
489
+ highlight: [value]
490
+ )
491
+ [FileInMenu.for_menu(filename)] + nexo.map { |str| { disabled: '', name: (' ' * 20) + str } }
492
+ end.flatten
493
+
494
+ choices = MenuBuilder.new.build_menu(file_names, directory_names, found_in_block_names, files_in_directories, vbn)
495
+
496
+ @options[:filename] = FileInMenu.from_menu(
497
+ select_document_if_multiple(
498
+ choices,
499
+ prompt: options[:prompt_select_md].to_s + ' ¤ Age in months'.fg_rgbh_AF_AF_00
500
+ )
501
+ )
386
502
  { exit: false }
387
503
  end
388
504
 
@@ -400,7 +516,7 @@ module MarkdownExec
400
516
  opts.banner = [
401
517
  "#{MarkdownExec::APP_NAME}" \
402
518
  " - #{MarkdownExec::APP_DESC} (#{MarkdownExec::VERSION})",
403
- "Usage: #{executable_name} [(path | filename [block_name])] [options]"
519
+ "Usage: #{executable_name} [(directory | file [block_name] | search_keyword)] [options]"
404
520
  ].join("\n")
405
521
 
406
522
  menu_iter do |item|
@@ -447,7 +563,7 @@ module MarkdownExec
447
563
  }
448
564
  when 'show_config'
449
565
  ->(_) {
450
- finalize_cli_argument_processing(options)
566
+ finalize_cli_argument_processing([])
451
567
  @fout.fout options.sort_by_key.to_yaml
452
568
  }
453
569
  when 'val_as_bool'
@@ -604,7 +720,7 @@ module MarkdownExec
604
720
 
605
721
  saved_name_split filename
606
722
  @options[:save_executed_script] = false
607
- @options.document_menu_loop
723
+ @options.document_inpseq
608
724
  rescue StandardError
609
725
  error_handler('run_last_script')
610
726
  end
@@ -618,13 +734,13 @@ module MarkdownExec
618
734
  @options[:saved_filename_replacement])
619
735
  end
620
736
 
621
- def select_document_if_multiple(files = list_markdown_files_in_path)
737
+ def select_document_if_multiple(files = list_markdown_files_in_path, prompt: options[:prompt_select_md].to_s)
622
738
  return files[0] if (count = files.count) == 1
623
739
 
624
740
  return unless count >= 2
625
741
 
626
742
  opts = options.dup
627
- select_option_or_exit(HashDelegator.new(@options).string_send_color(opts[:prompt_select_md].to_s, :prompt_color_after_script_execution),
743
+ select_option_or_exit(HashDelegator.new(@options).string_send_color(prompt, :prompt_color_after_script_execution),
628
744
  files,
629
745
  opts.merge(per_page: opts[:select_page_height]))
630
746
  end
@@ -633,7 +749,6 @@ module MarkdownExec
633
749
  def select_option_or_exit(prompt_text, strings, opts = {})
634
750
  result = @options.select_option_with_metadata(prompt_text, strings,
635
751
  opts)
636
- ### 2024-04-20 what for?
637
752
  # return unless result.fetch(:option, nil)
638
753
 
639
754
  result[:selected]
@@ -670,7 +785,7 @@ module MarkdownExec
670
785
 
671
786
  saved_name_split(filename)
672
787
 
673
- @options.document_menu_loop ### ({ save_executed_script: false })
788
+ @options.document_inpseq ### ({ save_executed_script: false })
674
789
  end
675
790
 
676
791
  public
data/lib/menu.src.yml CHANGED
@@ -106,28 +106,38 @@
106
106
  :opt_name: display_level_xbase_prefix
107
107
  :procname: val_as_str
108
108
 
109
- # - :default: "(document_link)"
110
- # :description: Name of Link block to load with the document
111
- # :env_var: MDE_DOCUMENT_LOAD_LINK_BLOCK_NAME
112
- # :opt_name: document_load_link_block_name
113
- # :procname: val_as_str
114
-
115
109
  - :default: "(document_options)"
116
110
  :description: Name of Opts block to load with the document
117
111
  :env_var: MDE_DOCUMENT_LOAD_OPTS_BLOCK_NAME
118
112
  :opt_name: document_load_opts_block_name
119
113
  :procname: val_as_str
120
114
 
115
+ - :arg_name: GLOB
116
+ :default: "document_configurations/%{document_filename}_*.sh"
117
+ :description: Glob for saved lines for a document
118
+ :env_var: MDE_DOCUMENT_SAVED_LINES_GLOB
119
+ :opt_name: document_saved_lines_glob
120
+ :procname: val_as_str
121
+
122
+ - :arg_name: BOOL
123
+ :default: true
124
+ :description: Add menu options for saved lines
125
+ :env_var: MDE_MENU_FOR_SAVED_LINES
126
+ :opt_name: menu_for_saved_lines
127
+ :procname: val_as_bool
128
+
121
129
  - :arg_name: BOOL
122
130
  :default: false
123
131
  :description: Dump @delegate_object
124
- :long_name: dump-dump-delegate-object
132
+ :env_var: MDE_DUMP_DELEGATE_OBJECT
133
+ :long_name: dump-delegate-object
125
134
  :opt_name: dump_delegate_object
126
135
  :procname: val_as_bool
127
136
 
128
137
  - :arg_name: BOOL
129
138
  :default: false
130
139
  :description: Dump BlocksInFile (stage 1)
140
+ :env_var: MDE_DUMP_BLOCKS_IN_FILE
131
141
  :long_name: dump-blocks-in-file
132
142
  :opt_name: dump_blocks_in_file
133
143
  :procname: val_as_bool
@@ -135,27 +145,31 @@
135
145
  - :arg_name: BOOL
136
146
  :default: false
137
147
  :description: Dump inherited block_names
138
- :long_name: dump-dump-inherited-block_names
148
+ :env_var: MDE_DUMP_INHERITED_BLOCK_NAMES
149
+ :long_name: dump-inherited-block_names
139
150
  :opt_name: dump_inherited_block_names
140
151
  :procname: val_as_bool
141
152
 
142
153
  - :arg_name: BOOL
143
154
  :default: false
144
155
  :description: Dump inherited dependencies
145
- :long_name: dump-dump-inherited-dependencies
156
+ :env_var: MDE_DUMP_INHERITED_DEPENDENCIES
157
+ :long_name: dump-inherited-dependencies
146
158
  :opt_name: dump_inherited_dependencies
147
159
  :procname: val_as_bool
148
160
 
149
161
  - :arg_name: BOOL
150
162
  :default: false
151
163
  :description: Dump inherited lines
152
- :long_name: dump-dump-inherited-lines
164
+ :env_var: MDE_DUMP_INHERITED_LINES
165
+ :long_name: dump-inherited-lines
153
166
  :opt_name: dump_inherited_lines
154
167
  :procname: val_as_bool
155
168
 
156
169
  - :arg_name: BOOL
157
170
  :default: false
158
171
  :description: Dump MenuBlocks (stage 2)
172
+ :env_var: MDE_DUMP_MENU_BLOCKS
159
173
  :long_name: dump-menu-blocks
160
174
  :opt_name: dump_menu_blocks
161
175
  :procname: val_as_bool
@@ -163,6 +177,7 @@
163
177
  - :arg_name: BOOL
164
178
  :default: false
165
179
  :description: Dump selected block
180
+ :env_var: MDE_DUMP_SELECTED_BLOCK
166
181
  :long_name: dump-selected-block
167
182
  :opt_name: dump_selected_block
168
183
  :procname: val_as_bool
@@ -212,8 +227,6 @@
212
227
  :opt_name: exclude_expect_blocks
213
228
  :procname: val_as_bool
214
229
 
215
- # - :default: >
216
- # osascript scripts/applescript/mde.applescript "%{batch_index}" "%{home}" " %{started_at} - %{document_filename} - %{block_name} " "%{script_filespec}" "%{output_filespec}"
217
230
  - :default: >
218
231
  osascript -e '
219
232
  on run argv
@@ -285,7 +298,7 @@
285
298
  :opt_name: fenced_start_and_end_regex
286
299
  :procname: val_as_str
287
300
 
288
- - :default: "^(?<indent> *)`{3,}(?<shell>[^`\\s]*) *:?(?<name>[^\\s]*) *(?<rest>.*) *$"
301
+ - :default: "^(?<indent> *)`{3,}(?<shell>[^`\\s]*) *(:(?<name>[^\\s]*))? *(?<rest>.*) *$"
289
302
  :description: Match the start of a fenced block
290
303
  :env_var: MDE_FENCED_START_EXTENDED_REGEX
291
304
  :opt_name: fenced_start_extended_regex
@@ -407,6 +420,14 @@
407
420
  :opt_name: list_recent_scripts
408
421
  :procname: val_as_bool
409
422
 
423
+ - :arg_name: PATH
424
+ :default: ''
425
+ :description: Load code
426
+ :env_var: MDE_LOAD_CODE
427
+ :long_name: load-code
428
+ :opt_name: load_code
429
+ :procname: val_as_str
430
+
410
431
  - :arg_name: PREFIX
411
432
  :default: mde
412
433
  :description: Name prefix for stdout files
@@ -494,6 +515,13 @@
494
515
  :opt_name: menu_exit_at_top
495
516
  :procname: val_as_bool
496
517
 
518
+ - :arg_name: BOOL
519
+ :default: false
520
+ :description: Display Load option at top of menu (vs bottom)
521
+ :env_var: MDE_MENU_LOAD_AT_TOP
522
+ :opt_name: menu_load_at_top
523
+ :procname: val_as_bool
524
+
497
525
  - :default:
498
526
  :line: "~~~"
499
527
  :description: closing demarcations for menu
@@ -622,6 +650,13 @@
622
650
  :opt_name: menu_option_back_name
623
651
  :procname: val_as_str
624
652
 
653
+ - :default:
654
+ :line: "* Edit"
655
+ :description: Text for Edit option
656
+ :env_var: MDE_MENU_OPTION_EDIT_NAME
657
+ :opt_name: menu_option_edit_name
658
+ :procname: val_as_str
659
+
625
660
  - :default:
626
661
  :line: "* Exit"
627
662
  :description: Text for Exit option
@@ -629,6 +664,27 @@
629
664
  :opt_name: menu_option_exit_name
630
665
  :procname: val_as_str
631
666
 
667
+ - :default:
668
+ :line: "* Load"
669
+ :description: Text for Load option
670
+ :env_var: MDE_MENU_OPTION_LOAD_NAME
671
+ :opt_name: menu_option_load_name
672
+ :procname: val_as_str
673
+
674
+ - :default:
675
+ :line: "* Save"
676
+ :description: Text for Save option
677
+ :env_var: MDE_MENU_OPTION_SAVE_NAME
678
+ :opt_name: menu_option_save_name
679
+ :procname: val_as_str
680
+
681
+ - :default:
682
+ :line: "* View"
683
+ :description: Text for View option
684
+ :env_var: MDE_MENU_OPTION_VIEW_NAME
685
+ :opt_name: menu_option_view_name
686
+ :procname: val_as_str
687
+
632
688
  - :default: fg_rgbh_ff_00_ff
633
689
  :description: Color of menu opts
634
690
  :env_var: MDE_MENU_OPTS_COLOR
@@ -710,7 +766,7 @@
710
766
  :procname: val_as_bool
711
767
 
712
768
  - :arg_name: BOOL
713
- :default: true
769
+ :default: false
714
770
  :description: Display inherited lines in menu
715
771
  :env_var: MDE_MENU_WITH_INHERITED_LINES
716
772
  :opt_name: menu_with_inherited_lines
@@ -758,7 +814,6 @@
758
814
  :default: false
759
815
  :description: Display summary for execution
760
816
  :env_var: MDE_OUTPUT_EXECUTION_SUMMARY
761
- :long_name: output-execution-summary
762
817
  :opt_name: output_execution_summary
763
818
  :procname: val_as_bool
764
819
 
@@ -860,6 +915,12 @@
860
915
  :opt_name: prompt_exit
861
916
  :procname: val_as_str
862
917
 
918
+ - :default: Back
919
+ :description: Quit prompt
920
+ :env_var: MDE_PROMPT_FILESPEC_OTHER
921
+ :opt_name: prompt_filespec_back
922
+ :procname: val_as_str
923
+
863
924
  - :default: Other
864
925
  :description: Prompt for a custom file name
865
926
  :env_var: MDE_PROMPT_FILESPEC_OTHER
@@ -946,7 +1007,6 @@
946
1007
  :default: false
947
1008
  :description: Wheter to save an executed script`
948
1009
  :env_var: MDE_SAVE_EXECUTED_SCRIPT
949
- :long_name: save-executed-script
950
1010
  :opt_name: save_executed_script
951
1011
  :procname: val_as_bool
952
1012
 
@@ -954,7 +1014,6 @@
954
1014
  :default: false
955
1015
  :description: Save standard output of the executed script
956
1016
  :env_var: MDE_SAVE_EXECUTION_OUTPUT
957
- :long_name: save-execution-output
958
1017
  :opt_name: save_execution_output
959
1018
  :procname: val_as_bool
960
1019
 
@@ -988,7 +1047,6 @@
988
1047
  :default: logs
989
1048
  :description: Folder where saved scripts are stored
990
1049
  :env_var: MDE_SAVED_SCRIPT_FOLDER
991
- :long_name: saved-script-folder
992
1050
  :opt_name: saved_script_folder
993
1051
  :procname: val_as_str
994
1052
 
@@ -1003,7 +1061,6 @@
1003
1061
  :default: logs
1004
1062
  :description: Saved stdout folder
1005
1063
  :env_var: MDE_SAVED_STDOUT_FOLDER
1006
- :long_name: saved-stdout-folder
1007
1064
  :opt_name: saved_stdout_folder
1008
1065
  :procname: val_as_str
1009
1066