Last active
July 16, 2017 20:30
-
-
Save ricardojlrufino/19f89884162be39d851a to your computer and use it in GitHub Desktop.
Arduino Work Log
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
========================================================================================================================== | |
Big IDE enchavements : AutoComplete(including user libs), Doc Tooltips, New SyntaxColoring, etc... | |
========================================================================================================================== | |
Progress: | |
======================= | |
- Autocomplete (95%) | |
- Realtime Parser and Error Marker(95%) | |
- Documentation in the Editor (in progress - 20%) | |
Tested On: | |
======================= | |
- Ubuntu 64bits ( Java 8/64bits and Java 7/32bits) | |
New Shortcuts | |
=========================== | |
- HOME: toggles between first character on line and first non-whitespace character on line. | |
- INSERT: toggles between insert and overwrite modes. | |
- Ctrl+D: Delete current line | |
- Ctrl+DELETE: deletes all text between the caret and the end of the current line. | |
- Ctrl+Shift+Up and Ctrl+Shift+Down: move the current line up and down, respectively. | |
- Ctrl+J: joins lines. | |
- Ctrl+Z: is undo and Ctrl+Y is redo. | |
- Ctrl+Up and Ctrl+Down: shift the visible area of the text area up and down one line, respectively. | |
- F2 and Shift+F2: moves to the next and previous bookmarks,respectively. | |
- Ctrl+F2: toggles whether a bookmark is on the current line. | |
- Ctrl+arrow keys: Better keyboard navigation | |
- CTRL + / tootle comments | |
Autocomplete | |
=================== | |
[X] Integration with the IDE (using: RSyntaxTextArea) | |
## Indexing of Libraries Classes | |
[*] Arduino Core (AVR) | |
NOTE: I believe you need to make manual adjustments, remove some useless things and add other (eg contants HIGH, LOW) | |
I'm not reading the #DEFINE for 'variables', because it will turn a mess. | |
[x] Multi Editor (many instances) support. | |
[x] User Lib's(3rd-party libs) | |
[x] Arduino Default Lib's | |
[x] Inheritance Support (Ex: Serial -> Stream -> Print) | |
[ ] Index only the important files of libs (for now is taking all .h) | |
## Autocomplete methods Classes | |
- [X] Instances | |
- [X] Static Classes | |
- [X] Pointer | |
- [X] Get the parameters of methods | |
- [X] Auto-Complete using partial name method (contains!) | |
- [X] Order by type | |
- [x] Handle Struct | |
[x] Handle static definition (Ex: EEPROM) | |
- [*] Handle extern (Ex: extern SPIClass SPI || extern EthernetClass Ethernet). | |
[] Multiple alias Ex: Serial1, Serial2, etc... | |
- [*] '#define' statements | |
I'm not reading the #DEFINE for 'variables', because it will turn a mess. | |
NOTE: not parsing blocks like: "#if defined(UBRR1H) extern HardwareSerial Serial1;" in HardwareSerial.h | |
[*] Disable on External MODE. | |
## Sketck - Autocomplete code being edited | |
[x] Show only included Classes. | |
[x] Show the variables of the current scope (use offset techniques) | |
[x] Detect current function (based at the cursor location) | |
[x] Update the position (offset) of the functions when the document is modified (new lines), without making the parser. | |
|- NOTES: | |
|- In Autocomplete they must appear first (deone). | |
|- Not perfect, variables declared in blocks (if / while) are considered as function scope, to improve the performace | |
[] Renaming / save as you must update the name in the Autocomplete Cache | |
- have to remove the libraries that BEEN REMOVED (imports removed ..) ... | |
[x] Parse source in-memory (do not need to save) | |
[x] No show 'functions' outsite functions, only show classes | |
[x] Detect custom variable names (EthernetClient client) | |
[x] When you open the existing Sketch loads the autocomplete for the added LIBs | |
[*] Parser in real time: | |
[x] Make the parser of changed line (ending with ';') and extract variables (and possibly errors). | |
[x] Perform parse if you are changing a line with errors (syntax) | |
[x] Perform parse if you are changing a line with errors (after compile) | |
[x] Perform parse if you are changing a line with variable declararion. | |
[] Enhancement: Parser current line using REXEX (for performance) | |
- IMPL NOTE: For while it is being made a parser all code, is fast but could be better | |
The whole parser was necessary because i had to update the position (offset) of the methods in the document, | |
but now this is already being done, I think a REGEX can be better | |
- NOTE: Only a parser(for same file) can run at the same time | |
[x] Async(Multi-tread) library parser... (based on Eclipse CDT AST Parser) | |
This is a external project: 'cplus-libparser', which can be used in other projects. ;) | |
[ ] Auto-Detect libraries dependency. | |
Related BUG: https://code.google.com/p/arduino/issues/detail?id=236 | |
https://github.com/arduino/Arduino/pull/2174 | |
[x] Auto generate variable names (ALT + ENTER) inside a function call (Ex: digitalRead(var)) | |
[x] After inserting into code, it must also appear in autocomplete | |
[*] Auto-Complete of the main functions parameters | |
Ex: Serial.begin({lista develocidades}), digitalWrite( {variables} , [HIGH / LOW]) | |
[ ] This information should be captured from the source code (documentation) | |
[*] Show syntax(parser) error's | |
NOTE: need to be well tested, I did a few tests | |
[x] Autocomplete for #include pick up all the libraries; | |
NOTE: The window of the options just close with ESC or when you click with the MOUSE out, not close with TAB | |
[*] - Update LibraryIndex/Autocomplete on change libs of sketch | |
[x] Fire on Import from Menu | |
[ ] Fire on Import from ZIP. | |
[*] Store/Load parsed result in lib.index on each folder.. | |
[ ] establish policies to update the index (LibraryChangeMonitor (only for h. files)) | |
- How to deal with the upgrade of core libraries? must validate the version? | |
[x] You may want to implement a Serializer / Deserializer (NOTE:for now the index is binary ) | |
[] Use 'javax.swing.text.Document' to parser, to avoid strings allocations | |
TODO: It has not been confirmed whether there is this problem. but I think so ... | |
Need implement: org.eclipse.cdt.internal.core.parser.scanner.AbstractCharArray | |
[x] Automatic adjustment of the position of the tooltip(completions window) to left or right | |
[] BUG(linux): The autocomplete window not working when you have another window "always on TOP" | |
[x] Autocomplete Shortcut's | |
- dw,dr,aw,ar (digitalWrite, digitalRead, analogWrite, analogRead) | |
- for,if,while,println | |
[x] Autocomplete of Sketch with multiple files | |
[x] BUG: When the SAVE event is launched cache and clean and only the modified classes are analyzed | |
[x] includes with global methods. | |
[x] includes with structs and static var. | |
[x] SyntaxErrorMarker - when a error occur, the highlight appear in two tabs | |
[x] #include - add other files of current Sketch in autocomplete for #include | |
[x] Compiler/SyntaxError - show multiple compiler erros at same time | |
[x] BUG - autocomplete cache/listeners problem on 'saveAs' sketch (It is keeping two versions) | |
Editor | |
=================== | |
[X] Swap lines using ALT+(UP/DOWN) | |
[X] word navigation - CTRL + (UP/DOWN/LEFT/RIGHT) | |
[x] Muli-line ident using TAB | |
[x] Auto-close / Identation brackets in if/method/etc.. | |
[x] Auto ident on new Line. | |
[x] FIX/NEW: Goto line on ERROR and Highlight | |
[x] Automatic doc block closing | |
[x] Change TABS - Control+TAB / Control+SHIF+TAB(bugs on linux) | |
[x] Old Popup Menu (has been improved) | |
[x] Menu shortcuts (tests) | |
[x] Preferences: Show Lines Numbers | |
[*] Text / Documentation Links (CONTROL + CLICK) | |
[x] Open reference documentation using CONTROL + CLICK | |
[] Highlight the rows that were changed? with GREEN? and erase a block of code? | |
[x] Keep Selection / Cursor when switch between Tabs | |
[x] BUG: Line counter: this cutting the numbers starting Line 100 | |
[x] Better tab header font render e dirty icon | |
[x] Suporte a UNDO/REDO em várias abas de forma independente | |
[X] Melhoria no sistema de Ctrl-z (ante voltava de 1 por 1 caracter ! muito chato...) | |
[x] FIX: Ugly Icon and Name on Linux (ALT+TAB Window) | |
[x] Show syntax errors (only to well Ugly Mistakes) | |
[X] Export to HTML/BBCODE (tested copy/past and online html viewer - http://jsfiddle.net/9wza5Lnh/2) | |
[x] MENU (Use Selection For Find) Removed - It was not working, and also normal Find already performs the same task | |
[x] Open Urls from Text | |
[x] Autoformat | |
[x] [Linux] Installation Script that creates shortcuts on the menu and desktop (with SplashScreen) | |
[x] [Linux] Best ICON for Alt+TAB | |
[x] fix CTRL+'/' not working on Linux (with new Editor) (need test on MacOS !) | |
[*] Multi-Tab Support | |
[x] Independent Undo/redo | |
[ ] Some features do not work properly (as Mark Ocorrences and Code Fold) | |
NOTE: if disabled, can you use without problems | |
- A more drastic strategy was to use an instance of Textarea for each tab. | |
BUG: https://github.com/bobbylight/RSyntaxTextArea/issues/84 | |
[*] Internal Documentation Browser | |
- This is still in development | |
[x] Linked on Editor Click ! | |
[x] Show documentation Tootip on Hover classes in editor. | |
[] Bug tooltipsize: https://github.com/bobbylight/RSyntaxTextArea/issues/81 | |
[] Use Doxygen to generate small documentation block's (for each method) for tooltip. | |
NOTE: For now, i'm using current reference files (BIGG HTML FILES !!!) and spliting html (performace problem !!!) | |
[] From Source-code - takes the source code documentation | |
NOTE: already figured out how to do, but need to create the documentation standardization | |
[*] Editor Color Shema (using XML Config from: lib/theme/syntax/). | |
NOTA:The old classes TextAreaDefaults, THEME, no longer fit for that.sso. | |
[] Open XML and allow edit (GUI or TEXT?) | |
[] Add the option in the preferences to select the theme file | |
Refractor | |
=================== | |
Because the changes in version 1.6 and 1.5.x it possibly will not be done ... | |
[ ] SketchCode - removed 'String program' - the only function was to occupy more memory | |
the ' document ' in itself is the ' program ' | |
[ ] SketchCode (tabs) - load on demand. | |
Known bugs | |
========================= | |
[ ] uint8_t uint8_t did not appear in autocomplete | |
[] autocomplete - instance of instance (OpenDevice.deviceManager.method) | |
[] atoi not found in the autocomplete (abs found) | |
[] blank menu (a think si because of UNDO handling) | |
[] Autocomplete for 2 char sketch variable problems (like TV/SD library) | |
[] Macro recogonized as global function (invert() instead of TVout.invert(); | |
[] Include Include only works if via autocomplete (copy-paste not working) | |
[] When you paste a sketch the parser should be performed, including detect libraries (normal parser does not) | |
[] CplusLibPaser - Inner class like callbacks not work | |
[] #define EthernetClient UIPClient (is in anoter file) not in autocomplete | |
[] Small problem when have two classes with same name ! EthernetClient on UIP has detected as Ethernet lib | |
News Todo: | |
========== | |
[ ] Highlight numbers in Console | |
- http://stackoverflow.com/questions/23041132/highlighting-numbers-in-jtextpane-using-regex | |
[] improvement: documentação - colocar uma configuração para saber se é SOMENTE MOUSE-OVER (ou precisa do CTRL) | |
[] improvement: onfiguração para mostrar ou não no autocomplete. | |
[ ] Parser - Recognition of the NameSpace (not working) | |
[] Test performance on a virtual machine |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment