hyperlist 1.9.2 → 1.9.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +7 -1
- data/hyperlist +42 -26
- data/hyperlist.gemspec +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 56e8ead48066f1f09b28d2e014b5c8f1bc6576dffda4b45a5975cde75721399a
|
|
4
|
+
data.tar.gz: 8fe7e8ed277872310b4d0230e45e80c7ac886cbb458244ae6016f48858c661d8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 11d7b1fce3b5179c2cdf1278deb4e2e0fafb74aa36f77ea8a7dd4ab494b53bc2af79942769390cb82a8d9a392b830947ec5bdd2b991462d27f53a148ff42809c
|
|
7
|
+
data.tar.gz: 36f631cbc904a3fb4fd28b9e3c17cbd83f55054d04e5add1a2d58ba86a092315a42976ed1eddfedd264fe90f5b54a4069f26e2e9bce3faa1959c0bf2082a28c2
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to the HyperList Ruby TUI will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.9.3] - 2025-12-02
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- **Help/documentation viewer navigation**
|
|
9
|
+
- Fixed invisible cursor on blank separator lines in help (?) and documentation (??) viewers
|
|
10
|
+
- Blank lines now contain a space so cursor highlighting is visible when navigating
|
|
11
|
+
- **Presentation mode state preservation**
|
|
12
|
+
- Help, documentation, and recent files viewers now properly save/restore presentation mode state
|
|
13
|
+
- Prevents presentation mode logic from interfering with viewer navigation
|
|
14
|
+
|
|
5
15
|
## [1.9.2] - 2025-12-02
|
|
6
16
|
|
|
7
17
|
### Fixed
|
data/README.md
CHANGED
|
@@ -29,7 +29,13 @@ For historical context and the original VIM implementation, see: [hyperlist.vim]
|
|
|
29
29
|
### Help Screen
|
|
30
30
|

