Introducing Jumpy! (new package)

#23

I personally switched it off, but it’s my point of view.
I have a question: is it possible to use f as toogle key? In my opinion it is more straightforward when using vim-mode package (such as Chrome’s extension Vimium)…

Thanks

1 Like
#24

So, that’s an AWESOME idea, I hadn’t thought of the possibility of breaking vim rules.

I think for now I would not make that default, as I don’t think we want to give anyone any surprises. People might still want f functionality, although I see your point jumping to the word and then a few h’s or l’s or w, or e etc is probably all you need.

I will create a gist for the example or put it right in the readme or something but for now here it is (not super thoroughly tested, can you let me know?)

'.editor:not(.mini).vim-mode:not(.insert-mode):not(.jumpy-jump-mode)':
    'f': 'jumpy:toggle'

It does not break any of the existing functionality from what I can tell (of jumpy, of course it changes f in vim)

My initial tests of this are super awesome, and probably makes the vim/jumpy experience much better. I’ll use it myself as well for a while. I’m not yet sold on the idea of replacing / breaking functionality, although some vim plugins do it. Let’s give it a week or 2. If we like it, we can start by giving it some weight in the readme.

One small concern is that currently when you go into insert mode, shift-enter still works, vimmers will have to learn 2 keys to toggle on. Personally, it’s been more natural to escape out and then jump, but it’s not necessary, and I’d like to keep it that way. In that last case shift-enter would still work so it’s not that big of an issue.

Please let everyone know how it goes!
Thanks!

#25

OMG. I have NEVER seen vimium, this is awesome! I was thinking of building this for chrome, as I have some experience with chrome extensions.

It’s funny that the developer(s?) chose to use space as a cancel too. I actually had the 2 character idea years before ever learning of vim-motion or ace jump (but to fire mouse left clicks on desktop’s windows etc): http://uix.sourceforge.net …It’s terrible, I didn’t know how to code (project was more than 7 years ago) don’t try to run it, but I was doing x window system windows.

Years ago I had seen a vimium like tool for Firefox (I think it was called vimperator), but never knew anyone was making it for chrome. At the time the developer was only using digits and 3 digits long in some case (SMH), but I liked it for the rest of what it did.

I was also toying with the idea if I should limit the label’s characters so that they’re easier to type (home keys etc) or remove letters with descenders (harder to read). The difference is though that for source code text, I think it makes it a bit easier cognitively to cluster alphabetically, the filter feature I added helps that etc.

Anyway sorry to get off topic about Vimium, but everyone who’s using Jumpy is probably a good audience for vimium!
Christmas in July!

1 Like
#26

I don’t know why but it works only once. Then, when I press again f the command is catched by vim-mode:find … I tried also to unset the vim-mode function but it did not work…

#27

Interesting, it works for me real well. Do you have any other interesting custom mappings? Can you hit cmd+. and see any weird mappings in your chain? That would be very useful, maybe it’s another package or a custom. Are you using react? Also, make sure to do apm upgrade. I’m also on newest Atom (lower right corner?)

1 Like
#28

I forgot to restart Atom. I don’t know why but sometimes it needs to restart.

It works perfectly! Thanks

1 Like
#29

Yes. I think this one always need a ctrl+alt+command+l (lowercase L).

#30

Hey everyone, I released an update that completely fixes label behavior for code folding. It also properly labels “soft wrap” (word wrap) now. I didn’t realize this was an issue until recently, because I wasn’t using it much myself, as I had some issues with vim-mode and folding, and generally don’t like word wrap :stuck_out_tongue:

Enjoy! As usual, let me know if you guys encounter any bugs. At this point, I have no known bugs or unexpected behavior in the gh issues so please let me know! Thanks!

#31

Excellent idea and execution! :smiley:

Small issue in the docs. You should change:

‘vim-mode’ Users (Strongly Recommended Override)
Put this override in your ‘Atom’ -> ‘Open Your Stylesheet’ settings:

to:

‘vim-mode’ Users (Strongly Recommended Override)
Put this override in your ‘Atom’ -> ‘Open Your Keymap’ settings:

1 Like
#32

I released 1.6.0. It handles highlighting / selections now. Basically, start selection jump, selects to that point.

This also works well with vim-mode’s ‘v’, ‘V’, or in insert mode (with regular shift-enter binding only in insert mode of course since you need ‘f’ to type the letter ‘f’ :smile: )

Also, thanks @bkuri I made that change.

#33

I released 1.8.0 (well 1.8.1) it handles custom regex pattern matching. Takes a regex pattern as a string in the Jumpy config settings. I’m not sure how useful this will be yet, but might be useful for particular programming languages or regular spoken languages (not sure). What I really want to do with it is get a camel case pattern to match humps in camel case (and underscores too for python/ruby/etc.). Maybe I’m crazy, not sure yet. Doesn’t seem to hurt being there.

