base features to implement: - [x] Create new temp tab (tab with no file) - [x] Open an existing file in editor - [x] 'open with...' option - Text manipulation - Formatting - [x] XML - [ ] JavaScript - [ ] Java - [ ] Yaml - [x] JSON - [ ] Markdown - [x] HTML - [ ] CSS - [x] base64 encode/decode - [x] Preview the current content as HTML - Language support - [x] language switching (open as text, then set its language) - [x] determine the language based on file extension - [x] customizable syntax highlighting (customizable in .css files in `appRoot/themes` folder) - [x] save app state on close and read it for initialization on startup to continue from where it left off - [x] show warnings when closing the application while user has unsaved work - [x] show a mark on the tabs that has unsaved changes - [x] theme switching - Extension support - [x] bundled plugins - [ ] support for user plugins - Settings page - [ ] Customize keyboard shortcuts - [ ] Theme related options (new theme, customize existing themes etc..) - [ ] Appearance settings (font size, font family etc..) - [ ] Editor related options (line wrap, use tab character or space character for indentation etc..) - [ ] UI related options (toggle scrollable tab list, start as maximized, or even vertical tabs ) - Draggable tabs