1. Add recognition of angle-bracket strings (eg. <avr/sleep.h>, <SdFat.h>, etc.)
- Currently double quoted (") and single quoted (') strings are recognized as LITERAL1 (editor.literal1.style)
- Additionally, unmatched quotes are recognized as invalid (editor.invalid.style)
- Fix: Add < and > as starting and ending (respectively) string delimiters for these two styles
2. Change quoted string literals style type to differentiate them from constants
- The current list of keyword definitions makes most built-in constants type LITERAL1
- Quoted strings are currently styled with the same settings (editor.literal1.style)
- Constants and literal strings should be able to be styled differently without changes to the keyword defaults
- Fix: Create a new style for these strings, eg. "editor.string.style"
- Alternate: Style strings as type LITERAL2, since it currently has no default keyword definitions
3. Add syntax coloring for numeric constants (eg. 10, -5, 59.3, 0x0F, 125000L, etc.)
- Currently numeric constants are not highlighted, whereas quoted strings are
- Fix: Recognize numeric constants of all forms and create a new style, eg. "editor.number.style"
- Alternate: Style numbers using the existing and underused LITERAL2 style type
4. Add syntax coloring for operators (eg. +, <<, !=, ~, etc.)
- Operators are currently defined in the keywords file but not associated with a style type
- The theme settings specify a style (editor.operator.style), however it has no effect (broken)
- Fix: Create a definition for operators (eg. OPERATOR) and enable highlighting of them with the existing style
5. Add syntax coloring for punctuation (eg. (), {}, [], ;, etc.)
- There is currently no way to style punctuation marks differently from other code elements
- Fix: Recognize these marks internally and make a new style for them, eg. "editor.punctuation.style"
- Bonus: Style unmatched braces/brackets using the existing invalid style (editor.invalid.style)
6. Add syntax coloring for all function calls (eg. "myFunction" in "myFunction(int argument)" code)
- Currently only keyword-defined functions are matched and highlighted, not user-defined function calls
- Fix: Recognize function calls (and definitions) internally and make a style for them, eg. "editor.function.style"
7. Add an optional gutter with line numbering
- Current cursor line number is displayed at the bottom of the window, in the status bar
- Fix: Add a gutter with line numbers, and two new styles, eg. "editor.gutter.fgcolor" and "editor.gutter.bgcolor"
8. Add a View menu to the menu bar
- This would allow for easy toggling of various view options including:
- Line numbering in gutter on/off (see above)
- Syntax highlighting on/off
- Console display on/off
- Button bar on/off (see below)
- Status bar on/off
- etc.
9. Add ability to hide/show the top row of buttons in the main window
- These buttons all currently have keyboard shortcuts or menu bar access
- Allow hiding of this top bar to save precious vertical screen real-estate, as an option
10. Add current line highlighting
- The default theme has two entries named "editor.linehighlight" and "editor.linehighlight.color"
- However, these entries seem to have no effect, and the current line is never highlighted
- Fix: Enable this feature by changing the background color of the current line (if editor.linehighlight is true)
- Note: At present, these entries can safely be removed from the theme file
11. Change scrolling method to be smoother (or at least make wheel-based scrolling 1 line at a time)
- Modern text/code editors usually scroll their contents smoothly (eg. TextMate, Sublime Text, etc.)
- The Arduino IDE only scrolls on line-by-line increments, and wheel (or trackpad) scrolling jumps multiple lines
- Fix: Change scrolling behavior to be pixel-based instead of line-based
12. Hide the editor's horizontal scrollbar when it's inactive/unneeded
- The editor (at least on Mac) displays the empty horizontal scrollbar at the bottom even if it's unnecessary
- Fix: Hide this bar if there isn't a need to scroll horizontally, saving vertical screen space
13. Change horizontal and vertical scrollbars to smaller modern style (on Mac)
- The scrollbars are currently styled using the bulky, bubbly widgets typical of older OS X apps
- Fix: Change the scrollbars to be the newer, more minimal style (and obey hidden/shown setting in System Preferences)
14. Fix button on-click states for New, Open, Save, and Serial Monitor buttons
- These buttons on the top-most button bar fail to display their "active" state on a mouse-click
- Also, these buttons register their actions upon mouse-click as opposed to typical mouse-click-release
- Fix: Change all buttons to activate on release instead of click, which is normal behavior for nearly all interfaces
- Fix: Change buttons to active (orange) highlighted state on appropriate action, eg.:
- New: While mouse button is down
- Open: While button is down and drop-down menu is active
- Save: While button is down and while saving
- Serial Monitor: While button is down and while monitor is open
- Bonus: Disable buttons when they shouldn't be pressed, eg. disable Verify during Upload, and vice-versa, etc.
- Bonus: Add fourth and fifth states to the buttons for "Running" (aka compiling/uploading) and "Unavailable" (aka grayed-out)