A rewrite of CodeWizard. CodeWizard2 is probably not a useful project to anybody besides myself.
However it is much faster than some IDEs, particularly on laptops (maintaining 60fps until it transitions to 'sleep' mode).
And CodeWizard maintains under 100 Mb ram while running. Usually idles around 60-70 Mb (with several files open).
- CodeWizard2 now has custom rendering without a UI framework like Qt. CodeWizard2 uses OpenGL, and GLFW.
- CodeWizard2 has a custom written remake of the TextMate highlighting engine (with several known issues) that works pretty well.
- It contains a custom LSP implementation originally written for CodeWizard.
- CodeWizard2 is not for the average person, there are a lot of undocumented features and key bindings. Which I am not changing right now.
- We use a 'panel' such that you can have whatever arrangement of elements you want.
With multiple panels open
Just to show off a little
No, there's no limit to the number or configuration of panels.
CodeWizard2 uses widgets, of which we have:
- Editor View (code, images)
- File Tree
- Settings Menu
- File Compare (compairs two files)
- AI Chat
- LSP Debug Window
- Terminal
CodeWizard2 is only available on Windows. There is a modal option (which I quite enjoy but doesn't match any other editors) available in the settings.
- Ctrl+Shift+P focus the command palette.
- Ctrl+Shift+O change project folder.
- Ctrl+O open folder.
- Ctrl+Shift+U run project search through command palette.
- Ctrl+> or Ctrl+< to jump brackets.
- F5 run programs
Out of the box, CodeWizard comes with a beautiful UI, Cascadia Code font, TextMate files for a bunch of languages, and pypls. Pypls is my LSP originally designed for python, but does pretty well in general.
- Download and run installer (in the releases section)
- To add new languages languages for CodeWizard, open the file
C:\Users\<username>\AppData\Local\CodeWizard\languages.json(an example file is below) - For every language, you will likely want a TextMate file which you can point to in the languages.json (note
%INSTALL_DIR%will be replaced withC:\Users\<username>\AppData\Local\CodeWizard) - the TextMate language files can be found here: https://github.com/microsoft/vscode/tree/main/extensions (look for .tmLanguage.json) - Project specific settings can be created via opening the settings panel and pressing 'Project Specific' which will create a json file and give you the path. This can be used to set specific LSPs and the project build command.
Example languages.json
{
"languages": [
{
"name": "c++",
"line_comment": "//",
"textmatefile": "%INSTALL_DIR%\\highlightingfiles\\cpp.tmLanguage.json",
"filetypes": ["cpp", "h", "hpp", "c"],
"lsp_command": "C:\\Users\\adamj\\Documents\\LanguageServers\\clangd_19.1.2\\bin\\clangd.exe",
"build_command": "cd /d %FILE_LOCATION% && call \"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build\\vcvarsall.bat\" x64 && cl.exe %FILE_NAME% && %FILE_NAME_NO_EXT%.exe"
},
{
"name": "python",
"line_comment": "#",
"textmatefile": "%INSTALL_DIR%\\highlightingfiles\\MagicPython.tmLanguage.json",
"filetypes": ["py", "pyw"],
"lsp_command": "jedi-language-server",
"build_command": "cd /d %FILE_LOCATION% && python %FILE_NAME%"
},
{
"name": "go",
"line_comment": "//",
"textmatefile": "%INSTALL_DIR%\\highlightingfiles\\go.tmLanguage.json",
"filetypes": ["go"],
"lsp_command": "gopls",
"build_command": "cd /d %FILE_LOCATION% && go run ."
},
{
"name": "r",
"line_comment": "#",
"textmatefile": "%INSTALL_DIR%\\highlightingfiles\\r.tmLanguage.json",
"filetypes": ["R", "R~"],
"lsp_command": "%INSTALL_DIR%\\pypls.exe",
"build_command": ""
}
]
}