Loading ...
Sorry, an error occurred while loading the content.

Re: Way to persist custom window-specific info with :mksession?

Expand Messages
  • dagfinn
    ... I know I can save global variables. It seems I can achieve the same thing by having sessionoptions contain globals . I can see that I m having a hard time
    Message 1 of 11 , Apr 2 1:08 PM
    • 0 Attachment
      On Apr 2, 2:56 am, Charles Campbell <drc...@...> wrote:
      > Dagfinn Reiersøl wrote:
      > > Charles E Campbell Jr wrote:
      >
      > >> Look into viminfo's "!" option -- with it, variables that start with an
      > >> upper case character and don't contain a lower case character are
      > >> retained (:help 'viminfo'). You could save quite a bit that way, I'd
      > >> assume. For example, DAG_RUBY_GONEIT could be used... :)
      >
      > > Thanks, that could be helpful for doing part of what I need to do, but
      > > as I read the documentation, it doesn't solve the essence of my issue.
      > > Global variables are not specific to a window; I would need to save
      > > window-local variables to do what I'm trying to do in a reasonably clean
      > > way.
      >
      > Make a List; each element of the List holds a List of window-based
      > variables. Save the whole thing into a DAG_RUBY (global) variable.
      > The viminfo '!' option will then save it into .viminfo for you.
      > Restoration to window variables seems straightforward to me (windo).

      I know I can save global variables. It seems I can achieve the same
      thing by having sessionoptions contain 'globals'.

      I can see that I'm having a hard time explaining what I'm really
      after. The problem is re-connecting the information I've saved to the
      right windows. The function posted by A.Politz uses winnr() to achieve
      this (if I've understood it correctly). I've found that approach
      insufficiently reliable. I would like each window to be marked with an
      ID that will stay constant even when windows are opened and closed.
      And I would like that to be saved when :mksession is run. As I
      mentioned, it can be done with an option, but not without interfering
      with something else in Vim.
      --~--~---------~--~----~------------~-------~--~----~
      You received this message from the "vim_use" maillist.
      For more information, visit http://www.vim.org/maillist.php
      -~----------~----~----~----~------~----~------~--~---
    • dagfinn
      ... My problem is remembering state related to a specific window. --~--~---------~--~----~------------~-------~--~----~ You received this message from the
      Message 2 of 11 , Apr 2 1:12 PM
      • 0 Attachment
        > 7 Persistent variables: "p:var"; stored in viminfo file and sessions files.
        >
        > This feature will help the plugins to remember state across Vim sessions.

        My problem is remembering state related to a specific window.
        --~--~---------~--~----~------------~-------~--~----~
        You received this message from the "vim_use" maillist.
        For more information, visit http://www.vim.org/maillist.php
        -~----------~----~----~----~------~----~------~--~---
      • A.Politz
        ... Windows have no identity, unless they are visible. If you close the window, it s gone, all local variables are deleted. You can open a new window, with the
        Message 3 of 11 , Apr 2 2:31 PM
        • 0 Attachment
          dagfinn wrote:

          >I can see that I'm having a hard time explaining what I'm really
          >after. The problem is re-connecting the information I've saved to the
          >right windows. The function posted by A.Politz uses winnr() to achieve
          >this (if I've understood it correctly). I've found that approach
          >insufficiently reliable. I would like each window to be marked with an
          >ID that will stay constant even when windows are opened and closed.
          >And I would like that to be saved when :mksession is run. As I
          >mentioned, it can be done with an option, but not without interfering
          >with something else in Vim.
          >
          >
          >

          Windows have no identity, unless they are visible.

          If you close the window, it's gone, all local variables are deleted.
          You can open a new window, with the same dimensions, position and
          buffer, but it's not the same window. Anything else would be news to
          me.
          What you experience with window-local options, are the effects of how
          vim handles this situations. If you spit a window, it inherits the
          setting of the other window.

          Are you talking about buffers instead ?

          -ap


          --
          :wq


          --~--~---------~--~----~------------~-------~--~----~
          You received this message from the "vim_use" maillist.
          For more information, visit http://www.vim.org/maillist.php
          -~----------~----~----~----~------~----~------~--~---
        • dagfinn
          ... I know. That s not the problem. The problem is that the identification of the remaining windows change . winnr(), that is. ... When you close a window, the
          Message 4 of 11 , Apr 2 2:39 PM
          • 0 Attachment
            On Apr 2, 11:31 pm, "A.Politz" <poli...@...> wrote:
            > dagfinn wrote:
            > >I can see that I'm having a hard time explaining what I'm really
            > >after. The problem is re-connecting the information I've saved to the
            > >right windows. The function posted by A.Politz uses winnr() to achieve
            > >this (if I've understood it correctly). I've found that approach
            > >insufficiently reliable. I would like each window to be marked with an
            > >ID that will stay constant even when windows are opened and closed.
            > >And I would like that to be saved when :mksession is run. As I
            > >mentioned, it can be done with an option, but not without interfering
            > >with something else in Vim.
            >
            > Windows have no identity, unless they are visible.
            >
            > If you close the window, it's gone, all local variables are deleted.

            I know. That's not the problem. The problem is that the identification
            of the remaining windows change . winnr(), that is.

            > You can open a new window, with the same dimensions, position and
            > buffer, but it's not the same window. Anything else would be news to
            > me.

            When you close a window, the only available ID of another window
            changes. So windows are not stably identifiable even when they're not
            explicitly changed. Somehow the window concept in Vim seems
            incomplete. But when re-loading a session, Vim re-creates windows that
            appear to the user as the same set of windows. And I'm trying to work
            with that. That may be the root cause of the problem.

            > What you experience with window-local options, are the effects of how
            > vim handles this situations. If you spit a window, it inherits the
            > setting of the other window.

            That's a weakness of my idea that I hadn't considered. It's still a
            more reliable way of identifying windows, though.

            >
            > Are you talking about buffers instead ?

            No.
            --~--~---------~--~----~------------~-------~--~----~
            You received this message from the "vim_use" maillist.
            For more information, visit http://www.vim.org/maillist.php
            -~----------~----~----~----~------~----~------~--~---
          Your message has been successfully submitted and would be delivered to recipients shortly.