Window-Parking-CM

This code is part of a collection of Context-Menu tools.  For general information see: ccl/contrib/foy/context-menu/ReadMe.  You must (require :context-menu-cm) and (require :list-definitions)  to use this, but you can choose which of the other tools you want to load.

Features:
Window-Parking  is a window management utility that lets you define "parking spots" for Hemlock windows.  The idea is to eliminate the need to continually move and resize editor windows.  It works in conjunction with the file history list.  The two together provide a functionality similar to the Emacs's multiple buffers.
    Right-Click -->  produces two menu items: "Define Parking Spot" and "Delete Parking Spot".

Usage:
You begin by opening a Hemlock window.  Resize it and move it to position.  Select "Define Parking Spot" from the popup menu.  A dialog will open letting you associate that size and position with a function key.  Choose function key 1 and click Okay.  Move and resize the window and associate it with function key 2.  Do this up to 7 times.  I generally have one large position where I do most of my editing and several smaller positions which are used for reference.

When you open a new file, it will be placed in the first available parking spot.  You can move it elsewhere by pressing the appropriate function key.  If all the parking spots are taken, the oldest file will be bumped, but you can reopen it by accessing the file history list  --> Alt-Command-Right-Click.  The file history list is similar to Emacs's list of open buffers.

The parking spot information is persistent and is stored here:
~/Library/Preferences/org.clairvaux/window-parking/parking-lot

Window-Parking works with Spaces by providing the same parking spot layout on each desktop.

Setup:
cd  ccl/contrib/
svn update

That will pull in new versions of all contribs, including Context-Menu-CM, List-Definitions-CM and Window-Parking-CM.

In the Listener or in ~/ccl-init.lisp execute these forms:

;;; Use your own path here, if you are using a local copy of the HyperSpec:
(setq gui::*hyperspec-root-url* (gui::pathname-to-url "/Lisp/hyperspec-7-0/"))

(require :context-menu-cm)
(require :cl-documentation-cm)
(require :list-definitions-cm)
(require :hemlock-commands-cm)
(require :window-parking-cm)
(cmenu:set-default-tool "List-Definitions-CM")

Window-Parking-CM and the other tools are also available at:   www.clairvaux.org/downloads/
But updating the contribs directory and then requiring what you need works nicely.

Note:  Hemlock may get multiple buffers at some point.  If it does, this utility will probably be retired, or at least modified.

Shareware:
If you decide to use Window-Parking-CM on a regular basis, please make a $5 contribution to either the Save Darfur Coalition or the World Wildlife Fund.  You can do this online.