aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Makefile.am2
-rw-r--r--lib/session.tes42
2 files changed, 43 insertions, 1 deletions
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 8a2a3eb..fef26ef 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -1,5 +1,5 @@
-dist_scitecolib_DATA = color.tes lexer.tes fnkeys.tes
+dist_scitecolib_DATA = color.tes lexer.tes session.tes fnkeys.tes
dist_scitecolib_DATA += string.tes
# Install and distribute entire directories
diff --git a/lib/session.tes b/lib/session.tes
new file mode 100644
index 0000000..d038db5
--- /dev/null
+++ b/lib/session.tes
@@ -0,0 +1,42 @@
+! Macros for saving and loading buffer sessions !
+
+! Path of the session profile.
+ Change this to save/load a custom profile !
+EQ[session.path] IQ[$HOME]/.teco_session 1EB
+
+@[session.save]{
+ Q*U.[curbuf]
+ EJ<
+ %.bEB ESGETFIRSTVISIBLELINEU.[fvline] ESGETXOFFSETU.[xoff] .U.[dot]
+ EQ.[session]
+ @I{EBQ* \.[fvline]ESSETFIRSTVISIBLELINE \.[xoff]ESSETXOFFSET \.[dot]:J^M}
+ EQ* Z"= -1U.u '
+ >
+ EQ.[session]
+ Q.u"F @I{EB -EF^M} '
+ @I{\.[curbuf]EB^M}
+
+ EBQ[session.path]
+ HK G.[session] EW EF
+}
+
+@[session.load]{
+ EJ<-EF>
+ EQ.x ENQ[session.path]
+ Z"=
+ 1EB
+ |
+ :EMQ[session.path]
+ '
+}
+
+! Call this to set up the session path unique to
+ the current Git repository (if there is one) !
+@[session.git]{
+ ! if there is no Git repository, session.path is left as it is !
+ :EG[session.path]git rev-parse --show-toplevel"S
+ Q*U.#cb
+ EQ[session.path] ZJ -D I/.teco_session
+ Q.#cbEB
+ '
+}