11# -*- coding: utf-8 -*-
22# Copyright (c) 2025 Hormet Yiltiz
33
4+ """
5+ Evaluates an S-Expression using an available Lisp language. Choose from the detected interpreters.
6+ """
7+
48from builtins import pow
59from pathlib import Path
610import subprocess
@@ -69,14 +73,23 @@ def __init__(self):
6973 result = proc .stdout .strip ()
7074 if result :
7175 detected_langs .append (lang )
72- break # TODO : unless we provide alternatives in drop-down menu, do not bother detecting the rest
76+ pass # break DONE : unless we provide alternatives in drop-down menu, do not bother detecting the rest
7377 except FileNotFoundError as ex :
7478 warning (str (ex ))
7579 continue
7680
7781 PluginInstance .__init__ (self )
7882 self .detected_langs = detected_langs
79- self .call_external = lang_opts [detected_langs [0 ]]
83+
84+ self ._detected_langs = self .readConfig ('detected_langs' , list [str ])
85+ if self ._detected_langs is None :
86+ self ._detected_langs = detected_langs
87+
88+ self ._lang = self .readConfig ('lang' , str )
89+ if self ._lang is None :
90+ self ._lang = detected_langs [0 ]
91+
92+ self .call_external = self .lang_opts [self ._lang ]
8093 self .iconUrls = [f"file:{ Path (__file__ ).parent } /{ self .call_external ['url' ]} " ]
8194 TriggerQueryHandler .__init__ (
8295 self ,
@@ -87,6 +100,43 @@ def __init__(self):
87100 defaultTrigger = "() " ,
88101 )
89102
103+
104+ @property
105+ def detected_langs (self ):
106+ return self ._detected_langs
107+
108+ @detected_langs .setter
109+ def detected_langs (self , value ):
110+ self ._detected_langs = value
111+ self .writeConfig ('detected_langs' , value )
112+
113+ @property
114+ def lang (self ):
115+ return self ._lang
116+
117+ @lang .setter
118+ def lang (self , value ):
119+ self ._lang = value
120+ print ('Setting lang to' , self .lang )
121+ print ('Setting _lang to' , self ._lang )
122+ self .writeConfig ('lang' , value )
123+ self .call_external = self .lang_opts [self ._lang ]
124+ self .iconUrls = [f"file:{ Path (__file__ ).parent } /{ self .call_external ['url' ]} " ]
125+
126+ def configWidget (self ):
127+ return [
128+ {
129+ 'type' : 'label' ,
130+ 'text' : __doc__ .strip (),
131+ },
132+ {
133+ 'type' : 'combobox' ,
134+ 'property' : 'lang' ,
135+ 'label' : 'Lisp Interpreter' ,
136+ 'items' : self ._detected_langs ,
137+ },
138+ ]
139+
90140 def runSubprocess (self , query_script ):
91141 try :
92142 script = self .call_external ["args" ][- 1 ].format (query_script )
0 commit comments