visidata 3.0.2__py3-none-any.whl → 3.1.1__py3-none-any.whl

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.
Files changed (150) hide show
  1. visidata/__init__.py +12 -10
  2. visidata/_input.py +208 -202
  3. visidata/_open.py +4 -1
  4. visidata/_types.py +4 -3
  5. visidata/aggregators.py +88 -39
  6. visidata/apps/vdsql/_ibis.py +7 -11
  7. visidata/apps/vdsql/clickhouse.py +2 -2
  8. visidata/apps/vdsql/snowflake.py +1 -1
  9. visidata/apps/vgit/status.py +1 -1
  10. visidata/basesheet.py +11 -4
  11. visidata/canvas.py +54 -20
  12. visidata/clipboard.py +13 -6
  13. visidata/cliptext.py +7 -6
  14. visidata/cmdlog.py +40 -27
  15. visidata/column.py +14 -49
  16. visidata/ddw/regex.ddw +3 -2
  17. visidata/deprecated.py +14 -2
  18. visidata/desktop/visidata.desktop +2 -2
  19. visidata/editor.py +1 -0
  20. visidata/errors.py +1 -1
  21. visidata/experimental/sort_selected.py +54 -0
  22. visidata/expr.py +69 -18
  23. visidata/features/change_precision.py +1 -3
  24. visidata/features/cmdpalette.py +17 -2
  25. visidata/features/colorsheet.py +1 -1
  26. visidata/features/dedupe.py +3 -3
  27. visidata/features/go_col.py +71 -0
  28. visidata/features/graph_seaborn.py +1 -1
  29. visidata/features/join.py +20 -10
  30. visidata/features/layout.py +16 -3
  31. visidata/features/ping.py +16 -12
  32. visidata/features/regex.py +5 -5
  33. visidata/features/status_source.py +3 -1
  34. visidata/features/sysedit.py +1 -1
  35. visidata/features/transpose.py +2 -1
  36. visidata/features/type_ipaddr.py +2 -4
  37. visidata/features/unfurl.py +1 -0
  38. visidata/form.py +2 -2
  39. visidata/freqtbl.py +16 -11
  40. visidata/fuzzymatch.py +1 -0
  41. visidata/graph.py +163 -12
  42. visidata/guide.py +57 -24
  43. visidata/guides/ClipboardGuide.md +48 -0
  44. visidata/guides/ColumnsGuide.md +52 -0
  45. visidata/guides/CommandsSheet.md +28 -0
  46. visidata/guides/DirSheet.md +34 -0
  47. visidata/{features/errors_guide.py → guides/ErrorsSheet.md} +2 -11
  48. visidata/guides/FrequencyTable.md +42 -0
  49. visidata/guides/GrepSheet.md +28 -0
  50. visidata/guides/JsonSheet.md +38 -0
  51. visidata/guides/MacrosSheet.md +19 -0
  52. visidata/guides/MeltGuide.md +52 -0
  53. visidata/guides/MemorySheet.md +7 -0
  54. visidata/guides/MenuGuide.md +26 -0
  55. visidata/guides/ModifyGuide.md +38 -0
  56. visidata/guides/PivotGuide.md +71 -0
  57. visidata/guides/RegexGuide.md +107 -0
  58. visidata/guides/SelectionGuide.md +44 -0
  59. visidata/guides/SlideGuide.md +26 -0
  60. visidata/guides/SplitpaneGuide.md +15 -0
  61. visidata/guides/TypesSheet.md +43 -0
  62. visidata/guides/XsvGuide.md +36 -0
  63. visidata/help.py +6 -6
  64. visidata/hint.py +2 -1
  65. visidata/indexsheet.py +2 -2
  66. visidata/interface.py +13 -14
  67. visidata/keys.py +4 -1
  68. visidata/loaders/api_airtable.py +1 -1
  69. visidata/loaders/archive.py +1 -1
  70. visidata/loaders/csv.py +9 -5
  71. visidata/loaders/eml.py +11 -6
  72. visidata/loaders/f5log.py +1 -0
  73. visidata/loaders/fec.py +18 -42
  74. visidata/loaders/fixed_width.py +19 -3
  75. visidata/loaders/grep.py +121 -0
  76. visidata/loaders/html.py +1 -0
  77. visidata/loaders/http.py +6 -1
  78. visidata/loaders/json.py +22 -4
  79. visidata/loaders/jsonla.py +8 -2
  80. visidata/loaders/mailbox.py +1 -0
  81. visidata/loaders/markdown.py +25 -6
  82. visidata/loaders/msgpack.py +19 -0
  83. visidata/loaders/npy.py +0 -1
  84. visidata/loaders/odf.py +18 -4
  85. visidata/loaders/orgmode.py +1 -1
  86. visidata/loaders/rec.py +6 -4
  87. visidata/loaders/sas.py +11 -4
  88. visidata/loaders/scrape.py +0 -1
  89. visidata/loaders/texttables.py +2 -0
  90. visidata/loaders/tsv.py +24 -7
  91. visidata/loaders/unzip_http.py +127 -3
  92. visidata/loaders/vds.py +4 -0
  93. visidata/loaders/vdx.py +1 -1
  94. visidata/loaders/xlsx.py +5 -0
  95. visidata/loaders/xml.py +2 -1
  96. visidata/macros.py +14 -31
  97. visidata/main.py +14 -13
  98. visidata/mainloop.py +14 -6
  99. visidata/man/vd.1 +72 -39
  100. visidata/man/vd.txt +72 -41
  101. visidata/memory.py +15 -4
  102. visidata/menu.py +14 -3
  103. visidata/metasheets.py +5 -6
  104. visidata/modify.py +4 -4
  105. visidata/mouse.py +2 -0
  106. visidata/movement.py +14 -28
  107. visidata/optionssheet.py +3 -5
  108. visidata/path.py +59 -37
  109. visidata/pivot.py +8 -5
  110. visidata/pyobj.py +63 -9
  111. visidata/save.py +16 -9
  112. visidata/search.py +4 -4
  113. visidata/selection.py +10 -56
  114. visidata/settings.py +37 -35
  115. visidata/sheets.py +186 -108
  116. visidata/shell.py +22 -12
  117. visidata/sidebar.py +71 -16
  118. visidata/sort.py +21 -6
  119. visidata/statusbar.py +42 -5
  120. visidata/stored_list.py +5 -2
  121. visidata/tests/conftest.py +1 -0
  122. visidata/tests/test_commands.py +9 -1
  123. visidata/tests/test_completer.py +18 -0
  124. visidata/tests/test_edittext.py +3 -2
  125. visidata/text_source.py +7 -4
  126. visidata/textsheet.py +20 -6
  127. visidata/themes/ascii8.py +9 -6
  128. visidata/themes/asciimono.py +14 -4
  129. visidata/threads.py +13 -3
  130. visidata/tuiwin.py +5 -1
  131. visidata/type_currency.py +1 -2
  132. visidata/type_date.py +6 -1
  133. visidata/undo.py +10 -5
  134. visidata/utils.py +9 -3
  135. visidata/vdobj.py +21 -1
  136. visidata/wrappers.py +9 -1
  137. {visidata-3.0.2.data → visidata-3.1.1.data}/data/share/applications/visidata.desktop +2 -2
  138. {visidata-3.0.2.data → visidata-3.1.1.data}/data/share/man/man1/vd.1 +72 -39
  139. {visidata-3.0.2.data → visidata-3.1.1.data}/data/share/man/man1/visidata.1 +72 -39
  140. {visidata-3.0.2.dist-info → visidata-3.1.1.dist-info}/METADATA +24 -6
  141. visidata-3.1.1.dist-info/RECORD +280 -0
  142. visidata/loaders/api_bitio.py +0 -102
  143. visidata/stored_prop.py +0 -38
  144. visidata-3.0.2.dist-info/RECORD +0 -258
  145. {visidata-3.0.2.data → visidata-3.1.1.data}/scripts/vd +0 -0
  146. {visidata-3.0.2.data → visidata-3.1.1.data}/scripts/vd2to3.vdx +0 -0
  147. {visidata-3.0.2.dist-info → visidata-3.1.1.dist-info}/LICENSE.gpl3 +0 -0
  148. {visidata-3.0.2.dist-info → visidata-3.1.1.dist-info}/WHEEL +0 -0
  149. {visidata-3.0.2.dist-info → visidata-3.1.1.dist-info}/entry_points.txt +0 -0
  150. {visidata-3.0.2.dist-info → visidata-3.1.1.dist-info}/top_level.txt +0 -0
