! Macros for saving and loading buffer sessions ! ! Path of the session profile. Change this to save/load a custom profile. If empty or undefined, no session will be saved. ! EU[session.path]Q[$SCITECOCONFIG]/.teco_session ! Whether to restore the working directory with sessions. It is a TECO boolean. ! -1U[session.savedir] ! Save current session to the file specified by "session.path" ! @[session.save]{ :Q[session.path]-1"<  ' Q*U.[curbuf] ! Restore the working directory ! Q[session.savedir]"S :@EU.[session]{3:EN*Q$"S FGQ$ '^J} ' EJ< %.bEB ESGETFIRSTVISIBLELINEU.[fvline] ESGETXOFFSETU.[xoff] .U.[dot] :@EU.[session]{EBN* \.[fvline]ESSETFIRSTVISIBLELINE \.[xoff]ESSETXOFFSET \.[dot]:J^J} :Q*"= -1U.u ' > ! We always start with an unnamed file in the ring, so we may have to remove it: ! Q.u"F :@EU.[session]{EB -EF^J} ' :@EU.[session]{\.[curbuf]EB^J} E%.[session]Q[session.path] Q.[curbuf]EB } ! Load session specified by "session.path" ! @[session.load]{ EJ<-EF> ! now we have only one unnamed buffer ! [_ 1:EN*Q[session.path]"S :EMQ[session.path] ' ]_ } ! Call this to set up the session path unique to the Git repository of the current working directory (if there is one). This requires the Git command-line client in $PATH. ! @[session.git]{ ! if there is no Git repository, session.path is left as it is ! :EG[session.path]git rev-parse --show-toplevel"S [* EQ[session.path] ZJ -D I/.teco_session ]* ' } ! Call to set up the session path unique to the Mercurial repository of the current working directory. This requires the Mercurial command-line client in $PATH. ! @[session.hg]{ ! if there is no Hg repository, session.path is left as it is ! :EG[session.path]hg root"S [* EQ[session.path] ZJ -D I/.teco_session ]* ' } ! Call to set up the session path unique to the SVN working copy containing the current working directory. Requires the SVN client v1.7 or later in $PATH. ! @[session.svn]{ ! if there is no SVN working copy, session.path is left as it is ! :EG.isvn info --xml"S [*[_ EQ.i :S"S .(S