Make emacs next-buffer skip *Messages* buffer

后端 未结 4 989
盖世英雄少女心
盖世英雄少女心 2021-01-02 06:36

I\'d like to make a simple change to Emacs so that the next-buffer and previous-buffer commands (which I have bound to C-x

4条回答
  •  无人及你
    2021-01-02 06:40

    This way you can avoid the infinite loop:

    (defun next-code-buffer ()
      (interactive)
      (let (( bread-crumb (buffer-name) ))
        (next-buffer)
        (while
            (and
             (string-match-p "^\*" (buffer-name))
             (not ( equal bread-crumb (buffer-name) )) )
          (next-buffer))))
    (global-set-key [remap next-buffer] 'next-code-buffer)
    

    This code loops over non-starred buffers ("^\*"). For your case (only avoid *Messages*) it would be:

    (defun next-code-buffer ()
      (interactive)
      (let (( bread-crumb (buffer-name) ))
        (next-buffer)
        (while
            (and
             (equal "*Messages*" (buffer-name))
             (not ( equal bread-crumb (buffer-name) )) )
          (next-buffer))))
    (global-set-key [remap next-buffer] 'next-code-buffer)
    

    You can write previous-code-buffer just replacing every next-buffer with previous-buffer.

提交回复
热议问题