2

I have a function that opens a buffer in order to extract some information from it, then switches back to the original buffer and inserts some text:

(save-excursion 
  (find-file ThisFile)
  (setq results some-function))
(insert results)

The brief flash when emacs switches to the new buffer is disconcerting. Is it possible to suppress the buffer -- I guess, keep it at the bottom of the buffer stack?

  • 4
    You probably need find-file-noselect gnu.org/software/emacs/manual/html_node/eintr/Find-a-File.html – Kaushal Modi Nov 11 '15 at 2:34
  • 3
    See also with-temp-buffer gnu.org/software/emacs/manual/html_node/elisp/… and insert-file-contents gnu.org/software/emacs/manual/html_node/elisp/… – lawlist Nov 11 '15 at 3:03
  • @kaushalmodi I tried this, but then the subsequent operations in the save-excursion block get carried out on the original buffer (from which to command is called), sort of defeating the purpose. – Matt Nov 11 '15 at 12:57
  • @lawlist that works! I'll rewrite as an answer. – Matt Nov 11 '15 at 12:59
  • Glad it worked. As to the other idea with find-file-noselect in the first comment, a common usage is in conjunction with the macro with-current-buffer -- but then the buffer either says around or needs to be killed. insert-file-contents won't automatically enable a major-mode, whereas find-file-noselect may trigger a major-mode. It just depends upon personal preference and the result desired. – lawlist Nov 11 '15 at 23:23
1

Thanks to @lawlist for this answer.

Instead of

(save-excursion
   (find-file some-file)
   ... )

the solution is to use

(with-temp-buffer
  (insert-file-contents some-file)
  ... )

This keeps the temp buffer in the background, and also eliminates the problem of stray buffers being left behind after the operation is complete. Works perfectly!

| improve this answer | |
  • 1
    You can accept your own answer. – Kaushal Modi Mar 14 '16 at 12:37
-2

I had a problem with visual-bell. Try this for gui Emacs:

(setq visible-bell nil)

or this for terminal Emacs

(setq visible-bell t)

One of these will fix it.

| improve this answer | |
  • This had no effect for me. – Matt Nov 11 '15 at 12:54
  • Sorry it didn't work for you. I got that hint from someone else here on SX and it fixed the flicker for me. – Emacs User Nov 11 '15 at 17:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.