Using clipboards

In addition to the usual Cut, Copy and Paste, Eddie has an entire array of extra clipboard features to serve the needs of heavy Copy/Paste editing. To start with, there are four independent clipboards available. Each of the first three clipboards has a clipboard button in the button bar.

The clipboard button indicates that a clipboard is full and can be used to quickly examine the contents of the clipboard. The first clipboard is shared with the rest of the system and uses familiar keyboard shortcuts as well as few new ones:

Command-X

Cut

Command-Shift-X

Cut and append to clipboard

Command-C

Copy

Command-Shift-C

Copy and append to clipboard

Command-V

Paste

Control-V

Paste from history

Command-Control-V

Swap paste

Command-Option-V

Paste from stack

Clipboard history

Each Eddie clipboard supports a history stack. As you Copy individual bits of text, each get pushed onto the clipboard history. When you use Paste repeatedly, you will paste the same top clipboard item, as expected, just like from any other clipboard. The clipboard history stack is persistent across app launches.

Paste from history

Paste from history, Command-V, lets you use a clipboard item that you copied onto the clipboard earlier. It brings up a menu that lets you select the specific clipboard item. This offers several handy workflows. You may use it for a one-off repeated paste of an item that you copied earlier. You may also pre-load your clipboard stack by repeatedly selecting different text clippings and copying, for instance when you want to gather a bunch or snippets from one part of a file to reuse in another.

When you select/paste an item from the middle of the clipboard history stack, it also automatically pops up to the top of the stack.

Paste from stack

Paste from stack, Command-Option-V, pastes the top clipboard item and removes it from the clipboard history stack, making the next entry available. This again allows for a workflow where you copy a bunch of items onto the stack in one part of a document, then paste them elsewhere. It is typically faster than selecting the individual items to paste from the Clipboard history menu at the expense of requiring that you plan your edit operation a bit more.

Clipboard window

By clicking on the clipboard button, you can bring up the clipboard history stack as a pop-up window. Just like with the menu, you may click on individual items in the stack to paste them.

In addition you can also edit your history stack, deleting individual items, reordering them with drag&drop or adding more entries by dragging text clippings from elsewhere. You can tear off the pop-up window and place it next to your document. Once you have torn off a popover, you can magnetically dock it with the edge of your front editor window.

Appending to the clipboard

Appending to existing clipboard contents can be useful when collecting several pieces of text that are to be inserted with a single paste. You can use Cut and append (Command-Shift-X) and Copy and append (Command-Shift-C) to do just that. When you use normal Cut or Copy functions, the previous contents of the clipboard is completely replaced with the new selected text. With the appending flavors of Copy and Cut the selected text gets appended to whatever is already in the clipboard. In the following text, you can select 111,

Copy (Command-C), then select 222, Copy and append (Command-Shift-C) and the clipboard will now contain 111222.

Swap Paste

Swap paste pastes the contents of a clipboard into a selection while putting the old selection contents back onto the clipboard. Using Swap paste you can easily go from:

one two three

to:

three two one

First double click on one, Copy (Command-C), then double click on three, Swap paste (Command-Control-V) and then with three in the clipboard double click on one and Paste (Command-V).

Using multiple clipboards

Currently Eddie supports four independent clipboards. Each of the first three clipboards is represented by a clipboard button in the button bar. The first clipboard on the left is the main clipboard. The topmost element on the stack of this clipboard is the standard Mac clipboard, shared among applications.
The second third and fourth clipboard have the following keyboard shortcuts assigned:

Keypad 1

Paste from second clipboard

Keypad 2

Paste from third clipboard

Keypad 3

Paste from fourth clipboard

Command-Keypad 1

Copy to second clipboard

Command-Keypad 2

Copy to third clipboard

Command-Keypad 3

Copy to fourth clipboard

Option-Keypad 1

Pop from second clipboard stack and Paste

Option-Keypad 2

Pop from third clipboard stack and Paste

Option-Keypad 3

Pop from fourth clipboard stack and Paste

Command-Option-Keypad 1

Copy and Push onto second clipboard stack

Command-Option-Keypad 2

Copy and Push onto third clipboard stack

Command-Option-Keypad 3

Copy and Push onto fourth clipboard stack

The fourth clipboard does not have a corresponding button and you will probably use it very rarely.

You may prefer to use mouse clicks to use the clipboard:

Click

Paste

Option-Click

Pop from clipboard stack and Paste

Command-Click

Copy

Command-Option-Click

Copy and Push onto clipboard stack

Control-Click

Make clipboard empty

All of the four clipboards are persistent. The first clipboard is shared with the rest of the system, the remaining three are saved on quit and restored when Eddie is re-launched.

Using smart clipboard entries

Unlike the main clipboard, the additional clipboards support smart behavior where symbolic values contained in the respective clipping gets evaluated at the time of the paste and replaced with the representative value. These symbolic values may include the current selection, contents of the main clipboard, the target file name, the current worksheet directory, etc.

