mirror of
https://github.com/tw93/Mole.git
synced 2026-02-05 03:54:44 +00:00
Uninstall list display name length optimization
This commit is contained in:
BIN
bin/analyze-go
BIN
bin/analyze-go
Binary file not shown.
@@ -323,18 +323,18 @@ func (m model) View() string {
|
||||
if m.inOverviewMode() {
|
||||
// Show ← Back if there's history (entered from a parent directory)
|
||||
if len(m.history) > 0 {
|
||||
fmt.Fprintf(&b, "%s↑↓←→ | Enter | R Refresh | O Open | F Show | ← Back | Q Quit%s\n", colorGray, colorReset)
|
||||
fmt.Fprintf(&b, "%s↑↓←→ | Enter | R Refresh | O Open | F File | ← Back | Q Quit%s\n", colorGray, colorReset)
|
||||
} else {
|
||||
fmt.Fprintf(&b, "%s↑↓→ | Enter | R Refresh | O Open | F Show | Q Quit%s\n", colorGray, colorReset)
|
||||
fmt.Fprintf(&b, "%s↑↓→ | Enter | R Refresh | O Open | F File | Q Quit%s\n", colorGray, colorReset)
|
||||
}
|
||||
} else if m.showLargeFiles {
|
||||
fmt.Fprintf(&b, "%s↑↓← | R Refresh | O Open | F Show | ⌫ Delete | ← Back | Q Quit%s\n", colorGray, colorReset)
|
||||
fmt.Fprintf(&b, "%s↑↓← | R Refresh | O Open | F File | ⌫ Del | ← Back | Q Quit%s\n", colorGray, colorReset)
|
||||
} else {
|
||||
largeFileCount := len(m.largeFiles)
|
||||
if largeFileCount > 0 {
|
||||
fmt.Fprintf(&b, "%s↑↓←→ | Enter | R Refresh | O Open | F Show | ⌫ Delete | T Top(%d) | Q Quit%s\n", colorGray, largeFileCount, colorReset)
|
||||
fmt.Fprintf(&b, "%s↑↓←→ | Enter | R Refresh | O Open | F File | ⌫ Del | T Top(%d) | Q Quit%s\n", colorGray, largeFileCount, colorReset)
|
||||
} else {
|
||||
fmt.Fprintf(&b, "%s↑↓←→ | Enter | R Refresh | O Open | F Show | ⌫ Delete | Q Quit%s\n", colorGray, colorReset)
|
||||
fmt.Fprintf(&b, "%s↑↓←→ | Enter | R Refresh | O Open | F File | ⌫ Del | Q Quit%s\n", colorGray, colorReset)
|
||||
}
|
||||
}
|
||||
if m.deleteConfirm && m.deleteTarget != nil {
|
||||
|
||||
@@ -172,3 +172,43 @@ mo_spinner_chars() {
|
||||
[[ -z "$chars" ]] && chars="|/-\\"
|
||||
printf "%s" "$chars"
|
||||
}
|
||||
|
||||
# Format last used time for display
|
||||
# Args: $1 = last used string (e.g., "3 days ago", "Today", "Never")
|
||||
# Returns: Compact version (e.g., "3d ago", "Today", "Never")
|
||||
format_last_used_summary() {
|
||||
local value="$1"
|
||||
|
||||
case "$value" in
|
||||
"" | "Unknown")
|
||||
echo "Unknown"
|
||||
return 0
|
||||
;;
|
||||
"Never" | "Recent" | "Today" | "Yesterday" | "This year" | "Old")
|
||||
echo "$value"
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ $value =~ ^([0-9]+)[[:space:]]+days?\ ago$ ]]; then
|
||||
echo "${BASH_REMATCH[1]}d ago"
|
||||
return 0
|
||||
fi
|
||||
if [[ $value =~ ^([0-9]+)[[:space:]]+weeks?\ ago$ ]]; then
|
||||
echo "${BASH_REMATCH[1]}w ago"
|
||||
return 0
|
||||
fi
|
||||
if [[ $value =~ ^([0-9]+)[[:space:]]+months?\ ago$ ]]; then
|
||||
echo "${BASH_REMATCH[1]}m ago"
|
||||
return 0
|
||||
fi
|
||||
if [[ $value =~ ^([0-9]+)[[:space:]]+month\(s\)\ ago$ ]]; then
|
||||
echo "${BASH_REMATCH[1]}m ago"
|
||||
return 0
|
||||
fi
|
||||
if [[ $value =~ ^([0-9]+)[[:space:]]+years?\ ago$ ]]; then
|
||||
echo "${BASH_REMATCH[1]}y ago"
|
||||
return 0
|
||||
fi
|
||||
echo "$value"
|
||||
}
|
||||
|
||||
@@ -7,41 +7,31 @@ set -euo pipefail
|
||||
format_app_display() {
|
||||
local display_name="$1" size="$2" last_used="$3"
|
||||
|
||||
# Compact last-used wording to keep column width tidy
|
||||
# Use common function from ui.sh to format last used time
|
||||
local compact_last_used
|
||||
case "$last_used" in
|
||||
"" | "Unknown") compact_last_used="Unknown" ;;
|
||||
"Never" | "Recent" | "Today" | "Yesterday" | "This year" | "Old") compact_last_used="$last_used" ;;
|
||||
*)
|
||||
if [[ $last_used =~ ^([0-9]+)[[:space:]]+days?\ ago$ ]]; then
|
||||
compact_last_used="${BASH_REMATCH[1]}d ago"
|
||||
elif [[ $last_used =~ ^([0-9]+)[[:space:]]+weeks?\ ago$ ]]; then
|
||||
compact_last_used="${BASH_REMATCH[1]}w ago"
|
||||
elif [[ $last_used =~ ^([0-9]+)[[:space:]]+months?\ ago$ ]]; then
|
||||
compact_last_used="${BASH_REMATCH[1]}m ago"
|
||||
elif [[ $last_used =~ ^([0-9]+)[[:space:]]+month\(s\)\ ago$ ]]; then
|
||||
compact_last_used="${BASH_REMATCH[1]}m ago"
|
||||
elif [[ $last_used =~ ^([0-9]+)[[:space:]]+years?\ ago$ ]]; then
|
||||
compact_last_used="${BASH_REMATCH[1]}y ago"
|
||||
else
|
||||
compact_last_used="$last_used"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# Truncate long names with consistent width
|
||||
local truncated_name="$display_name"
|
||||
if [[ ${#display_name} -gt 22 ]]; then
|
||||
truncated_name="${display_name:0:19}..."
|
||||
fi
|
||||
compact_last_used=$(format_last_used_summary "$last_used")
|
||||
|
||||
# Format size
|
||||
local size_str="Unknown"
|
||||
[[ "$size" != "0" && "$size" != "" && "$size" != "Unknown" ]] && size_str="$size"
|
||||
|
||||
# Use consistent column widths for perfect alignment:
|
||||
# name column (22), right-aligned size column (9), then compact last-used value.
|
||||
printf "%-22s %9s | %s" "$truncated_name" "$size_str" "$compact_last_used"
|
||||
# Calculate available width for app name based on terminal width
|
||||
local terminal_width=$(tput cols 2>/dev/null || echo 80)
|
||||
local fixed_width=28
|
||||
local available_width=$((terminal_width - fixed_width))
|
||||
|
||||
# Set reasonable bounds for name width: 24-35 chars
|
||||
[[ $available_width -lt 24 ]] && available_width=24
|
||||
[[ $available_width -gt 35 ]] && available_width=35
|
||||
|
||||
# Truncate long names if needed
|
||||
local truncated_name="$display_name"
|
||||
if [[ ${#display_name} -gt $available_width ]]; then
|
||||
truncated_name="${display_name:0:$((available_width - 3))}..."
|
||||
fi
|
||||
|
||||
# Use dynamic column width for better readability
|
||||
printf "%-*s %9s | %s" "$available_width" "$truncated_name" "$size_str" "$compact_last_used"
|
||||
}
|
||||
|
||||
# Global variable to store selection result (bash 3.2 compatible)
|
||||
|
||||
Reference in New Issue
Block a user