don't let kill-buffer kill a buffer if it is current in any thread
This commit is contained in:
parent
dad8121b0e
commit
cbcba8ce7f
3 changed files with 24 additions and 0 deletions
|
@ -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))
|
||||
|
|
19
src/thread.c
19
src/thread.c
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Add table
Reference in a new issue