|
|
31
31
|
|
|
32
|
-
## What's New in v1.9.
|
|
32
|
+
## What's New in v1.9.3
|
|
33
|
+
|
|
34
|
+
### Help Viewer Navigation Fixed
|
|
35
|
+
- Fixed invisible cursor on blank separator lines in help (?) and documentation (??) viewers
|
|
36
|
+
- Presentation mode state now properly preserved when entering/exiting viewers
|
|
37
|
+
|
|
38
|
+
## Previous Release: v1.9.2
|
|
33
39
|
|
|
34
40
|
### Presentation Mode Fixed
|
|
35
41
|
- **Dynamic folding**: Presentation mode now works like hyperlist.vim - folds/unfolds dynamically as you navigate
|
data/hyperlist
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# Check for help/version BEFORE loading any libraries
|
|
8
8
|
if ARGV[0] == '-h' || ARGV[0] == '--help'
|
|
9
9
|
puts <<~HELP
|
|
10
|
-
HyperList v1.9.
|
|
10
|
+
HyperList v1.9.3 - Terminal User Interface for HyperList files
|
|
11
11
|
|
|
12
12
|
USAGE
|
|
13
13
|
hyperlist [OPTIONS] [FILE]
|
|
@@ -52,7 +52,7 @@ if ARGV[0] == '-h' || ARGV[0] == '--help'
|
|
|
52
52
|
HELP
|
|
53
53
|
exit 0
|
|
54
54
|
elsif ARGV[0] == '-v' || ARGV[0] == '--version'
|
|
55
|
-
puts "HyperList v1.9.
|
|
55
|
+
puts "HyperList v1.9.3"
|
|
56
56
|
exit 0
|
|
57
57
|
end
|
|
58
58
|
|
|
@@ -73,7 +73,7 @@ class HyperListApp
|
|
|
73
73
|
include Rcurses::Input
|
|
74
74
|
include Rcurses::Cursor
|
|
75
75
|
|
|
76
|
-
VERSION = "1.9.
|
|
76
|
+
VERSION = "1.9.3"
|
|
77
77
|
|
|
78
78
|
def initialize(filename = nil)
|
|
79
79
|
@filename = filename ? File.expand_path(filename) : nil
|
|
@@ -596,7 +596,11 @@ class HyperListApp
|
|
|
596
596
|
saved_offset = @offset
|
|
597
597
|
saved_filename = @filename
|
|
598
598
|
saved_modified = @modified
|
|
599
|
-
|
|
599
|
+
saved_presentation_mode = @presentation_mode
|
|
600
|
+
|
|
601
|
+
# Disable presentation mode for recent files viewer
|
|
602
|
+
@presentation_mode = false
|
|
603
|
+
|
|
600
604
|
# Create items for recent files display
|
|
601
605
|
@items = []
|
|
602
606
|
@items << {"text" => "RECENT FILES (press Enter to open, q to cancel)", "level" => 0, "fold" => false, "raw" => true}
|
|
@@ -627,6 +631,7 @@ class HyperListApp
|
|
|
627
631
|
@offset = saved_offset
|
|
628
632
|
@filename = saved_filename
|
|
629
633
|
@modified = saved_modified
|
|
634
|
+
@presentation_mode = saved_presentation_mode
|
|
630
635
|
break
|
|
631
636
|
when "j", "DOWN"
|
|
632
637
|
move_down if @current < @items.length - 1
|
|
@@ -641,9 +646,11 @@ class HyperListApp
|
|
|
641
646
|
@offset = saved_offset
|
|
642
647
|
@filename = saved_filename
|
|
643
648
|
@modified = saved_modified
|
|
649
|
+
@presentation_mode = saved_presentation_mode
|
|
644
650
|
@message = "Unsaved changes! Save first before opening another file"
|
|
645
651
|
break
|
|
646
652
|
else
|
|
653
|
+
@presentation_mode = saved_presentation_mode
|
|
647
654
|
@filename = File.expand_path(selected_file)
|
|
648
655
|
load_file(@filename)
|
|
649
656
|
@current = 0
|
|
@@ -663,9 +670,11 @@ class HyperListApp
|
|
|
663
670
|
@offset = saved_offset
|
|
664
671
|
@filename = saved_filename
|
|
665
672
|
@modified = saved_modified
|
|
673
|
+
@presentation_mode = saved_presentation_mode
|
|
666
674
|
@message = "Unsaved changes! Save first before opening another file"
|
|
667
675
|
break
|
|
668
676
|
else
|
|
677
|
+
@presentation_mode = saved_presentation_mode
|
|
669
678
|
@filename = File.expand_path(selected_file)
|
|
670
679
|
load_file(@filename)
|
|
671
680
|
@current = 0
|
|
@@ -677,7 +686,7 @@ class HyperListApp
|
|
|
677
686
|
end
|
|
678
687
|
end
|
|
679
688
|
end
|
|
680
|
-
|
|
689
|
+
|
|
681
690
|
def save_file
|
|
682
691
|
return unless @filename
|
|
683
692
|
|
|
@@ -3738,9 +3747,9 @@ class HyperListApp
|
|
|
3738
3747
|
# Build help text using consistent formatting
|
|
3739
3748
|
help_lines = []
|
|
3740
3749
|
help_lines << " Press #{"?".fg("10")} for full documentation, #{"UP/DOWN".fg("10")} to scroll, or any other key to return"
|
|
3741
|
-
help_lines << ""
|
|
3750
|
+
help_lines << " "
|
|
3742
3751
|
help_lines << "#{"HYPERLIST KEY BINDINGS".b}"
|
|
3743
|
-
help_lines << ""
|
|
3752
|
+
help_lines << " "
|
|
3744
3753
|
help_lines << "#{"NAVIGATION".fg("14")}"
|
|
3745
3754
|
help_lines << help_line("#{"j/↓".fg("10")}", "Move down", "#{"k/↑".fg("10")}", "Move up")
|
|
3746
3755
|
help_lines << help_line("#{"h".fg("10")}", "Go to parent", "#{"l".fg("10")}", "Go to first child")
|
|
@@ -3749,10 +3758,10 @@ class HyperListApp
|
|
|
3749
3758
|
help_lines << help_line("#{"R".fg("10")}", "Jump to reference", "#{"F".fg("10")}", "Open file/URL")
|
|
3750
3759
|
help_lines << help_line("#{"ma".fg("10")}", "Set mark 'a'", "#{"'a".fg("10")}", "Jump to mark 'a'")
|
|
3751
3760
|
help_lines << help_line("#{"''".fg("10")}", "Jump to prev position", "#{"N".fg("10")}", "Next = template marker")
|
|
3752
|
-
help_lines << ""
|
|
3761
|
+
help_lines << " "
|
|
3753
3762
|
help_lines << "#{"SEARCH".fg("14")}"
|
|
3754
3763
|
help_lines << help_line("#{"/".fg("10")}", "Search forward", "#{"n".fg("10")}", "Next match")
|
|
3755
|
-
help_lines << ""
|
|
3764
|
+
help_lines << " "
|
|
3756
3765
|
help_lines << "#{"FOLDING".fg("14")}"
|
|
3757
3766
|
help_lines << help_line("#{"Space".fg("10")}", "Toggle fold", "#{"za".fg("10")}", "Toggle all folds")
|
|
3758
3767
|
help_lines << help_line("#{"zo".fg("10")}", "Open fold", "#{"zc".fg("10")}", "Close fold")
|
|
@@ -3760,7 +3769,7 @@ class HyperListApp
|
|
|
3760
3769
|
help_lines << help_line("#{"1-9".fg("10")}", "Expand to level", "#{"0".fg("10")}", "Multi-digit fold level")
|
|
3761
3770
|
help_lines << help_line("#{"▶".fg("245")}", "Collapsed (hidden)")
|
|
3762
3771
|
help_lines << help_line("#{"▷".fg("245")}", "Expanded (visible)")
|
|
3763
|
-
help_lines << ""
|
|
3772
|
+
help_lines << " "
|
|
3764
3773
|
help_lines << "#{"EDITING".fg("14")}"
|
|
3765
3774
|
help_lines << help_line("#{"i/Enter".fg("10")}", "Edit line", "#{"o".fg("10")}", "Insert line below")
|
|
3766
3775
|
help_lines << help_line("#{"O".fg("10")}", "Insert line above", "#{"a".fg("10")}", "Insert child")
|
|
@@ -3776,7 +3785,7 @@ class HyperListApp
|
|
|
3776
3785
|
help_lines << help_line("#{"C-UP".fg("10")}", "Move up in visible list", "#{"C-DOWN".fg("10")}", "Move down in visible list")
|
|
3777
3786
|
help_lines << help_line("#{"→".fg("10")}", "Uncollapse item", "#{"←".fg("10")}", "Collapse item")
|
|
3778
3787
|
help_lines << help_line("#{"Tab".fg("10")}", "Indent item+kids", "#{"S-Tab".fg("10")}", "Unindent item+kids")
|
|
3779
|
-
help_lines << ""
|
|
3788
|
+
help_lines << " "
|
|
3780
3789
|
help_lines << "#{"SPECIAL FEATURES".fg("14")}"
|
|
3781
3790
|
help_lines << help_line("#{"v".fg("10")}", "Toggle checkbox", "#{"V".fg("10")}", "Checkbox with date")
|
|
3782
3791
|
help_lines << help_line("#{"C-X".fg("10")}", "Remove checkbox", "", "")
|
|
@@ -3784,7 +3793,7 @@ class HyperListApp
|
|
|
3784
3793
|
help_lines << help_line("#{"C-P".fg("10")}", "Presentation mode", "#{"Tab/S-Tab".fg("10")}", "Next/prev sibling (in P)")
|
|
3785
3794
|
help_lines << help_line("#{"Ma".fg("10")}", "Record macro 'a'", "#{"@a".fg("10")}", "Play macro 'a'")
|
|
3786
3795
|
help_lines << help_line("#{"w".fg("10")}", "Switch panes (split view)")
|
|
3787
|
-
help_lines << ""
|
|
3796
|
+
help_lines << " "
|
|
3788
3797
|
help_lines << "#{"FILE OPERATIONS".fg("14")}"
|
|
3789
3798
|
help_lines << help_line("#{":w".fg("10")}", "Save", "#{":q".fg("10")}", "Quit")
|
|
3790
3799
|
help_lines << help_line("#{":wq".fg("10")}", "Save and quit", "#{":e file".fg("10")}", "Open file")
|
|
@@ -3792,27 +3801,24 @@ class HyperListApp
|
|
|
3792
3801
|
help_lines << help_line("#{":graph :g".fg("10")}", "Export to PNG graph", "#{":vsplit :vs".fg("10")}", "Split view")
|
|
3793
3802
|
help_lines << help_line("#{":as on".fg("10")}", "Enable autosave", "#{":as off".fg("10")}", "Disable autosave")
|
|
3794
3803
|
help_lines << help_line("#{":as N".fg("10")}", "Set interval (secs)", "#{":as".fg("10")}", "Show autosave status")
|
|
3795
|
-
help_lines << ""
|
|
3804
|
+
help_lines << " "
|
|
3796
3805
|
help_lines << "#{"TAGGING & BATCH OPS".fg("14")}"
|
|
3797
3806
|
help_lines << help_line("#{"t".fg("10")}", "Tag/untag item", "#{"u".fg("10")}", "Clear all tags")
|
|
3798
3807
|
help_lines << help_line("#{"C-T".fg("10")}", "Tag by regex pattern", "", "")
|
|
3799
3808
|
help_lines << help_line("#{"[T:N]".fg("245")}", "Status shows N tagged", "#{"Blue bg".fg("245")}", "Tagged items")
|
|
3800
3809
|
help_lines << help_line("#{"D/y/Tab".fg("245")}", "Ops work on tagged items")
|
|
3801
|
-
help_lines << ""
|
|
3802
|
-
|
|
3810
|
+
help_lines << " "
|
|
3803
3811
|
help_lines << "#{"TEMPLATES".fg("14")}"
|
|
3804
3812
|
help_lines << help_line("#{"T".fg("10")}", "Insert template", "#{":st".fg("10")}", "Save as template")
|
|
3805
3813
|
help_lines << help_line("#{":dt".fg("10")}", "Delete template", "#{":lt".fg("10")}", "List user templates")
|
|
3806
|
-
help_lines << ""
|
|
3807
|
-
|
|
3814
|
+
help_lines << " "
|
|
3808
3815
|
help_lines << "#{"CONFIGURATION".fg("14")}"
|
|
3809
3816
|
help_lines << help_line("#{":set".fg("10")}", "Show all settings")
|
|
3810
|
-
help_lines << help_line("#{":set o".fg("10")}", "Show option value")
|
|
3817
|
+
help_lines << help_line("#{":set o".fg("10")}", "Show option value")
|
|
3811
3818
|
help_lines << help_line("#{":set o=val".fg("10")}", "Set option value")
|
|
3812
3819
|
help_lines << help_line("#{"Options:".fg("245")}", "theme, wrap, fold_level")
|
|
3813
3820
|
help_lines << help_line("#{"".fg("245")}", "show_numbers, tab_width")
|
|
3814
|
-
help_lines << ""
|
|
3815
|
-
|
|
3821
|
+
help_lines << " "
|
|
3816
3822
|
help_lines << "#{"HELP & QUIT".fg("14")}"
|
|
3817
3823
|
help_lines << help_line("#{"?".fg("10")}", "This help", "#{"??".fg("10")}", "Full documentation")
|
|
3818
3824
|
help_lines << help_line("#{"q".fg("10")}", "Quit (asks to save)", "#{"Q".fg("10")}", "Force quit")
|
|
@@ -3832,13 +3838,17 @@ class HyperListApp
|
|
|
3832
3838
|
saved_current = @current
|
|
3833
3839
|
saved_offset = @offset
|
|
3834
3840
|
saved_modified = @modified
|
|
3835
|
-
|
|
3841
|
+
saved_presentation_mode = @presentation_mode
|
|
3842
|
+
|
|
3843
|
+
# Disable presentation mode for help viewer
|
|
3844
|
+
@presentation_mode = false
|
|
3845
|
+
|
|
3836
3846
|
# Create temporary help items for scrolling
|
|
3837
3847
|
@items = help.split("\n").map { |line| {"text" => line, "level" => 0, "fold" => false, "raw" => true} }
|
|
3838
3848
|
@current = 0
|
|
3839
3849
|
@offset = 0
|
|
3840
3850
|
@modified = false
|
|
3841
|
-
|
|
3851
|
+
|
|
3842
3852
|
# Help viewer loop
|
|
3843
3853
|
loop do
|
|
3844
3854
|
render_main
|
|
@@ -3880,8 +3890,9 @@ class HyperListApp
|
|
|
3880
3890
|
@current = saved_current
|
|
3881
3891
|
@offset = saved_offset
|
|
3882
3892
|
@modified = saved_modified
|
|
3893
|
+
@presentation_mode = saved_presentation_mode
|
|
3883
3894
|
end
|
|
3884
|
-
|
|
3895
|
+
|
|
3885
3896
|
def show_documentation
|
|
3886
3897
|
doc = <<~DOC
|
|
3887
3898
|
|
|
@@ -4360,13 +4371,17 @@ class HyperListApp
|
|
|
4360
4371
|
saved_offset = @offset
|
|
4361
4372
|
saved_filename = @filename
|
|
4362
4373
|
saved_modified = @modified
|
|
4363
|
-
|
|
4374
|
+
saved_presentation_mode = @presentation_mode
|
|
4375
|
+
|
|
4376
|
+
# Disable presentation mode for documentation viewer
|
|
4377
|
+
@presentation_mode = false
|
|
4378
|
+
|
|
4364
4379
|
# Create temporary documentation items
|
|
4365
4380
|
@items = doc.split("\n").map { |line| {"text" => line, "level" => 0, "fold" => false, "raw" => true} }
|
|
4366
4381
|
@current = 0
|
|
4367
4382
|
@offset = 0
|
|
4368
4383
|
@modified = false
|
|
4369
|
-
|
|
4384
|
+
|
|
4370
4385
|
# Documentation viewer loop
|
|
4371
4386
|
loop do
|
|
4372
4387
|
render_main
|
|
@@ -4413,8 +4428,9 @@ class HyperListApp
|
|
|
4413
4428
|
@offset = saved_offset
|
|
4414
4429
|
@filename = saved_filename
|
|
4415
4430
|
@modified = saved_modified
|
|
4431
|
+
@presentation_mode = saved_presentation_mode
|
|
4416
4432
|
end
|
|
4417
|
-
|
|
4433
|
+
|
|
4418
4434
|
def handle_command
|
|
4419
4435
|
@mode = :command
|
|
4420
4436
|
# Set command history (reversed for proper UP arrow navigation)
|
data/hyperlist.gemspec
CHANGED