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

Wierd read-file behaviour in ME09 (revised)

Expand Messages
  • Gomes, Pedro (NSN - PT/Amadora)
    Hi All, I got some weird behaviour in Micro Emacs 2009 (0909). If I define the macro above and press C-f12 to reread the current buffer, it re-read the
    Message 1 of 2 , Sep 22, 2009
    • 0 Attachment
      Wierd read-file behaviour in ME09 (revised)

      Hi All,
      I got some 'weird' behaviour in Micro Emacs 2009 (0909).

      If I define the macro above and press C-f12 to reread the current buffer, it re-read the current buffer, but it removes some other buffer from the buffer list. If I have 10 buffers besides the one I want to reread and I press the C-f12 combination 10 times I will be left with only the current buffer and nothing else (and the scratch buffer of course).

      Initially I thought it was due to 'delete-buffer' which I believe its irrelevant since the read-file rewrites the current buffer. The previous statement is not correct, if I remove the 'delete-buffer' line the macro works as it should and does not remove any buffers!!

      Can you explain what might be happening ?

      Regards,
      Pedro

      P.S. - By the way, congrats on the new release, looks quite stable!! :P

      define-macro reread-file-with-prompt
          set-variable #l1 $window-aline
          set-variable #l2 $buffer-fname
         
          0x1 delete-buffer $buffer-bname  ; force destroy (prompting user doesn't work in macro)
          ml-write &spr "[Rereading %s]" #l2
          read-file #l2
         
          #l1 goto-line
      !emacro

      !force global-bind-key reread-file-with-prompt "C-f12"

    • Jon Green
      ... Hi Pedro, It did not do what you expected because you deleted the old buffer BUT read-file is not what you expected. read-file - Find and load file
      Message 2 of 2 , Sep 22, 2009
      • 0 Attachment
        Gomes, Pedro (NSN - PT/Amadora) wrote:
        >
        >
        > Hi All,
        > I got some 'weird' behaviour in Micro Emacs 2009 (0909).
        >
        > If I define the macro above and press C-f12 to reread the current
        > buffer, it re-read the current buffer, but it removes some other buffer
        > from the buffer list. If I have 10 buffers besides the one I want to
        > reread and I press the C-f12 combination 10 times I will be left with
        > only the current buffer and nothing else (and the scratch buffer of course).
        >
        > Initially I thought it was due to 'delete-buffer' which I believe its
        > irrelevant since the read-file rewrites the current buffer. The previous
        > statement is not correct, if I remove the 'delete-buffer' line the macro
        > works as it should and does not remove any buffers!!
        >
        > Can you explain what might be happening ?

        Hi Pedro,

        It did not do what you expected because you deleted the old buffer BUT
        read-file is not what you expected.

        read-file - Find and load file *replacing current buffer*

        It is that last bit of the description that has caught you out.

        So when you deleted the old buffer then you are then in another buffer
        (the next buffer), when you issued "read-file" from this "another"
        buffer then it deleted the current buffer you were in (another) and
        replaced it with the new one which has the same name as the old one.

        So that explains it I hope.

        Anyway you should not need this now, simply bind reread-file to C-F12
        and it should do what you want; it does prompt if it needs to (i.e. the
        file has been edited and you will loose some changes).

        Regards
        Jon

        P.S. This release should be more stable than 2006 as all we have done is
        mainly bug fixes.


        >
        > Regards,
        > Pedro
        >
        > P.S. - By the way, congrats on the new release, looks quite stable!! :P
        >
        > define-macro reread-file-with-prompt
        > set-variable #l1 $window-aline
        > set-variable #l2 $buffer-fname
        >
        > 0x1 delete-buffer $buffer-bname ; force destroy (prompting user
        > doesn't work in macro)
        > ml-write &spr "[Rereading %s]" #l2
        > read-file #l2
        >
        > #l1 goto-line
        > !emacro
        >
        > !force global-bind-key reread-file-with-prompt "C-f12"
        >
        >
        >
        >
      Your message has been successfully submitted and would be delivered to recipients shortly.