don't let kill-buffer kill a buffer if it is current in any thread

This commit is contained in:
Tom Tromey 2013-03-18 08:48:53 -06:00
parent dad8121b0e
commit cbcba8ce7f
3 changed files with 24 additions and 0 deletions

View file

@ -1726,6 +1726,9 @@ cleaning up all windows currently displaying the buffer to be killed. */)
if (!BUFFER_LIVE_P (b))
return Qnil;
if (thread_check_current_buffer (b))
return Qnil;
/* Query if the buffer is still modified. */
if (INTERACTIVE && !NILP (BVAR (b, filename))
&& BUF_MODIFF (b) > BUF_SAVE_MODIFF (b))

View file

@ -881,6 +881,25 @@ DEFUN ("all-threads", Fall_threads, Sall_threads, 0, 0, 0,
int
thread_check_current_buffer (struct buffer *buffer)
{
struct thread_state *iter;
for (iter = all_threads; iter; iter = iter->next_thread)
{
if (iter == current_thread)
continue;
if (iter->m_current_buffer == buffer)
return 1;
}
return 0;
}
static void
init_primary_thread (void)
{

View file

@ -248,4 +248,6 @@ int thread_select (select_func *func, int max_fds, SELECT_TYPE *rfds,
SELECT_TYPE *wfds, SELECT_TYPE *efds, EMACS_TIME *timeout,
sigset_t *sigmask);
int thread_check_current_buffer (struct buffer *);
#endif /* THREAD_H */