Must Have Packages That Don't Exist?


#1

Continuing the discussion from New: Bug Report package:

I thought this was a good question and figured I’d toss it out there to everyone. I’ll kick it off with one package that I think would be very useful for people who use Atom in a corporate environment. A package that will insert a boilerplate copyright comment at the top of the file and update said copyright on any save (if it matches the configured boilerplate).

I kind of half-implemented it myself as auto-copyright … only the insert part. But it keeps falling by the wayside.


Where to begin with contributing?
#2

Another one was a navigation package that mimics Sublime Text’s Goto Anything. It could start simple with something that could blend the Fuzzy Finder with the Goto Line package so I could type foo:123 and it would go to line 123 in a file that matches foo.


#3

I was tempted by making a PR for that in the fuzzy-finder, I really miss it too. But that means blending it with goto-line and symbols-view, and which lead me to one missing important package: a symbol manager. I see a package with minimal UI but a real model that can fit many languages and that can be accessed by several other dedicated packages (binding specific platform tools or providing UIs like a sidebar).

In fact, I feel it lacks more in general purpose packages onto which build things, for instance there’s the project thing that is not clear, lots of packages exist for more or less the same purpose (switching projects), but I feel lack it lack something more general to extend the native project model with some basic stuff such setting a project flavor (like java, rails, etc.) and having hooks for several actions at the project level (like creation of directories or files, to fill the files with boilerplate for instance).


#4

When I said must-have I was thinking of things that affect almost everyone and cause a lot of pain. The problem of not knowing which package is causing a bug begs for the “bisect” package that will do a binary search and find the offending package. This is a must-have.

Having said that, a free-for-all package request thread sounds like a good idea. Here is my to-do list…

  • toolbar of selected commands
  • drag/drop text
  • inline related editing (issue 12437)
  • pin tab
  • show atom pull requests
  • expand selection based on syntax
  • ftp file when disk version changes
  • intelligent tree-based json/cson/yaml editor
  • regexp tester

#5

Yeah, this is the thing that has been nagging me since I started using Sublime Text and has carried over into my usage of Atom. I spent a bunch of time this past weekend thinking of building upon Exuberant Ctags, but doing an in-memory sqlite database instead of a text file for fast search even on large projects, on-save updating, as well as only indexing the individual file that has been saved instead of the entire project. Oh … and serializing the database to disk on exit.


#6

Yeah, this is the thing that has been nagging me since I started using Sublime Text and has carried over into my usage of Atom. I spent a bunch of time this past weekend thinking of building upon Exuberant Ctags, but doing an in-memory sqlite database instead of a text file for fast search even on large projects, on-save updating, as well as only indexing the individual file that has been saved instead of the entire project. Oh … and serializing the database to disk on exit.

Wouldn’t that overlap with the atom-ctags package? Or don’t you mind having multiple packages doing similar things?


#7

As I’ve stated before, I personally don’t mind that more than one package exists that does the same thing. This is what is known in economics as “consumer choice” and “competition”, both of which are generally considered to be “good things” :wink:

But also, no, I don’t see it as an overlap if I’m completely replacing Ctags as the basis of the symbol matching system. Sure, they ultimately achieve similar goals, but the fact that their architectures are so different means that there are different tradeoffs … and also different payoffs. An in-memory database like I described affords a live view of the current file’s symbols … whereas a Ctags implementation would bog down completely in a large project.

Besides, just thinking about things or experimenting with ideas shouldn’t be discouraged … should it?

Disclaimer: I am not an employee of GitHub nor a member of the Atom team. My opinions are my own.


#8

I’ve been thinking about advanced snippets for a while, something that allows you to write emmet-style snippets for any kind of code.

With normal snippets you can do this:

for // expands to
for (var i = 0; i < Things.length; i++) {
    Things[i]
};
// with breakpoints at 0, 10 and between the brackets

That’s decent, but most of the time I just want a sort of range, like 0..10 or 0..Things.length

I’d like to see a snippet engine that supports these kind of parameterized snippets.

3..10 // expands to
for (var i = 3; i < 10; i++) {
  
} 
0..Things.length // expands to
for (var i = 0; i < Things.length; i++) {

}

#9

Something else I’d like to see, a project-find package that uses The Silver Searcher as its engine. I use The Silver Searcher often on large projects because:

  1. It is fast
  2. It’s got some smart features like ignoring files in your VCS ignore files (.gitignore, .hgignore, etc)

#10