Of course, if anyone would like to help with the camel case regex, please reply or private message me. I have something kind of close, might be able to get it workable in the next few days, but could definitely use some help!

Also, if you didn’t see, 1.7.0 made typos a little less of a problem by blocking invalid label entries.

#34

I released a 1.8.2 which includes an updated readme with the suggested regex to handle camel casing and underscore variables. To save you some time here’s the regex:

([A-Z]+([0-9a-z])*)|[a-z0-9]{2,}

You can enter this under ‘Match Pattern’ in the jumpy settings.

I think this makes it harder to argue for the EasyMotion and Ace-Jump character level precision, especially while using vim-mode, where ‘h’, ‘l’, ‘e’, and ‘w’ are so easy to access and can be used to to fine grain scroll.

I’ve noticed no annoyance or noticeable performance loss. If you guys overwhelmingly approve, I can make it the default. Please let me know. Thanks.

#35

Hey everyone, please get the latest version 1.9.2.

An atom upgrade deprecated a lot of jumpy’s code. Either the growth of the deprecation stack or just changes to the architecture caused the toggle times to spike to upwards to a second!

After removing most of the deprecated calls the times on my system are back down to 15-40ms!

I have to invest a little more time and fix one more deprecated call, but for now, at least performance is back :slight_smile:

#36

Hi Everyone. Sorry to report I was a little late with the upgrade for Shadow DOM. I was sitting on a branch, but wanted to add a few more tweaks, features before the release. I didn’t know it was coming so soon!

PLEASE UPGRADE. @despairblue pointed it out that the old version might cause some kind of leak with Atom 1.6.6.

I’m calling it Jumpy 2.0.0 for several reasons. From my CHANGELOG.md:

2.0.0

  • 2.0.0 for reasons listed below:
  • Almost every LOC changed to support new Atom APIs. All tests passing with no deprecations!
  • “Breaking” 2.0 changes because of shadow dom architectural changes.
    NOTE: Expect your user custom styling approaches to be defunct.
    Nothing I could have done here sorry, blame Atom (JK). New suggestions of how to style in an updated README.md coming soon!
  • Planned 2.1 release will include @willdady’s pull request (technically adds to the “breaking” change in functionality to improve “accuracy” - that is more labels!)
  • Temporarily disabled “homing beacon” feature as this broke with the new shadow dom architecture. Will need further investigation.
  • Closes #42. (Doesn’t work with the “Shadow DOM” flag enabled)
3 Likes
#37

A little bump to this topic. This package is awesome.
I use Vimium for years and so happy to find it for Atom.

Here a bit of CSS to have the letters looking like Vimium ones.

atom-text-editor /deep/ {
.jumpy-label {
background-color: #de9536;
color: #000;
font-size: 18px;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(255, 247, 133)), to(rgb(255, 197, 66)));
font-weight: bold;
padding: 1px 2px 0 2px;
line-height: 1.25em;
text-transform: uppercase;
border: 1px solid #e3be23;
text-shadow: rgba(255, 255, 255, 0.6) 0px 1px 0px;
}
}

I use this regexp instead: ‘?"?$?[0-9a-zA-Z-_./]{1,}"?’?|{|}

1 Like
#38

Thanks so much! And thanks @fbrundu ! For introducing me to vimium (hope everyone who uses Jumpy is using it!!!) It’s changed my life, definitely 10x more useful than Jumpy :smile:

@beve You are one of the few people to ever endeavor in trying a new regex (that I know of). A few of us thought it made more sense to remove that feature and handle some of the edge cases in a more granular manner. Still a TODO for one of these days…

Anyway, can’t wait to try it out.

1 Like
#39

Anyone noticing a slow down in Jumpy with the
latest release?

Does anyone know if it might relate to:
https://github.com/atom/atom/pull/15894/files#diff-dd884e004af84f2b91dafb5510de7271

@leedohm any idea?

BTW, I think this issue is due to decorations rendering / overlay etc.

Should I be using a DisplayMarkerLayer and LayerDecoration?

Thanks everyone!

p.s. I have an almost complete rewrite coming soon (4.0.0) but unfortunately the new code uses decorations similarly and is also slow (with the new atom version)…

#40

Jumpy 4.1.1 has been released.

Now you can jump to a tab’s label too!

FYI, It’s now all written in TypeScript, and uses the “javascript-state-machine” lib.

Thanks @leroix and @nathansobo for all of the help with performance on the new atom build!

#41

:wave: :bowing_man: Happy to help!

1 Like
#42

I Just released Jumpy 5.0.0.

You can now jump to tree-view items.

Also, It has a new architecture which should make it easier than ever to contribute to. I happen to use Elm for the state machine now, but maintenance / contributors shouldn’t have to touch the Elm for most tasks!

Thanks to all of the people who pioneered the tree view jumping! I know it was overdue :slight_smile:
@johngeorgewright @rixo

1 Like