Visi įrašai (admin)

Sublime Text for LISP

Finding the Right Text Editor for LISP

Every beginning of the year, it is a time for me when I’m trying to optimize my workflows. LISP coding is one of my fields of interests in this case. I was using VLIDE for years, but since I started to test my code for BricsCAD, it became not so comfortable, and last year I decided to find the right text editor for my needs. After downloading of any new text editor for evaluation, I was checking three items of functionality only and those items were syntax highlighting, brackets matching and double-click selection, including brackets, for code loading. Sure, probably every text editor can handle this basic functionality and for this reason I evaluated lots of them. Finally I have made my choice on Sublime Text 3 – the text editor which fully fits into my needs and works in my manner what I like. And of course, everything said herein is in my own opinion only and may not work for others in the best way. Anyway, I would like to share with my findings to the Community.

Syntax highlighting

I started from the “lisp” syntax definition which was builtin to Sublime Text. Naturally, it was not dedicated to the LISP for CAD and required for modifications. Finally I simplified it and rewrote in YAML, format which is used in Sublime Text 3. It’s still not perfect but syntax looks like in a picture below for now.

LISP syntax in Sublime Text

vle-extension.lsp source in Sublime Text

Note, single line and inline/multiline comments are supported in the case if comment symbols will be added manually, but commenting of multiline selection using Sublime’s shortcut Ctrl+/ – group of triple semicolon will be added as a comment mark before every line. And DCL syntax is not supported yet because I do not use DCLs in my lispworks. So, there is still a big field for improvements.


Sublime Text supports plenty of Packages and Themes provided by the Community and their installation using Package Control is quite easy. You can simply browse the library and find your own collection of useful Packages, however here is one Must have Package for every LISPer – BracketHighlighter for bracket matching. Dependent on User settings, it can highlight contents in various styles, including underlining, outlining, solid and more. In my own definition it looks like in this image.


vle-extension.lsp with BracketHighlighter

Key Bindings and Commands

In Sublime Text it is possible to use lots of predefined shortcuts, redefine them or create custom shortcuts and commands for individual needs. In the beginning I have mentioned about my habit to select code with mouse including brackets. The standard shortcut provided by Sublime text Ctrl+Shift+M was not usable for me because it required double hitting on M for selection of code including brackets. Double-click using mouse also did not helped, because it selects word or word within brackets. The solution was found when I decided to create a new command for code selection including brackets, then copy it to clipboard – with the help at forum I defined it as a triple-click. So, for now the code loading or debugging is quite simple: I split my desktop into two parts – for Sublime Text and BricsCAD’s TextScreen, triple-click on the code within brackets and paste this copied content within TextScreen. I have added this command for download if someone will like use it too.


Snippets are predefined templates of code parts and may be inserted and managed by hitting TAB and Enter keys. For example, my defun function looks and works in the next way:

After typing def and pressing TAB, the template of defun function is inserted

Sublime Text snippet

Sublime Text snippet

Next, by editing selection and hitting TAB, it is possible to leave or delete c:, to type a function name and a comment at the end with the same name, to start coding and to leave or delete the last (princ). The code for this defun snippet is listed below:

