Previous: , Up: Customisation  


Q3.10.6: Why is killing so slow?

This actually is an X Windows question, although you’ll notice it with keyboard operations as well as while using the GUI. Basically, there are four ways to communicate interprogram via the X server:

Primary selection

a transient selection that gets replaced every time a new selection is made

Secondary selection

for "exchanging" with the primary selection

Cut buffers

a clipboard internal to the X server (deprecated)

Clipboard selection

a selection with a notification protocol that allows a separate app to manage the clipboard

The cut buffers are deprecated because managing them is even more inefficient than the clipboard notification protocol. The primary selection works fine for many users and applications, but is not very robust under intensive or sophisticated use.

In Motif, a clipboard has become the primary means for managing cut and paste. These means that "modern" applications tend to be oriented toward a true clipboard, rather than the primary selection. It’s not that SXEmacs doesn’t support the simple primary selection method, it’s that more and more other applications don’t.

So the slowdown occurs because SXEmacs now engages in the clipboard notification protocol on every kill. This is especially slow on Motif.

With most people running most clients and server on the same host, and many of the rest working over very fast communication, you may expect that the situation is not going to improve.

There are a number of workarounds. The most effective is to use a special command to do selection ownership only when you intend to paste to another application. Useful commands are kill-primary-selection and copy-primary-selection. These work only on text selected with the mouse (probably; experiment), and are bound by default to the Cut and Copy, respectively, buttons on the toolbar. copy-primary-selection is also bound to C-Insert. You can yank the clipboard contents with yank-primary-selection, bound to the Paste toolbar button and Sh-Insert.

If you are communicating by cut and paste with applications that use the primary selection, then you can customize interprogram-cut-function to nil, restoring the XEmacs version 20 behavior. How can you tell if a program will support this? Motifly-correct programs require the clipboard; you lose. For others, only by trying it. You also need to customize the complementary interprogram-paste-function to nil. (Otherwise SXEmacs-to-SXEmacs pastes will not work correctly.)

You may get some relief on Motif by setting x-selection-strict-motif-ownership to nil, but this means you will only intermittently be able to paste SXEmacs kills to Motif applications.

Thanks to Jeff Mincy and Glynn Clements for corrections.


Previous: , Up: Customisation