visidata/man/vd.1 CHANGED
@@ -1,4 +1,4 @@
1
- .Dd January 15, 2024
1
+ .Dd October 13, 2024
2
2
  .Dt vd \&1 "Quick Reference Guide"
3
3
  .Os Linux/MacOS
4
4
  .
@@ -21,6 +21,10 @@
21
21
  .Op Ar options
22
22
  .Op Ar input No ...
23
23
  .
24
+ .Nm visidata
25
+ .Op Ar options
26
+ .Op Ar input No ...
27
+ .
24
28
  .Nm vd
25
29
  .Op Ar options
26
30
  .Cm --play Ar cmdlog
@@ -33,7 +37,7 @@
33
37
  .Nm vd
34
38
  .Op Ar options
35
39
  .Op Ar input No ...
36
- .Cm + Ns Ar toplevel Ns : Ns Ar subsheet Ns : Ns Ar col Ns : Ns Ar row
40
+ .Cm + Ns Ar toplevel Ns : Ns Ar subsheet Ns : Ns Ar row Ns : Ns Ar col
37
41
  .
38
42
  .Sh DESCRIPTION
39
43
  .Nm VisiData No is an easy-to-use multipurpose tool to explore, clean, edit, and restructure data.
@@ -101,7 +105,7 @@ toggle sidebar
101
105
  .No redo the most recent undo ( requires enabled Sy options.undo Ns )
102
106
  .Pp
103
107
  .It Ic "Space" Ar longname
104
- .No open command palette; Sy Enter No to execute top command by its Ar longname
108
+ .No open command palette; execute top command by its Ar longname
105
109
  .El
106
110
  .Ss " Command Palette"
107
111
  .Bl -tag -width XXXXXXXXXXXXXXX -compact -offset XXX
@@ -137,9 +141,9 @@ scroll current row to center of screen
137
141
  jump to previous sheet (swaps with current sheet)
138
142
  .Pp
139
143
  .It Ic " / ?" Ar regex
140
- .No search for Ar regex No forward/backward in current column
144
+ .No search for Ar regex No forward/backward in current column's displayed values
141
145
  .It Ic "g/ g?" Ar regex
142
- .No search for Ar regex No forward/backward over all visible columns
146
+ .No search for Ar regex No forward/backward over all visible columns' displayed values
143
147
  .It Ic "z/ z?" Ar expr
144
148
  .No search by Python Ar expr No forward/backward in current column (with column names as variables)
145
149
  .It Ic " n N"
@@ -236,6 +240,7 @@ open a frozen copy of current sheet with all visible columns evaluated
236
240
  .It Ic "z' gz'"
237
241
  add/reset cache for current/all visible column(s)
238
242
  .Pp
243
+ .It Note that regex operations apply to the displayed value in a cell.
239
244
  .It Ic " \&:" Ar regex