*(defun ${1:c:}vg:${2:} (/)-*

 ; ${1/\*//}vg:${2/\*//}
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <!-- Optional: Set a scope to limit where the snippet will trigger -->

What’s very nice – it is not required to reload Sublime Text to accept updates. You can replace my initials within defun snippet to yours and to use it instantly after saving snippet’s definition. I have added some of my snippets for download, anyway, since I think this kind of definition depends on individual choices how code must look, it’s a good field for playing to everyone.

Build Systems

It is possible to create a buil system for any kind of files. For example, here is a definition to run DEScoder.exe to compile LSP file from Sublime Text window:

"cmd": ["C:\Program Files\Bricsys\BricsCAD V17 en_US\DESCoder.exe", "$file"]

I do not use this file for myself because I’m using VLIDE for VLX and DES compilation at the same time. By the way, this is the only reason I’m still using VLIDE…

Cross platform solution

Sublime Text is a cross platform solution and it works on Windows, Linux and Mac OS. Even more, it is possible to transfer settings, themes, snippets and etc. from one platform to another. I was very excited when simply copied my User folder from Windows to Linux and Mac and everything was working as expected, and I was able to work without any kind of redefinition. Note, user defined Key Bindings may not be compatible to all platforms due to different control keys, but it was not important in my own case.

User folder path

  • Windows: C:\Users{UserName}\AppData\Roaming\Sublime Text 3\Packages\User\
  • Linux: /home/{username}/.config/sublime-text-3/Packages/User/
  • Mac: /Users/{UserName}/Library/Application Support/Sublime Text 3/Packages/User/


One more great point I found about Sublime Text is approach for Licensing. Sublime Text is Licensed per user, not per computer. So, I can test my code on every platform, on several computers and without additional expenses. The single License costs for 70$ and in my point of view it worth.

Download Sublime files for LISP

I’ve added some files mentioned within this text into a single archive for your download and testing. It is not a Package which is downloadable using Package Control and it does not require any kind of installation. Simply unpack this archive into …/Packages/User/ folder, open LISP source file and set it’s syntax from pulldown menu: View->Syntax->User->LISP. And have a lot of fun with coding in LISP using Sublime Text – the Text Editor I have felt in love with during the last year!

Download LISP archive for Sublime Text.

Finally, I really like using of Sublime Text not only for my LISP coding, but I use it for every textwork I do and it works for me!

Lietuviškas BricsCAD V17 vertimas


Lietuviškas meniu

Lietuviškas BricsCAD V17 meniu

BricsCAD V17 vertimo ypatybės

Išleisdama BricsCAD V17, kompanija Bricsys iš esmės pakeitė vidinę vertimo failų struktūrą, todėl visas BricsCAD V17 lietuviškas vertimas buvo atidžiai peržiūrėtas ir atnaujintas iš esmės. Siekiant, kad visi naudotojai galėtų kuo patogiau naudotis BricsCAD, buvo atliktas didžiulis darbas – programos vertimo atnaujinimą sudaro apie 16000 eilučių (iš viso yra apie vertimo 32000 eilučių). Atkreipiame dėmesį, kad gali nebeveikti anksčiau komandose naudotos raktinės raidės.

Naujos galimybės komandų parinkčių rodymui

Nuo šiol BricsCAD komandų raktažodžiai gali būti rodomi įvairiais būdais – juos galima pasirinkti programos nuostatoje „PromptOptionFormat“.
Pirmiausiai, įvedę nuostatų dialogo paieškos laukelyje „raktažod“, raskite atitinkamą nuostatą ir pasirinkite norimą atvaizdavimo formatą. Žemiau pateikti polilinijos brėžimo parinkčių rodymo pavyzdžiai įvairiais atvaizdavimo režimais.

BricsCAD nuostatų dialogas

BricsCAD nuostatų dialogas

0. Rodyti tik aprašymą ir <>, kad būtų pažymėta naudosima parinktis (numatytoji parinktis)
Nustatyti kitą tašką arba [brėžti lAnkus/ATstumas/Sekti/pusė PLočio/Plotis/atšaUkti]:

1. Rodyti tik raktažodį
Nustatyti kitą tašką arba [lAnkas/ATstumas/Sekti/PLotis/Plotis/atšaUkti]:

2. Rodyti aprašymą ir raktažodį skliausteliuose
Nustatyti kitą tašką arba [brėžti lAnkus(lAnkas)/ATstumas/Sekti/pusė PLočio(PLotis)/Plotis/atšaUkti]:

3. Rodyti aprašymą ir raktines raides skliausteliuose
Nustatyti kitą tašką arba [brėžti lAnkus/užDaryti(D)/ATstumas/Sekti/pusė PLočio/Plotis/atšaUkti(U)]:

4. Rodyti vietinį raktažodį ir globalų raktažodį skliausteliuose (aktualu tik lokalizuotose programos versijose)
Nustatyti kitą tašką arba [lAnkas(Arc)/ATstumas(Distance)/Sekti(Follow)/PLotis(Halfwidth)/Plotis(Width)]:

Galimybė išjungti lietuviško vertimo raktažodžius

Nuo V17.1.11 BricsCAD programa leidžia išjungti vertimo raktažodžius ir naudoti originalius angliškus komandų trumpinius. Tam reikia deaktyvuoti parinktį „PromptOptionTranslateKeywords“. Jei naudosite šią parinktį, rekomenduojama įjungti ketvirtą parinktį nuostatoje „PromptOptionFormat“. Pakeitus „PromptOptionTranslateKeywords“ nuostatas, reikia perkrauti BricsCAD.

BricsCAD raktinių žodžių vertimo nuostatos

BricsCAD raktinių žodžių vertimo nuostatos

Lietuviško vertimo gairės

Verčiant buvo laikomasi šių taisyklių:

  • Žodžio raktinė raidė buvo parenkama taip, kad jei įmanoma, sutaptų su anglišku originalu, pvz. Scale – maStelis, Tetrahedron – keTursienis ir pan.
  • Siekiant išlaikyti aukštą suderinamumą su anglišku originalu, atitinkama raktinė raidė gali būti parinkta kitos reikšmės žodyje, pvz. Add leader – pridėti išnAšą.
  • Jei angliškoje versijoje buvo naudojamos dvi ar trys privalomos raktinės raidės, o lietuviškoje versijoje to buvo galima išvengti, tai buvo naudojama tik viena raidė, pvz. PROject – Projektas (galima vesti ir tris raides „PRO“, šiuo atveju skirtumo nėra).
  • Kai kuriais atvejais raktiniai žodžiai buvo pakeisti kardinaliai, pvz. scale XYZMastelis xyz, todėl nuostatos parinkimas sutrumpėja nuo trijų iki vienos raidės.
  • Jei buvo tokia galimybė, raktinė raidė buvo parenkama taip, kad būtų kuo arčiau QWERTY klavišų eilės klaviatūroje tam, kad ją būtų lengva surinkti kaire ranka.
  • Jei vertime panaudota lietuviško raidyno raktinė raidė, reikia spausti atitinkamą lotynišką raidę, pvz. – Šešėlis – „S“, Sešėlis.
  • Jei reikėjo naudoti dvi raktines raides, buvo stengtasi parinkti kaip galima arčiau klaviatūroje esančias raides, pvz. pASlėptas, bet ne paSLėptas, spAlvA, bet ne SPalva.

Specifiniai vertimai

  • Kai kurie anglų kalbos žodžiai verčiami į lietuvių kalbą vienodai, todėl atskirti reikiamą parinktį galima pagal atitinkamą raktinę raidę, pvz.
    objEktas – Entity
    Objektas – Object
  • Raktinės raidės E, N, W, S, kurios reiškia geografinių krypčių East, North, West, South pavadinimus, kai kuriose komandose yra rezervuotos, todėl kai kuriuose žodžiuose atsirado netipiniai trumpiniai, pvz. vietoje daugelyje vertimo vietų naudojamo išEiti, teko naudoti išeiTi, vietoje maStelis – maSTelis.

Vertimo klaidos

Natūralu, kad dėl didžiulės vertimo apimties, jame gali būti netikslumų ar nevienodai išverstų tų pačių terminų, kai kuriose vietose gali neatitikti angliško originalo raktinė raidė, nors vertimas iš esmės būtų įmanomas ir pan. Kaip ir kiti BricsCAD naudotojai, vertimo autoriai turi savų braižymo ir komandų naudojimo įpročių, todėl vertimo klaidas gali pastebėti vėlai arba jų visai nepastebėti. Kviečiame visus BricsCAD naudotojus, norinčius patogiau naudotis lietuviška BricsCAD versija, pranešti mums apie pastebėtus vertimo netikslumus ar kitą galimybę jį patobulinti.

Parsisiųskite lietuvišką BricsCAD versiją WindowsLinux ir Mac OS.