Symbolic values

$SELECTED_TEXT

Current selection

$LINE_EXPANDED_SELECTED_TEXT

Expands current selection to entire lines and returns the selected text

$WORD_EXPANDED_SELECTED_TEXT

Expands current selection to the enclosing word(s) and returns the selected text

$SELECTED_LINE

Number of the currently selected line

$CLIPBOARD

Main clipboard contents (top entry)

$CLIPBOARD2

Second clipboard top entry

$CLIPBOARD2_2

Second clipboard second entry

$CLIPBOARD2_3

Second clipboard third entry

$CLIPBOARD2_4

Second clipboard fourth entry

$CLIPBOARD2_5

Second clipboard fifth entry

$CLIPBOARD3

Third clipboard top entry

$CLIPBOARD3_2

Third clipboard second entry

...

... you get the idea

$CLIPBOARD4_5

Fourth clipboard fifth entry

$REPLACE_PATTERN

Find replace pattern

$REPLACE_PATTERN_2

Second find replace pattern

$REPLACE_PATTERN_3

Third find replace pattern

$REPLACE_PATTERN_4

Fourth find replace pattern

$DOCUMENT

Current document path

$DOCUMENT_NAME

Current document name

$DOCUMENT_DIR

Current document directory

$TARGET

Current target path

$TARGET_DIR

Current target directory

$WORKSHEET_DIR

Current Worksheet directory

$ACTIVE_SHELL_DIR

Directory of the active shell

$SHELL_FOR_DOCUMENT_DIR

Directory of shell that matches document

$WORKSHEET

Path of the Worksheet document

$EDDIE_HOME

Parent directory of the Eddie app

$EDDIE

Path of the Eddie App

Symbolic values let you construct smart clipboard entries to simplify common editing operations. For example you could pre-configure your second clipboard with a set of smart entries for the different C++ casts:

static_cast<$CLIPBOARD*>($WORD_EXPANDED_SELECTED_TEXT)
dynamic_cast<$CLIPBOARD*>($WORD_EXPANDED_SELECTED_TEXT)
reinterpret_cast<$CLIPBOARD*>($WORD_EXPANDED_SELECTED_TEXT)
const_cast<$CLIPBOARD*>($WORD_EXPANDED_SELECTED_TEXT)

To cast a value to a type, select the type, Command-C to copy, then place a cursor on the value you wish to cast and click one of the smart clipboard entries from your second clipboard. (Mapping the smart clipboard entry to a keyboard shortcut, as described below, makes this even easier).

... or a smart clipboard entry that can be used to wrap a selection into a set of pragmas (disabling deprecation warnings). Note that $LINE_EXPANDED_SELECTED_TEXT allows for the selection to be placed anywhere on the respective line(s) of code:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
$LINE_EXPANDED_SELECTED_TEXT
#pragma clang diagnostic pop

Note that unlike the main clipboard, selecting clipping entries from one of the secondary clipboards doesn't move that entry to the top of the clipboard stack, instead the entry stays in it's respective spot. This way the secondary clipboards in a more permanent, stable state, the way you configured them. You can still easily reorder the clipboard entries by dragging them around in the clipboard popover window.

Configuring secondary clipboard paste shortcuts

Each of the top six clipboard entries in the secondary clipboards can be configured with a keyboard shortcut using one of the keyboard primitives. This way you can attach numeric keypad keys, function keys or any other keyboard shortcuts.

Paste

⌘ V

Paste the main clipboard into the selection

PasteExtended1

Kp1

Paste the top of the first extended clipboard into the selection

PasteExtended1_2

Paste second item from the first extended clipboard into the selection

PasteExtended1_3

Paste third item from the first extended clipboard into the selection

PasteExtended1_4

Paste fourth item from the first extended clipboard into the selection

PasteExtended1_5

Paste fifth item from the first extended clipboard into the selection

PasteExtended1_6

Paste sixth item from the first extended clipboard into the selection

PasteExtended2

Kp2

Paste the top of the second extended clipboard into the selection

PasteExtended2_2

Paste second item from the second extended clipboard into the selection

PasteExtended2_3

Paste third item from the second extended clipboard into the selection

PasteExtended2_4

Paste fourth item from the second extended clipboard into the selection

PasteExtended2_5

Paste fifth item from the second extended clipboard into the selection

PasteExtended2_6

Paste sixth item from the second extended clipboard into the selection

PasteExtended3

Kp3

Paste the top of the third extended clipboard into the selection

PasteExtended3_2

Paste second item from the third extended clipboard into the selection

PasteExtended3_3

Paste third item from the third extended clipboard into the selection

PasteExtended3_4

Paste fourth item from the third extended clipboard into the selection

PasteExtended3_5

Paste fifth item from the third extended clipboard into the selection

PasteExtended3_6

Paste sixth item from the third extended clipboard into the selection