anchor.diff: -;;;; Copyright (C) 2018, 2019 Jan Moringen
  +;;;; Copyright (C) 2018, 2019, 2020 Jan Moringen
   ;;;;
   ;;;; This library is free software; you can redistribute it and/or
   ;;;; modify it under the terms of the GNU Library General Public
  
positive.code:       (setf (value place-1) old-value-1
              (value place-2) old-value-2))))
  
  (define-gesture-name :swap :pointer-button-press (:left :control))
  
  (define-drag-and-drop-translator drag-swap-place-values
      (place command place inspector-command-table
       :gesture :swap
       :tester ((object from-object)
                (cond ((not from-object)
                       (safe-valuep object)) ; TODO should work for unbound?
  
negative.code:         (setf (value to-place) new-value
                (state to-place) (make-object-state new-value to-place)))))
  
  (define-gesture-name :copy :pointer-button-press (:left :control))
  
  (define-drag-and-drop-translator drag-copy-place-value
      (place command place inspector-command-table
       :gesture :copy
       :tester ((object from-object)
                (cond ((not from-object)
                       (safe-valuep object)) ; TODO should work for unbound?
  