Index: main/grid/row-selectable.lisp
===================================================================
--- main/grid/row-selectable.lisp	(revision main,60)
+++ main/grid/row-selectable.lisp	(revision main,60)
@@ -0,0 +1,28 @@
+(in-package #:grid)
+
+
+
+(defclass row-selectable ()
+  ((selected-row :type (integer 0) :initform 0 :accessor selected-row)))
+
+
+
+(defmethod (setf selected-row) :around (i (d row-selectable))
+  (call-next-method (bound i 0 (rows d)) d))
+
+(defvar *recursive* nil)
+
+(defmethod uses-display-strings :around ((d row-selectable) row column)
+  (or (and (not *recursive*) (= row (selected-row d)))
+      (call-next-method d row column)))
+
+(defmethod item :around ((d row-selectable) row column)
+  (let ((plain (call-next-method d row column)))
+    (unless (= row (selected-row d))
+      (return-from item plain))
+    ;; FORMAT to ensure it's a string.
+    (setf plain (format nil "~A" plain))
+    (let ((*recursive* t))
+      (unless (uses-display-strings d row column)
+        (setf plain (enquote plain))))
+    (concatenate 'string "`R" plain "`r")))
