luv

Workshop wiki

command-menu.lisp

luvcraft/clim/command-menu.lisp

system luvcraft · 18 definitions · on GitHub

in-package#:luvcraft.clim

Luvcraft contributes only its application vocabulary and modal-overlay lifecycle. Search, retained GPU drawing, input editing, and execution on the owning command frame belong to luv/mcclim's shared M-x instrument.

defparameter*command-menu-tables*'"The semantic input layers whose directly owned commands M-x offers."
defunluvcraft-command-menu-entries

Return Luvcraft's currently defined argument-free commands as conses.

This compatibility-shaped query is useful to callers which only inspect the vocabulary. The live menu itself retains mcluv:command-menu-entry objects.

mapcar
lambda
entry
cons
mcluv:command-menu-entry-labelentry
mcluv:command-menu-entry-command-nameentry
defunmatching-command-menu-entries
entriesquery

Search legacy cons entries through the shared M-x matcher.

defmethodluvcraft:luvcraft-overlay-stage
declare
ignoreoverlay
:hud
defmethodluvcraft:encode-luvcraft-overlay
sessionpasssurface-texture
declare
ignorepass
let*
frame
mcluv:widget-overlay-frameoverlay
canvas
luvcraft:luvcraft-session-canvassession
mcluv:prepare-direct-widget-overlayoverlaysessionsurface-texture
mcluv:command-menu-screen-stateframe
list
luv:canvas-widthcanvas
luv:canvas-heightcanvas
overlay
defmethodluvcraft:luvcraft-focus-score
declare
ignoreoverlaysession
nil
defmethodluvcraft:luvcraft-focus-camera-pose
declare
ignoresession
let
camera
luvcraft:luvcraft-session-camera
mcluv:widget-overlay-sessionoverlay
defmethodluvcraft:luvcraft-focus-entered
setf
luvcraft:luvcraft-session-pointer-capture-suspended-psession
nil
overlay
defunfind-luvcraft-command-menu
session
find-if
lambda
overlay
luvcraft:luvcraft-session-overlayssession
defunclose-luvcraft-command-menu
overlaysession

Cancel and release session's M-x menu.

when
eqoverlay
luvcraft:luvcraft-session-modal-focussession

Removing the widget invokes its ordinary release protocol, which destroys the shared McCLIM frame and all retained direct-GPU resources.

nil
defunapply-luvcraft-command-menu-action
overlaysessionactioncommand
caseaction
:dismiss
:execute
mcluv:execute-command-menu-command
mcluv:widget-overlay-frameoverlay
command:before-execute
lambda
t
defmethodluvcraft:handle-luvcraft-focus-event
declare
ignorecanvas
multiple-value-bind
actioncommand
mcluv:handle-command-menu-key-event
mcluv:widget-overlay-frameoverlay
event
defmethodluvcraft:handle-luvcraft-overlay-event
declare
ignorecanvas
alexandria:when-let
uv
mcluv:luvcraft-widget-texture-coordinateoverlay
luv:canvas-pointer-event-xevent
luv:canvas-pointer-event-yevent
destructuring-bind
multiple-value-bind
actioncommand
mcluv:handle-command-menu-pointer-press
mcluv:widget-overlay-frameoverlay
*
firstuv
width
luv:canvas-pointer-event-buttonevent
t
defunopen-luvcraft-command-menu
session&key
title"luvcraft M-x"

Create, attach, and focus session's shared direct-GPU M-x instrument.

let
overlaynil
transferred-pnil
completed-pnil
unwind-protect
progn
setfframe
mcluv:make-embedded-command-menu
luvcraft:luvcraft-session-canvassession
luvcraft:luvcraft-session-contextsession
luvcraft:luvcraft-session-devicesession
:command-tables*command-menu-tables*:titletitle
let
setfoverlay
make-instance'luvcraft-command-menu-overlay:sessionsession:frameframe:mirrormirror
mcluv:mirror-compositormirror
overlay
setftransferred-pt
setfcompleted-pt
overlay
unlesscompleted-p
cond
andoverlay
memberoverlay
luvcraft:luvcraft-session-overlayssession
:test#'eq
ignore-errors
andoverlay
nottransferred-p
define-command
com-execute-command:command-tableluvcraft-world:name"Execute Command":keystroke
#\x:meta