-
Notifications
You must be signed in to change notification settings - Fork 31
Save and load file positions
David-Apps edited this page Oct 28, 2024
·
20 revisions
You can use these functions to save and load your position in files. This can make it easier to return to where you were in a file after taking a break.
Before quitting, the sfp
function saves commands to a file to open the current files, return to the current line numbers, and set the current labels.
The lfp
function runs the commands that you saved with the sfp
function.
The rf
function refreshes the buffer, restores the labels, and returns to the line number that you were on.
# Write the line number of a label of the previous buffer on the stack.
# usage: <getlabel <label>
# Functions rf and sfp use this function.
function+getlabel {
up
'~0X
if(*) {
ebvar+
!true
ebvar-
down
r !if [ -n '_ ]; then echo ${EB_LN}k~0; fi
} else {
down
}
}
# Write the line number of a label of the next session.
# usage: <getlabeln <label>
# Function sfp uses this function.
function+getlabeln {
e+
'~0X
if(*) {
ebvar+
!true
ebvar-
eret
r !if [ -n '_ ]; then echo ${EB_LN}k~0; fi
} else {
eret
}
}
# Save commands to restore the file positions.
# usage: <sfp [<partial file name>]
function+sfp {
db0
while(*) {
e-
}
while(*) {
enew
^
e+
}
while(*) {
e-
}
H-
ebvar+
!true
ebvar-
etmp
![ -n '_ ]
if(*) {
r !if [ '_ = "$EB_BASE" ]; then echo e '_; else echo b "$EB_BASE"; fi; echo ${EB_LN}X
<getlabel a
<getlabel b
<getlabel c
<getlabel d
<getlabel e
<getlabel f
<getlabel g
<getlabel h
<getlabel i
<getlabel j
<getlabel k
<getlabel l
<getlabel m
<getlabel n
<getlabel o
<getlabel p
<getlabel q
<getlabel r
<getlabel s
<getlabel t
<getlabel u
<getlabel v
<getlabel w
<getlabel x
<getlabel y
<getlabel z
s/$/\nM0/f
}
e+
while(*) {
ebvar+
!true
ebvar-
eret
![ -n '_ ]
if(*) {
r !if [ '_ = "$EB_BASE" ]; then echo e '_; else echo b "$EB_BASE"; fi; echo ${EB_LN}X
<getlabeln a
<getlabeln b
<getlabeln c
<getlabeln d
<getlabeln e
<getlabeln f
<getlabeln g
<getlabeln h
<getlabeln i
<getlabeln j
<getlabeln k
<getlabeln l
<getlabeln m
<getlabeln n
<getlabeln o
<getlabeln p
<getlabeln q
<getlabeln r
<getlabeln s
<getlabeln t
<getlabeln u
<getlabeln v
<getlabeln w
<getlabeln x
<getlabeln y
<getlabeln z
s/$/\nM0/f
}
eret
q
while(*) {
e-
}
e+
}
w ~/file_positions_~0.txt
q
}
# Load file positions.
# usage: <lfp [<partial file name>]
function+lfp {
db0
e ~/file_positions_~0.txt
etmp
<+1
^^
.X
if(?) {
up
if(*) {
down
} else {
q
}
}
}
# Refresh the file and return to the current line number.
# usage: <rf
function+rf {
db0
H-
sg+
ebvar+
!true
ebvar-
enew
r !echo ${EB_LN}X
<getlabel a
<getlabel b
<getlabel c
<getlabel d
<getlabel e
<getlabel f
<getlabel g
<getlabel h
<getlabel i
<getlabel j
<getlabel k
<getlabel l
<getlabel m
<getlabel n
<getlabel o
<getlabel p
<getlabel q
<getlabel r
<getlabel s
<getlabel t
<getlabel u
<getlabel v
<getlabel w
<getlabel x
<getlabel y
<getlabel z
bw
up
rf
<*-1
down
^
}