Three I can think of:

  1. Ok, so I know sublime never had (to my knowledge) a great way to do this, but drag and droppable views. I know resizing probably causes some issues with the virtualization stuff but I think we should be able to split like that. Visual studio had a pretty decent implementation if I remember correctly and even Eclipse had it right? I find myself not using multiple views enough as I’d like to. Aside, hot keys are great but this is one for the mouse mostly, at least for beginners IMO.

  2. Tab completion always seems to have issues. I basically don’t use it in Atom. Particularly because vim-mode has a very hard time with it. Do others have this problem?

  3. (I know this has been mentioned many times before but didn’t see it listed again on here. Preview functionality. I miss it particularly on command + p scrolling. Great sublime feature.


#11

I really would like to see the Sublime Text “tag” package:

I use it a lot to clean code pasted into Wordpress, can remove all div and span tags, for example, in one shot or remove all style attributes.


#12

There are actually a few I miss from SublimeText, a couple of which dramatically improve functionality.

  • Mark and Move: Allows you to move a single cursor through the document, press a keystroke, and leave “marks”. When you’ve left enough marks, you press the keystroke twice, and all the marks are turned into cursors. Very useful for editing several different alignments. And it sure beats command-clicking everywhere
  • SimpleMovements: A very useful plugin for those of us who don’t really want to use VIM mode, but want powerful line movements. More than anything else, this plugin introduces dramatically better line jumping, with the ability to select ranges, make multiple selection of multiple, individually numbered lines, and so forth.
  • AlignTab: There are already several cursor alignment plugins, but none of them seem to work as well as AlignTab. AlignTab lets you use regexp to align things, and supports a notion of “columns.” You have 3 columns, everything before the match, the match, and everything after the match, and you can set the alignment, separation, and so forth of each column. Very flexible, particularly when working with ruby hashes. You can easily align hashes in the “proper” way, as specified by the style guide
  • SublimeTableEditor: Makes markdown tables not suck. Not really essential, but I miss it every time i write a PR. I’ve contacted the author of the plugin, and he has no interest in porting to Sublime, but says if I/anyone else want to do it, they are free to do so. I’ve been thinking about spending some time this weekend on it.

And finally, a package that I’m honestly a little surprised wasn’t baked into atom from the beginning. SublimeGit. This package is incredible. It has a “git buffer” which lets you quickly manage the staging area, prepare commits, and more. It significantly sped up my git workflow, and I’d absolutely love if it, or an analog, could be ported. It is developed for-profit, by Will Bond, who hosts the Sublime package repo, so he might be convinced to port it. Then again, he may not ¯\_(ツ)_/¯


#13

git status / commit and git logs in text buffers like magit. I currently launch the GitHub app but it doesn’t show tags (git log --decorate) and it isn’t as convenient as being in an actual text editor (incremental search, copy and paste, zoom fonts in and out, etc.)

I’ve seen one package that was close but it tried to be way to clever with panes on the left and lots of non-keyboard friendly windows.


Autocomplete tutorial
#14

There is atomagit which aims to be a magit clone. Keyboard handling is quite good but the current version has a bug that prevents pushes and opens the dev console, though not sure if this is just happening on linux, since the new maintainers are not really active.


#15

How about a simple recent folders display. Instead of launching into an annoying untitled file, use the real estate to display a tidy folders list for either pined or recent tabs.

  • Ubuntu has Recent Folders in the Files
  • Windows 7 has Pined Folders in start bar, Libraries and even Favorites on the explorer.
  • Mac … Well I don’t own a Mac.
    But the point is there should be a way to pull that from the OS or even cache it. The latter might be a bit challenging given that there are memory usage problems already.

I get it that Open Folder exists for a reason but productivity can improve. There are nicer ways to do it is what I mean.


#16

@kidd This is one way that Mac applications do it:

You right-click the icon in the Dock and a list of recent files and folders shows along with the other options. This is a feature request for the Mac platform at:


#17

Currently in Windows this only seems to include the recent files and not folders which is way more convenient. And I would emphasize on giving it some integration to the Atom UI. Giving the user the option to not launch into untitled by default or accessing recent folders tab with a shortcut or while working on another project.

Context: We do not use folders linearly and being able to access folders throw a better UI method than a pop up screen would benefit everyone. Make it a tab like the Settings and populate it, seems way better than using the mouse on the task bar (Dock) every time.

Ctrl + h is unused and seems usable in this occasion given that browsers use it as a shortcut for navigation history. Cuts time and is simple, plus it gives you the nice looking smooth feeling of the very handsome theme you picked from packages.

It’d also be a great addition to the Multiple-project enhancement planned for 1.0. wink wink

There are many way to have folders appear or let the user decide what shows up, but a simplistic concept design that works would be great.

And thanks again @leedohm you’ve really followed up on all this. I expected it to take a bit more time but MAN are you efficient.


#18

Why not use this: https://atom.io/packages/project-manager

Yes, you need to set up a folder, but I just hit the toggle keystroke and see all the folders (projects) I’ve been working with.


#19

@paradox I just created a mark and move package for Atom. You can find it here! It’s called mark-ring.


#20

Awesome! This will help my workflow tremendously. Thank you!