240
245
  .No add new columns from Ar regex No split; number of columns determined by example row at cursor
241
246
  .It Ic " \&;" Ar regex
@@ -875,8 +880,8 @@ show/hide methods and hidden properties
875
880
  .Bl -tag -width XXXXXXXXXXXXXXXXXXXXXXXXXXX -compact
876
881
  .It Cm -P Ns = Ns Ar longname
877
882
  .No preplay Ar longname No before replay or regular launch; limited to Sy Base Sheet No bound commands
878
- .It Cm + Ns Ar toplevel Ns : Ns Ar subsheet Ns : Ns Ar col Ns : Ns Ar row
879
- .No launch vd with Ar subsheet No of Ar toplevel No at top-of-stack, and cursor at Ar col No and Ar row Ns ; all arguments are optional
883
+ .It Cm + Ns Ar toplevel Ns : Ns Ar subsheet Ns : Ns Ar row Ns : Ns Ar col
884
+ .No launch vd with Ar subsheet No of Ar toplevel No at top-of-stack, and cursor at Ar row No and Ar col Ns ; all arguments are optional
880
885
  .It Cm --overwrite Ns = Ns Ar c
881
886
  .No Overwrite with confirmation
882
887
  .It Cm --guides
@@ -915,14 +920,6 @@ exit on error and display stacktrace
915
920
  enable undo/redo
916
921
  .It Sy --col-cache-size Ns = Ns Ar "int " No "0"
917
922
  max number of cache entries in each cached column
918
- .It Sy --note-pending Ns = Ns Ar "str " No "\[u231B]"
919
- note to display for pending cells
920
- .It Sy --note-format-exc Ns = Ns Ar "str " No "?"
921
- cell note for an exception during formatting
922
- .It Sy --note-getter-exc Ns = Ns Ar "str " No "!"
923
- cell note for an exception during computation
924
- .It Sy --note-type-exc Ns = Ns Ar "str " No "!"
925
- cell note for an exception during type conversion
926
923
  .It Sy --scroll-incr Ns = Ns Ar "int " No "-3"
927
924
  amount to scroll with scrollwheel
928
925
  .It Sy --force-256-colors No " False"
@@ -933,12 +930,12 @@ confirm before quitting modified sheet
933
930
  default column width
934
931
  .It Sy --default-height Ns = Ns Ar "int " No "4"
935
932
  default column height
936
- .It Sy --textwrap-cells Ns = Ns Ar "bool " No "True"
937
- wordwrap text for multiline rows
938
933
  .It Sy --name-joiner Ns = Ns Ar "str " No "_"
939
934
  string to join sheet or column names
940
935
  .It Sy --value-joiner Ns = Ns Ar "str " No " "
941
936
  string to join display values
937
+ .It Sy --max-rows Ns = Ns Ar "int " No "1000000000"
938
+ number of rows to load from source
942
939
  .It Sy --wrap No " False"
943
940
  wrap text to fit window width on TextSheet
944
941
  .It Sy --save-filetype Ns = Ns Ar "str " No "tsv"
@@ -1024,7 +1021,7 @@ source of randomized startup messages
1024
1021
  folder recursion depth on DirSheet
1025
1022
  .It Sy --dir-hidden No " False"
1026
1023
  load hidden files on DirSheet
1027
- .It Sy --config Ns = Ns Ar "Path " No "~/.visidatarc"
1024
+ .It Sy --config Ns = Ns Ar "Path " No "/home/saul/.visidatarc"
1028
1025
  config file to exec in Python
1029
1026
  .It Sy --play Ns = Ns Ar "str " No ""
1030
1027
  file.vdj to replay
@@ -1058,7 +1055,7 @@ device ID associated with matrix login
1058
1055
  client_id for reddit api
1059
1056
  .It Sy --reddit-client-secret Ns = Ns Ar "str " No ""
1060
1057
  client_secret for reddit api
1061
- .It Sy --reddit-user-agent Ns = Ns Ar "str " No "3.0.2"
1058
+ .It Sy --reddit-user-agent Ns = Ns Ar "str " No "3.1dev"
1062
1059
  user_agent for reddit api
1063
1060
  .It Sy --zulip-batch-size Ns = Ns Ar "int " No "-100"
1064
1061
  number of messages to fetch per call (<0 to fetch before anchor)
@@ -1074,8 +1071,12 @@ Email for use with Zulip API key
1074
1071
  dialect passed to csv.reader
1075
1072
  .It Sy --csv-delimiter Ns = Ns Ar "str " No ","
1076
1073
  delimiter passed to csv.reader
