Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6766191
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T14:48:01+00:00 2026-05-26T14:48:01+00:00

I need an emacs built-in function or elisp function that can take me to

  • 0

I need an emacs built-in function or elisp function that can take me to the previously-selected window. I thought that (select-window (get-lru-window)) would do it, but if I run it several times, seems to just cycle between windows instead of swapping back and forth between them, which is what I expect.

Any other ideas?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T14:48:02+00:00Added an answer on May 26, 2026 at 2:48 pm

    There doesn’t seem to be a way to get the most recently selected window in emacs (as opposed to the least recently used returned by get-lru-window). Internally emacs tracks use_time on windows, and get-lru-window uses that to find the “oldest” window. But unfortunately that is not exposed in elisp.

    The window list is ordered in cyclic window ordering which doesn’t help in your case.

    The buffer-list is however ordered most-to-least recently used buffer (or not really strictly, there is a (bury-buffer) function to move a buffer last).

    This means that, if you can transform your problem into something like “how can I switch to the buffer in a different window that was most recently the selected buffer”, it should be possible.

    One way would be to do something like this:

    (defun switch-to-previous-buffer-in-a-different-window ()
      (interactive)
      (let* ((otherbuf (other-buffer (current-buffer) t))
         (otherwin (get-buffer-window otherbuf)))
    (if otherwin
        (select-window otherwin)
      (message "Last buffer (%s) is not currently visible" (buffer-name otherbuf)))))
    

    Or the shorter, and more featureful:

    (defun switch-to-previous-buffer-possibly-creating-new-window ()
      (interactive)
      (pop-to-buffer (other-buffer (current-buffer) t)))
    

    Here other-buffer is used to get the most recently used buffer (except current-buffer). This should work fine as long as you don’t switch buffers in the windows, because then other-buffer will no longer return the buffer in the other window, but the buffer you switched from in current window.

    So instead of using other-buffer lets walk the buffer-list ourself to find the best candidate:

    (defun switch-to-the-window-that-displays-the-most-recently-selected-buffer ()
      (interactive)
      (let* ((buflist (buffer-list (selected-frame)))      ; get buffer list in this frames ordered
         (buflist (delq (current-buffer) buflist))     ; if there are multiple windows showing same buffer.
         (winlist (mapcar 'get-buffer-window buflist)) ; buf->win
         (winlist (delq nil winlist))                  ; remove non displayed windows
         (winlist (delq (selected-window) winlist)))   ; remove current-window
    (if winlist
        (select-window (car winlist))
      (message "Couldn't find a suitable window to switch to"))))
    

    Hope this helps.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I need to get selection as a string in my Emacs Lisp function.
I am making the jump to EMACS, and I can't find what I need
Need a function that takes a character as a parameter and returns true if
Need a function like: function isGoogleURL(url) { ... } that returns true iff URL
How can I get Emacs style key bindings in Visual Studio? Is it available
I'm using Emacs and Mono on Windows so that I can retain the same
I'm trying to get clojure/emacs/swank/cake all working together. According to assembla I need 'cake
I need an IDE that can do the following: Run on an oldish laptop
I need to select text in Emacs with regexp. And it would be for
I need to get the full path of the file that I'm editing with

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.