Compare commits

..

2 commits

Author SHA1 Message Date
exe.dev user e221723c1e Keep status bar pinned at bottom regardless of editor content size
All checks were successful
Build / build (push) Successful in 41s
Release Build / build (push) Successful in 1m53s
Co-authored-by: Shelley <shelley@exe.dev>
2026-05-03 22:13:37 +00:00
exe.dev user b2bed26be5 Add Lines: Sort A-Z, Sort Z-A, and Unique processors
Co-authored-by: Shelley <shelley@exe.dev>
2026-05-03 22:11:04 +00:00
2 changed files with 39 additions and 0 deletions

View file

@ -6,9 +6,12 @@
.editor-mountpoint { .editor-mountpoint {
flex-grow: 1; flex-grow: 1;
flex-shrink: 1; flex-shrink: 1;
min-height: 0;
overflow: hidden;
} }
.status-bar { .status-bar {
flex-shrink: 0;
height: 2em; height: 2em;
background-color: rgb(245, 245, 245); background-color: rgb(245, 245, 245);
border-top: solid thin rgb(200, 200, 200); border-top: solid thin rgb(200, 200, 200);

View file

@ -8,6 +8,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"regexp" "regexp"
"sort"
"strconv" "strconv"
"strings" "strings"
@ -280,6 +281,41 @@ var TextFilters = map[string]TextProcessor{
}, },
}, },
"sort-lines-asc": {
Label: "Lines: Sort A-Z",
Filter: func(ctx context.Context, input string) (resp TextFilterResponse, err error) {
lines := strings.Split(input, "\n")
sort.Strings(lines)
return TextFilterResponse{Output: strings.Join(lines, "\n")}, nil
},
},
"sort-lines-desc": {
Label: "Lines: Sort Z-A",
Filter: func(ctx context.Context, input string) (resp TextFilterResponse, err error) {
lines := strings.Split(input, "\n")
sort.Sort(sort.Reverse(sort.StringSlice(lines)))
return TextFilterResponse{Output: strings.Join(lines, "\n")}, nil
},
},
"unique-lines": {
Label: "Lines: Unique",
Filter: func(ctx context.Context, input string) (resp TextFilterResponse, err error) {
lines := strings.Split(input, "\n")
seen := make(map[string]struct{}, len(lines))
dst := make([]string, 0, len(lines))
for _, line := range lines {
if _, ok := seen[line]; ok {
continue
}
seen[line] = struct{}{}
dst = append(dst, line)
}
return TextFilterResponse{Output: strings.Join(dst, "\n")}, nil
},
},
"remove-blank-lines": { "remove-blank-lines": {
Label: "Lines: Remove Blank Lines", Label: "Lines: Remove Blank Lines",
Filter: func(ctx context.Context, input string) (resp TextFilterResponse, err error) { Filter: func(ctx context.Context, input string) (resp TextFilterResponse, err error) {