1074
+ .It Sy --csv-doublequote Ns = Ns Ar "bool " No "True"
1075
+ quote-doubling setting passed to csv.reader
1077
1076
  .It Sy --csv-quotechar Ns = Ns Ar "str " No """
1078
1077
  quotechar passed to csv.reader
1078
+ .It Sy --csv-quoting Ns = Ns Ar "int " No "0"
1079
+ quoting style passed to csv.reader and csv.writer
1079
1080
  .It Sy --csv-skipinitialspace Ns = Ns Ar "bool " No "True"
1080
1081
  skipinitialspace passed to csv.reader
1081
1082
  .It Sy --csv-escapechar Ns = Ns Ar "NoneType " No "None"
@@ -1097,6 +1098,8 @@ number of rows to check for fixed width columns
1097
1098
  max number of fixed-width columns to create (0 is no max)
1098
1099
  .It Sy --graphviz-edge-labels Ns = Ns Ar "bool " No "True"
1099
1100
  whether to include edge labels on graphviz diagrams
1101
+ .It Sy --grep-base-dir Ns = Ns Ar "NoneType " No "None"
1102
+ base directory for relative paths opened with sysopen-row
1100
1103
  .It Sy --html-title Ns = Ns Ar "str " No "<h2>{sheet.name}</h2>"
1101
1104
  table header when saving to html
1102
1105
  .It Sy --http-max-next Ns = Ns Ar "int " No "0"
@@ -1123,6 +1126,8 @@ show all object versions in a versioned bucket
1123
1126
  sqlite statement to execute after opening a connection
1124
1127
  .It Sy --xlsx-meta-columns No " False"
1125
1128
  include columns for cell objects, font colors, and fill colors
1129
+ .It Sy --xlsx-color-cells Ns = Ns Ar "bool " No "True"
1130
+ color cells based on xlsx source
1126
1131
  .It Sy --xml-parser-huge-tree Ns = Ns Ar "bool " No "True"
1127
1132
  allow very deep trees and very long text content
1128
1133
  .It Sy --plt-marker Ns = Ns Ar "str " No "."
@@ -1188,7 +1193,7 @@ command submenu indicator
1188
1193
  indicator if command pushes sheet onto sheet stack
1189
1194
  .It Sy "disp_menu_input " No "\[u2026]"
1190
1195
  indicator if input required for command
1191
- .It Sy "disp_menu_fmt " No "| VisiData {vd.version} | Alt+H for help menu"
1196
+ .It Sy "disp_menu_fmt " No "| VisiData {vd.version} | {vd.hintStatus}"
1192
1197
  right-side menu format string
1193
1198
  .It Sy "disp_float_fmt " No "{:.02f}"
1194
1199
  default fmtstr to format float values
@@ -1216,7 +1221,15 @@ displayed contents for computation exception
1216
1221
  width to use for unicode chars marked ambiguous
1217
1222
  .It Sy "disp_pending " No ""
1218
1223
  string to display in pending cells
1219
- .It Sy "color_note_pending " No "bold magenta"
1224
+ .It Sy "disp_note_pending " No ":"
1225
+ note to display for pending cells
1226
+ .It Sy "disp_note_fmtexc " No "?"
1227
+ cell note for an exception during formatting
1228
+ .It Sy "disp_note_getexc " No "!"
1229
+ cell note for an exception during computation
1230
+ .It Sy "disp_note_typeexc " No "!"
1231
+ cell note for an exception during type conversion
1232
+ .It Sy "color_note_pending " No "bold green"
1220
1233
  color of note in pending cells
1221
1234
  .It Sy "color_note_type " No "226 yellow"
1222
1235
  color of cell note for non-str types in anytype columns
@@ -1254,19 +1267,19 @@ characters for ascending sort
1254
1267
  characters for descending sort
1255
1268
  .It Sy "color_default " No "white on black"
1256
1269
  the default fg and bg colors
1257
- .It Sy "color_default_hdr " No "bold"
1270
+ .It Sy "color_default_hdr " No "bold white on black"
1258
1271
  color of the column headers
1259
- .It Sy "color_bottom_hdr " No "underline"
1272
+ .It Sy "color_bottom_hdr " No "underline white on black"
1260
1273
  color of the bottom header row
1261
1274
  .It Sy "color_current_row " No "reverse"
1262
1275
  color of the cursor row
1263
- .It Sy "color_current_col " No "bold"
1276
+ .It Sy "color_current_col " No "bold on 232"
1264
1277
  color of the cursor column
1265
1278
  .It Sy "color_current_cell " No ""
1266
1279
  color of current cell, if different from color_current_row+color_current_col
1267
1280
  .It Sy "color_current_hdr " No "bold reverse"
1268
1281
  color of the header for the cursor column
1269
- .It Sy "color_column_sep " No "246 blue"
1282
+ .It Sy "color_column_sep " No "white on black"
1270
1283
  color of column separators
1271
1284
  .It Sy "color_key_col " No "81 cyan"
1272
1285
  color of key columns
@@ -1274,27 +1287,41 @@ color of key columns
1274
1287
  color of hidden columns on metasheets
1275
1288
  .It Sy "color_selected_row " No "215 yellow"
1276
1289
  color of selected rows
1277
- .It Sy "color_clickable " No "underline"
1290
+ .It Sy "color_clickable " No "bold"
1278
1291
  color of internally clickable item
1279
1292
  .It Sy "color_code " No "bold white on 237"
1280
1293
  color of code sample
1281
- .It Sy "color_heading " No "bold 200"
1294
+ .It Sy "color_heading " No "bold black on yellow"
1282
1295
  color of header
1283
1296
  .It Sy "color_guide_unwritten" No "243 on black"
1284
1297
  color of unwritten guides in GuideGuide
1285
- .It Sy "disp_rstatus_fmt " No "{sheet.threadStatus} {sheet.keystrokeStatus} [:longname]{sheet.longname}[/] {sheet.nRows:9d} {sheet.rowtype} {sheet.modifiedStatus}{sheet.selectedStatus}{vd.replayStatus}"
1298
+ .It Sy "disp_wrap_max_lines" No "3"
1299
+ max lines for multiline view
1300
+ .It Sy "disp_wrap_break_long_words" No "False"
1301
+ break words longer than column width in multiline
1302
+ .It Sy "disp_wrap_replace_whitespace" No "False"
1303
+ replace whitespace with spaces in multiline
1304
+ .It Sy "disp_wrap_placeholder" No "\[u2026]"
1305
+ multiline string to indicate truncation
1306
+ .It Sy "disp_multiline_focus" No "True"
1307
+ only multiline cursor row
1308
+ .It Sy "color_aggregator " No "bold 255 white on 234 black"
1309
+ color of aggregator summary on bottom row
1310
+ .It Sy "disp_rstatus_fmt " No "{sheet.threadStatus} {sheet.keystrokeStatus} [:longname_status]{sheet.longname}[/] {sheet.nRows:9d} {sheet.rowtype} {sheet.modifiedStatus}{sheet.selectedStatus}{vd.replayStatus}{vd.sidebarStatus}"
1286
1311
  right-side status format string
1287
- .It Sy "disp_status_fmt " No "[:onclick sheets-stack]{sheet.shortcut}\[u203A] {sheet.name}[/]| "
1288
- status line prefix
1312
+ .It Sy "disp_status_fmt " No "{sheet.sheetlist}| "
1313
+ left-side status format string
1289
1314
  .It Sy "disp_lstatus_max " No "0"
1290
1315
  maximum length of left status line
1291
1316
  .It Sy "disp_status_sep " No "\[u2502]"
1292
1317
  separator between statuses
1293
1318
  .It Sy "color_keystrokes " No "bold white on 237"
1294
1319
  color of input keystrokes
1295
- .It Sy "color_longname " No "bold 52 on 114 green"
1320
+ .It Sy "color_longname_guide" No "237"
1296
1321
  color of command longnames
1297
- .It Sy "color_keys " No "bold"
1322
+ .It Sy "color_longname_status" No "white"
1323
+ color of command longnames
1324
+ .It Sy "color_keys " No "bold reverse"
1298
1325
  color of keystrokes in help
1299
1326
  .It Sy "color_status " No "bold on 238"
1300
1327
  status line color
@@ -1328,6 +1355,8 @@ default fmtstr to format for currency values
1328
1355
  color for negative values in currency displayer
1329
1356
  .It Sy "disp_replay_play " No "\[u25B6]"
1330
1357
  status indicator for active replay
1358
+ .It Sy "disp_replay_record " No "\[u23FA]"
1359
+ status indicator for macro record
1331
1360
  .It Sy "color_status_replay" No "green"
1332
1361
  color of replay status indicator
1333
1362
  .It Sy "disp_histogram " No "\[u25A0]"
@@ -1348,8 +1377,16 @@ color of selected graph points
1348
1377
  color for graph axis labels
1349
1378
  .It Sy "disp_graph_tick_x " No "\[u2575]"
1350
1379
  character for graph x-axis ticks
1351
- .It Sy "disp_help " No "2"
1352
- show help panel during input
1380
+ .It Sy "color_graph_refline" No ""
1381
+ color for graph reference value lines
1382
+ .It Sy "disp_graph_reflines_x_charset" No "\[u258F]\[u2502]\[u2502]\[u2595]"
1383
+ charset to render vertical reference lines on graph
1384
+ .It Sy "disp_graph_reflines_y_charset" No "\[u2594]\[u2500]\[u2500]\[u2581]"
1385
+ charset to render horizontal reference lines on graph
1386
+ .It Sy "disp_graph_multiple_reflines_char" No "\[u2592]"
1387
+ char to render multiple parallel reflines
1388
+ .It Sy "disp_expert " No "0"
1389
+ max level of options and columns to include
1353
1390
  .It Sy "color_add_pending " No "green"
1354
1391
  color for rows pending add
1355
1392
  .It Sy "color_change_pending" No "reverse yellow"
@@ -1358,7 +1395,7 @@ color for cells pending modification
1358
1395
  color for rows pending delete
1359
1396
  .It Sy "disp_sidebar " No "True"
1360
1397
  whether to display sidebar
1361
- .It Sy "disp_sidebar_fmt " No "{guide}"
1398
+ .It Sy "disp_sidebar_fmt " No ""
1362
1399
  format string for default sidebar
1363
1400
  .It Sy "disp_sidebar_width " No "0"
1364
1401
  max width for sidebar
@@ -1394,10 +1431,6 @@ color of active clue
1394
1431
  base color of command palette
1395
1432
  .It Sy "disp_cmdpal_max " No "10"
1396
1433
  max number of suggestions for command palette
1397
- .It Sy "color_shellcmd " No "21 on 114 green"
1398
-
1399
- .It Sy "color_colname " No "underline"
1400
-
1401
1434
  .It Sy "disp_scroll_context" No "0"
1402
1435
  minimum number of lines to keep visible above/below cursor when scrolling
1403
1436
  .It Sy "disp_sparkline " No "\[u2581]\[u2582]\[u2583]\[u2584]\[u2585]\[u2586]\[u2587]"
visidata/man/vd.txt CHANGED
@@ -5,9 +5,10 @@ NAME
5
5
 
6
6
  SYNOPSIS
7
7
  vd [options] [input ...]
8
+ visidata [options] [input ...]
8
9
  vd [options] --play cmdlog [-w waitsecs] [--batch] [-i] [-o output]
9
10
  [field=value]
10
- vd [options] [input ...] +toplevel:subsheet:col:row
11
+ vd [options] [input ...] +toplevel:subsheet:row:col
11
12
 
12
13
  DESCRIPTION
13
14
  VisiData is an easy-to-use multipurpose tool to explore, clean, edit, and
@@ -53,8 +54,8 @@ DESCRIPTION
53
54
  R redo the most recent undo (requires enabled
54
55
  options.undo)
55
56
 
56
- Space longname open command palette; Enter to execute top command by
57
- its longname
57
+ Space longname open command palette; execute top command by its
58
+ longname
58
59
 
59
60
  Command Palette
60
61
  Tab Move to command palette, and cycle through commands
@@ -73,9 +74,10 @@ DESCRIPTION
73
74
 
74
75
  ^^ (Ctrl+^) jump to previous sheet (swaps with current sheet)
75
76
 
76
- / ? regex search for regex forward/backward in current column
77
+ / ? regex search for regex forward/backward in current column's
78
+ displayed values
77
79
  g/ g? regex search for regex forward/backward over all visible
78
- columns
80
+ columns' displayed values
79
81
  z/ z? expr search by Python expr forward/backward in current column
80
82
  (with column names as variables)
81
83
  n N go to next/previous match from last regex search
@@ -143,6 +145,7 @@ DESCRIPTION
143
145
  columns evaluated
144
146
  z' gz' add/reset cache for current/all visible column(s)
145
147
 
148
+ Note that regex operations apply to the displayed value in a cell.
146
149
  : regex add new columns from regex split; number of columns
147
150
  determined by example row at cursor
148
151
  ; regex add new columns from capture groups of regex (also
@@ -563,8 +566,8 @@ COMMANDLINE OPTIONS
563
566
 
564
567
  -P=longname preplay longname before replay or regular
565
568
  launch; limited to Base Sheet bound commands
566
- +toplevel:subsheet:col:row launch vd with subsheet of toplevel at
567
- top-of-stack, and cursor at col and row; all
569
+ +toplevel:subsheet:row:col launch vd with subsheet of toplevel at
570
+ top-of-stack, and cursor at row and col; all
568
571
  arguments are optional
569
572
  --overwrite=c Overwrite with confirmation
570
573
  --guides open Guide Index
@@ -587,15 +590,6 @@ COMMANDLINE OPTIONS
587
590
  --col-cache-size=int 0 max number of cache en‐
588
591
  tries in each cached col‐
589
592
  umn
590
- --note-pending=str ⌛ note to display for pend‐
591
- ing cells
592
- --note-format-exc=str ? cell note for an excep‐
593
- tion during formatting
594
- --note-getter-exc=str ! cell note for an excep‐
595
- tion during computation
596
- --note-type-exc=str ! cell note for an excep‐
597
- tion during type conver‐
598
- sion
599
593
  --scroll-incr=int -3 amount to scroll with
600
594
  scrollwheel
601
595
  --force-256-colors False use 256 colors even if
@@ -604,12 +598,12 @@ COMMANDLINE OPTIONS
604
598
  modified sheet
605
599
  --default-width=int 20 default column width
606
600
  --default-height=int 4 default column height
607
- --textwrap-cells=bool True wordwrap text for multi‐
608
- line rows
609
601
  --name-joiner=str _ string to join sheet or
610
602
  column names
611
603
  --value-joiner=str string to join display
612
604
  values
605
+ --max-rows=int 1000000000 number of rows to load
606
+ from source
613
607
  --wrap False wrap text to fit window
614
608
  width on TextSheet
615
609
  --save-filetype=str tsv specify default file type
@@ -708,7 +702,7 @@ COMMANDLINE OPTIONS
708
702
  DirSheet
709
703
  --dir-hidden False load hidden files on
710
704
  DirSheet
711
- --config=Path ~/.visidatarc
705
+ --config=Path /home/saul/.visidatarc
712
706
  config file to exec in
713
707
  Python
714
708
  --play=str file.vdj to replay
@@ -745,7 +739,7 @@ COMMANDLINE OPTIONS
745
739
  --reddit-client-id=str client_id for reddit api
746
740
  --reddit-client-secret=str client_secret for reddit
747
741
  api
748
- --reddit-user-agent=str 3.0.2 user_agent for reddit api
742
+ --reddit-user-agent=str 3.1dev user_agent for reddit api
749
743
  --zulip-batch-size=int -100 number of messages to
750
744
  fetch per call (<0 to
751
745
  fetch before anchor)
@@ -761,8 +755,12 @@ COMMANDLINE OPTIONS
761
755
  csv.reader
762
756
  --csv-delimiter=str , delimiter passed to
763
757
  csv.reader
758
+ --csv-doublequote=bool True quote-doubling setting
759
+ passed to csv.reader
764
760
  --csv-quotechar=str " quotechar passed to
765
761
  csv.reader
762
+ --csv-quoting=int 0 quoting style passed to
763
+ csv.reader and csv.writer
766
764
  --csv-skipinitialspace=bool True skipinitialspace passed
767
765
  to csv.reader
768
766
  --csv-escapechar=NoneType None escapechar passed to
@@ -798,6 +796,9 @@ COMMANDLINE OPTIONS
798
796
  --graphviz-edge-labels=bool True whether to include edge
799
797
  labels on graphviz dia‐
800
798
  grams
799
+ --grep-base-dir=NoneType None base directory for rela‐
800
+ tive paths opened with
801
+ sysopen-row
801
802
  --html-title=str <h2>{sheet.name}</h2>
802
803
  table header when saving
803
804
  to html
@@ -832,6 +833,8 @@ COMMANDLINE OPTIONS
832
833
  --xlsx-meta-columns False include columns for cell
833
834
  objects, font colors, and
834
835
  fill colors
836
+ --xlsx-color-cells=bool True color cells based on xlsx
837
+ source
835
838
  --xml-parser-huge-tree=bool True allow very deep trees and
836
839
  very long text content
837
840
  --plt-marker=str . matplotlib.markers
@@ -894,7 +897,7 @@ COMMANDLINE OPTIONS
894
897
  onto sheet stack
895
898
  disp_menu_input … indicator if input required for
896
899
  command
897
- disp_menu_fmt | VisiData {vd.version} | Alt+H for help menu
900
+ disp_menu_fmt | VisiData {vd.version} | {vd.hintStatus}
898
901
  right-side menu format string
899
902
  disp_float_fmt {:.02f} default fmtstr to format float
900
903
  values
@@ -922,7 +925,14 @@ COMMANDLINE OPTIONS
922
925
  marked ambiguous
923
926
  disp_pending string to display in pending
924
927
  cells
925
- color_note_pending bold magenta color of note in pending cells
928
+ disp_note_pending : note to display for pending cells
929
+ disp_note_fmtexc ? cell note for an exception during
930
+ formatting
931
+ disp_note_getexc ! cell note for an exception during
932
+ computation
933
+ disp_note_typeexc ! cell note for an exception during
934
+ type conversion
935
+ color_note_pending bold green color of note in pending cells
926
936
  color_note_type 226 yellow color of cell note for non-str
927
937
  types in anytype columns
928
938
  color_note_row 220 yellow color of row note on left edge
@@ -943,41 +953,54 @@ COMMANDLINE OPTIONS
943
953
  disp_sort_asc ↑↟⇞⇡⇧⇑ characters for ascending sort
944
954
  disp_sort_desc ↓↡⇟⇣⇩⇓ characters for descending sort
945
955
  color_default white on black the default fg and bg colors
946
- color_default_hdr bold color of the column headers
947
- color_bottom_hdr underline color of the bottom header row
956
+ color_default_hdr bold white on black
957
+ color of the column headers
958
+ color_bottom_hdr underline white on black
959
+ color of the bottom header row
948
960
  color_current_row reverse color of the cursor row
949
- color_current_col bold color of the cursor column
961
+ color_current_col bold on 232 color of the cursor column
950
962
  color_current_cell color of current cell, if differ‐
951
963
  ent from color_cur‐
952
964
  rent_row+color_current_col
953
965
  color_current_hdr bold reverse color of the header for the cur‐
954
966
  sor column
955
- color_column_sep 246 blue color of column separators
967
+ color_column_sep white on black color of column separators
956
968
  color_key_col 81 cyan color of key columns
957
969
  color_hidden_col 8 color of hidden columns on
958
970
  metasheets
959
971
  color_selected_row 215 yellow color of selected rows
960
- color_clickable underline color of internally clickable
972
+ color_clickable bold color of internally clickable
961
973
  item
962
974
  color_code bold white on 237 color of code sample
963
- color_heading bold 200 color of header
975
+ color_heading bold black on yellow
976
+ color of header
964
977
  color_guide_unwritten 243 on black color of unwritten guides in
965
978
  GuideGuide
979
+ disp_wrap_max_lines 3 max lines for multiline view
980
+ disp_wrap_break_long_words False break words longer than column
981
+ width in multiline
982
+ disp_wrap_replace_whitespace False replace whitespace with spaces in
983
+ multiline
984
+ disp_wrap_placeholder … multiline string to indicate
985
+ truncation
986
+ disp_multiline_focus True only multiline cursor row
987
+ color_aggregator bold 255 white on 234 black
988
+ color of aggregator summary on
989
+ bottom row
966
990
  disp_rstatus_fmt {sheet.threadStatus} {sheet.keystrokeStatus}
967
- [:longname]{sheet.longname}[/]
991
+ [:longname_status]{sheet.longname}[/]
968
992
  {sheet.nRows:9d} {sheet.rowtype}
969
- {sheet.modifiedStatus}{sheet.selectedStatus}{vd.replayStatus}
993
+ {sheet.modifiedStatus}{sheet.selectedStatus}{vd.replayStatus}{vd.sidebarStatus}
970
994
  right-side status format string
971
- disp_status_fmt [:onclick sheets-stack]{sheet.shortcut}
972
- {sheet.name}[/]|
973
- status line prefix
995
+ disp_status_fmt {sheet.sheetlist}|
996
+ left-side status format string
974
997
  disp_lstatus_max 0 maximum length of left status
975
998
  line
976
999
  disp_status_sep │ separator between statuses
977
1000
  color_keystrokes bold white on 237 color of input keystrokes
978
- color_longname bold 52 on 114 green
979
- color of command longnames
980
- color_keys bold color of keystrokes in help
1001
+ color_longname_guide 237 color of command longnames
1002
+ color_longname_status white color of command longnames
1003
+ color_keys bold reverse color of keystrokes in help
981
1004
  color_status bold on 238 status line color
982
1005
  color_error 202 1 error message color
983
1006
  color_warning 166 15 warning message color
@@ -1002,6 +1025,7 @@ COMMANDLINE OPTIONS
1002
1025
  rency displayer
1003
1026
  disp_replay_play ▶ status indicator for active re‐
1004
1027
  play
1028
+ disp_replay_record ⏺ status indicator for macro record
1005
1029
  color_status_replay green color of replay status indicator
1006
1030
  disp_histogram ■ histogram element character
1007
1031
  disp_graph_labels True show axes and legend on graph
@@ -1018,13 +1042,22 @@ COMMANDLINE OPTIONS
1018
1042
  color_graph_selected bold color of selected graph points
1019
1043
  color_graph_axis bold color for graph axis labels
1020
1044
  disp_graph_tick_x ╵ character for graph x-axis ticks
1021
- disp_help 2 show help panel during input
1045
+ color_graph_refline color for graph reference value
1046
+ lines
1047
+ disp_graph_reflines_x_charset ▏││▕ charset to render vertical refer‐
1048
+ ence lines on graph
1049
+ disp_graph_reflines_y_charset ▔──▁ charset to render horizontal ref‐
1050
+ erence lines on graph
1051
+ disp_graph_multiple_reflines_char ▒ char to render multiple parallel
1052
+ reflines
1053
+ disp_expert 0 max level of options and columns
1054
+ to include
1022
1055
  color_add_pending green color for rows pending add
1023
1056
  color_change_pending reverse yellow color for cells pending modifica‐
1024
1057
  tion
1025
1058
  color_delete_pending red color for rows pending delete
1026
1059
  disp_sidebar True whether to display sidebar
1027
- disp_sidebar_fmt {guide} format string for default sidebar
1060
+ disp_sidebar_fmt format string for default sidebar
1028
1061
  disp_sidebar_width 0 max width for sidebar
1029
1062
  disp_sidebar_height 0 max height for sidebar
1030
1063
  color_sidebar black on 114 blue base color of sidebar
@@ -1046,8 +1079,6 @@ COMMANDLINE OPTIONS
1046
1079
  color_cmdpalette black on 72 base color of command palette
1047
1080
  disp_cmdpal_max 10 max number of suggestions for
1048
1081
  command palette
1049
- color_shellcmd 21 on 114 green
1050
- color_colname underline
1051
1082
  disp_scroll_context 0 minimum number of lines to keep
1052
1083
  visible above/below cursor when
1053
1084
  scrolling
@@ -1158,4 +1189,4 @@ SUPPORTED SOURCES
1158
1189
  AUTHOR
1159
1190
  VisiData was made by Saul Pwanson <vd@saul.pw>.
1160
1191
 
1161
- Linux/MacOS January 15, 2024 Linux/MacOS
1192
+ Linux/MacOS October 13, 2024 Linux/MacOS
visidata/memory.py CHANGED
@@ -5,9 +5,9 @@ vd.contexts += [vd.memory]
5
5
 
6
6
 
7
7
  @VisiData.api
8
- def memo(vd, name, col, row):
9
- vd.memory[name] = col.getTypedValue(row)
10
- vd.status('memo %s=%s' % (name, col.getDisplayValue(row)))
8
+ def memoValue(vd, name, value, dispvalue):
9
+ vd.memory[name] = value
10
+ vd.status(f'memo {name}={dispvalue}')
11
11
 
12
12
 
13
13
  class MemorySheet(Sheet):
@@ -31,5 +31,16 @@ def memosSheet(vd):
31
31
  return MemorySheet('memos')
32
32
 
33
33
 
34
+ @VisiData.api
35
+ def inputMemoName(vd, value):
36
+ value_params = dict(prompt="assign value: ", value=value)
37
+ name_params = dict(prompt="to memo name: ")
38
+ r = vd.inputMultiple(memo_name=name_params, memo_value=value_params)
39
+ name = r['memo_name']
40
+ if not name:
41
+ vd.fail('memo name cannot be blank')
42
+ return name
43
+
44
+
34
45
  Sheet.addCommand('Alt+Shift+M', 'open-memos', 'vd.push(vd.memosSheet)', 'open the Memory Sheet')
35
- Sheet.addCommand('Alt+m', 'memo-cell', r'vd.memory[input("assign \""+cursorCol.getDisplayValue(cursorRow)+"\" to: ")] = cursorCol.getTypedValue(cursorRow)', 'store value in current cell in Memory Sheet')
46
+ Sheet.addCommand('Alt+m', 'memo-cell', 'vd.memoValue(inputMemoName(cursorDisplay), cursorTypedValue, cursorDisplay)', 'store value in current cell to Memory Sheet')
visidata/menu.py CHANGED
@@ -1,5 +1,6 @@
1
1
  import string
2
2
  import textwrap
3
+ import time
3
4
  import curses
4
5
 
5
6
  from typing import List, Union
@@ -17,11 +18,21 @@ vd.theme_option('disp_menu_boxchars', '││──┌┐└┘├┤', 'box cha
17
18
  vd.theme_option('disp_menu_more', '»', 'command submenu indicator')
18
19
  vd.theme_option('disp_menu_push', '⎘', 'indicator if command pushes sheet onto sheet stack')
19
20
  vd.theme_option('disp_menu_input', '…', 'indicator if input required for command')
20
- vd.option('disp_menu_fmt', '| VisiData {vd.version} | Alt+H for help menu', 'right-side menu format string', max_help=0)
21
+ vd.option('disp_menu_fmt', '| VisiData {vd.version} | {vd.hintStatus}', 'right-side menu format string')
21
22
 
22
23
  BaseSheet.init('activeMenuItems', list)
23
24
  vd.menuRunning = False
24
25
 
26
+ @VisiData.property
27
+ def hintStatus(vd):
28
+ if vd.options.disp_expert <= 0:
29
+ if int(time.time()/60) % 2 == 0:
30
+ return 'Alt+H for help menu'
31
+ else:
32
+ return 'Ctrl+G to cycle help sidebar'
33
+
34
+ return vd.sheet.getHint()
35
+
25
36
  def menudraw(*args):
26
37
  return clipdraw(*args, truncator='')
27
38
 
@@ -439,7 +450,7 @@ def runMenu(vd):
439
450
  else:
440
451
  nEscapes = 0
441
452
 
442
- if k in ['^C', '^Q', 'q']:
453
+ if k in ['^C', '^Q', 'q', '^H', 'KEY_BACKSPACE']:
443
454
  return
444
455
 
445
456
  elif k in ['KEY_MOUSE']:
@@ -499,7 +510,7 @@ BaseSheet.addCommand('Alt+r', 'menu-row', 'pressMenu("Row")', '')
499
510
  BaseSheet.addCommand('Alt+d', 'menu-data', 'pressMenu("Data")', '')
500
511
  BaseSheet.addCommand('Alt+p', 'menu-plot', 'pressMenu("Plot")', '')
501
512
  BaseSheet.addCommand('Alt+s', 'menu-system', 'pressMenu("System")', '')
502
- BaseSheet.addCommand('Alt+h', 'menu-help', 'pressMenu("Help")', '')
513
+ BaseSheet.addCommand('Alt+h', 'menu-help', 'pressMenu("Help")', 'open the Help menu')
503
514
  BaseSheet.bindkey('Ctrl+H', 'menu-help')
504
515
  BaseSheet.bindkey('KEY_BACKSPACE', 'menu-help')
505
516