Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provide a simple global search #4077

Open
lmihalkovic opened this issue Nov 4, 2015 · 15 comments
Open

Provide a simple global search #4077

lmihalkovic opened this issue Nov 4, 2015 · 15 comments
Labels
feature request A request to make an enhancement (not a bug fix)
Milestone

Comments

@lmihalkovic
Copy link

Finding things in a project is not easy without forward knowledge of what to look for, and even then searching is still bound by the contents of a single source file. This feature would add simple global search (scope to be defined?! ideally would support ALL reachable source files, even if the result is initially only displayed in the search result popover when the file is not editable, but ideally, any of the source files should be at least VIEWABLE)

Proposed UI is the same as eclipse/intellij
arduino-2015-11-04 at 11 17 07 am

Just testing what the user experience would be (popover arrow should be right aligned?!)
arduino-2015-11-04 at 11 17 55 am

Alternatively could be done via a editor-centered popup.

@ffissore ffissore added the feature request A request to make an enhancement (not a bug fix) label Nov 4, 2015
@ffissore ffissore self-assigned this Nov 4, 2015
@Testato
Copy link

Testato commented Nov 4, 2015

+1

@lmihalkovic
Copy link
Author

The idea is to have an extensible mechanism to contribute different quick access contributors, each responding to one or more triggers (exact and partial matches). At the moment there are experimental contributors for the following

  • sketch variables ( keywords "vars" "variables" - would be nice to jump to the definition when selecting )
  • key bindings ( presents a partial list until more action related code is cleaned up )
  • libraries ( "libs" "libraries" - at the moment lists all libraries and versions. could add 'installed libs' or 'all libs' )

screen shot 2015-11-16 at 1 47 01 am

screen shot 2015-11-16 at 1 47 38 am

Everything is running async and implementing a computer is dead simple

NOTE: presentation is still somewhat experimental

@lmihalkovic
Copy link
Author

TODO

  • enhance the vars contributor to display the name of the library where the variable originates from (good for first time learners)
  • open library reference page when selecting a variable from a library

@ffissore
Copy link
Contributor

Show me code, or it didn't happen http://memegenerator.net/instance/30625023

@lmihalkovic
Copy link
Author

@ffissore Not sure what you are asking me, but I'm sure it could be done with a smile :-)

This part is in APP
screen shot 2015-11-17 at 9 56 03 am

This part is in CORE (no, I did not add Token.XXXXX/RSTA lib as a dependency of CORE)
screen shot 2015-11-17 at 9 54 19 am

The presentation is currently in flux, and the final look I am trying to go for is something along the lines of the following two designs. I'll eventually push it to my fork when I like the result.

arduino-blogpost-2015-11-17 at 10 08 28 am

arduino-2015-11-17 at 9 59 36 am

I appreciate that this is a creating a distraction from your tight schedule and will close this for now.

@ffissore
Copy link
Contributor

Nice screenshots of your code (well, actually of the file names). Mind to share the actual code? I mean the source code. Submitting a Pull Request is your best option to see your code included in Arduino https://help.github.com/articles/creating-a-pull-request/

@ffissore ffissore added this to the Release 1.6.7 milestone Nov 17, 2015
@lmihalkovic
Copy link
Author

@ffissore I do welcome constructive input if you feel like sharing any. I would prefer not to deal with sarcasms, but will make an effort to get used to it. This is the core input processor. I'll let you know when it's all in my fork

arduino-2015-11-17 at 11 24 02 am

I use images simply because they usually reduce the need for accompanying written explanations while helping people get the true feel for how a UI works (design changes are a manageable burden if the code is cleanly structured)

@ffissore
Copy link
Contributor

As I've already said, I'm more than happy about your enthusiasm. However you have to understand that sharing screenshots and no actual, running code, gives everything a taste of slideware that I'm sure does not belong to your work. So please turn your contribution into something that everybody can compile and run on their computer

@Testato
Copy link

Testato commented Nov 17, 2015

It is very interesting.
Hope that the Arduino Team will pull the code from your work when it will
be available
Il 17/nov/2015 11:31, "Laurent Mihalkovic" notifications@github.com ha
scritto:

@ffissore https://github.com/ffissore I do welcome constructive input
if you feel like sharing any. I would prefer not to deal with sarcasms, but
will make an effort to get used to it. This is the core input processor.
I'll let you know when it's all in my fork

[image: arduino-2015-11-17 at 11 24 02 am]
https://cloud.githubusercontent.com/assets/1318077/11208881/f82bcdc2-8d1d-11e5-8547-8073e7d8b982.png

I use images simply because they usually reduce the need for accompanying
written explanations while helping people get the true feel for how a UI
works (design changes are a manageable burden if the code is cleanly
structured)


Reply to this email directly or view it on GitHub
#4077 (comment).

@cmaglie
Copy link
Member

cmaglie commented Nov 17, 2015

@lmihalkovic
Looking at the amount of classes and code you wrote, this doesn't look like neither a "simple" nor a "one hour" job as you often repeat.

Moreover, I think that the cost of implementing the engines (that actually populates these GUI elements with something useful) is something to not underestimate.

@lmihalkovic
Copy link
Author

@cmaglie thank you for taking the time to comment.

As i recall the one hour reference was made once (couple instances but single topic) with respect to the relooking of the ui to track Arduino Create. In support, I detailed the steps involved as well as my scope (e.g. i did not yet eliminate the bitmap file with the buttons but will replace it with as many small classes, each painting a single shape). But say I am off 3 times (my statement was accurate), we would still be looking at 3 hours for a complete relooking and convergence of the company's product line. I have an mba, hence my bias towards branding and product/corporate identity.

The actions code in the snapshot is part of a back burned task that i am doing for supporting displaying the keybindings from the quick access. I did not need to do it for quick access, but i think in the long run it will ease the maintenance burden. My other motivation for starting it was that the code for next/prev-tab and other sketch level actions is the same whether you are looking at the sketch or a library (this is all predicated on the very first change I made to the codebase that eliminated the difference between libs and sketches, making it free for the existing code to work with either).

I assure you that the code itself is simple (i basically cut/past the guts of sketch.java), but i do grant you that, like in sculpture, seeing where the fracture line is in a piece of rock is not always obvious. Fortunately your codebase is quite somewhat clean

@lmihalkovic
Copy link
Author

Strike my last paragraph... your codebase is really easy to enhance... maybe not obvious, but definitely easy because it has a good foundation.

arduino-2015-11-17 at 1 24 30 pm

@lmihalkovic
Copy link
Author

Added grouping of entries per libraries

Added code to work from the current editor selection via META-3 (yes, i use eclipse on a mac). If there is no selection, then it just jumps to the field. If there is a selection, the QA tries to find a matching var/func in any of the libs. If there are any maches, then up/DOWN to select one, then ENTER to open the internal help browser (should probably add a preference to use your desktop browser instead) to the reference page for the library that contains the definition.

@lmihalkovic
Copy link
Author

Final look for now
image

@lmihalkovic
Copy link
Author

[LMDONE]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request A request to make an enhancement (not a bug fix)
Projects
None yet
Development

No branches or pull requests

4 participants