He also has an IQueueFactory class, that seems like some nice antipattern to me ;) *Edit: also, use QuickFIX, don't write your own. Been there, done that, does not worth it.
The terminology really isn't clear, but assuming the author is not crazy and hasn't missed split windows, most editors have tiling systems, not multi-column systems: you can display different files tiled on the window, you can display independent views of the same file tiled, but it's not a continuous view of a file across multiple columns, where the end of one column is the starting point of the next, and scrolling is synchronised.
Or at least if you can do that, I've got no idea how to enable it in IDEA.
I clicked the comments here first (bad habit) and presumed there was something more nuanced to the case the OP is trying to make... but you are right, it's quite the WTF.
To be fair I think Atom hides the split commands behind a View->Panes menu and IntelliJ (or PHPStorm at least) has the command in Window->Editor Tabs. (All on OSX). So it's not super clear where the split window functionality is, but it's also not hard to read the docs for your editor..
Edit: Ah I see what the OP is saying now. I'd be surprised if this functionality isn't covered by plugins, though.
I'm surprised too, but there don't seem to be any such plugins (although vim apparently comes closes...never looked at emacs).
What I find really interesting is that I seem to be in a _very_ tiny minority that wants this or even has given any thought to this. I expected that most other developers with modern monitors would want this. The comments here and on the blog show that isn't the case :)
I would love to have "news paper like columns" in my editor. I have been looking for it since 2007...
Another thing I would like is the ability to inject multiple files into the same "edit buffer" so that "search" works over these related files as whole, transparently.
Author here. Looks like lots of people are mixing up multi-column editing with split pane views. I want the same file laid out in multiple columns to make use of the screen real-estate. If such functionality does indeed exist (other than emacs :) ), please let me know. I haven't been able to find it.
Regarding the anti-pattern. You may be right, I have't updated the code in a few years. I displayed it in the screenshot only because it is already open source. But I do need the option of writing files to disk, writing to some random data store or just keep the data in memory. Send me a note about your idea, the whole point of opening it up was to get feedback.
QuickFIX is pretty good, but doesn't hurt to experiment :)
I do and I regard them as a bug in need of refactoring. I just ran sloccount on one of our key services and the largest non-test file is 106 lines. It has three methods that do not call each other. The largest test file is 268 lines.
Then again we have another service with four files over 1000 lines (1441 the biggest), and we experience significant pain: not because of the size of the files but because of what the size of the class means about its design. That's on a team that had significant pressure to meet some tight deadlines. They are now actively working on refactoring those classes - again, not because of the size, but because of the design.
Honestly, just never used it (not since freshman year almost two decades ago). I mainly use eclipse and it works very well for me. I like how I can hover over a variable and it tells me info about that variable, click on it and it shows me very other place it is used. I can rename a function and it gets updated in all files where it is used. I can very quickly see where a class fits in the class hierarchy or see which methods call other methods.
Emacs might do all of this, but eclipse does this well enough.
I think most of the time, stupid stuff like IQueueFactory just appears because it's Java and Java didn't let you pass individual functions around until recently.
I must have different eyes to everyone else in the human race...
It seems like on PC/Linux/etc every time resolution increases font size and everything else gets tinier. They might be taking up the same number of pixels on a 1080p and 4K display, but those pixels have physically shrunk. So the result is that millimeter to millimeter they have shrunk and your eyes need to focus on a smaller "thing."
Staring at tiny text all day is exhausting, but yet a lot of people love to do it as they constantly rave about how 1080p or 4K give them "more screen real estate" (because now everything is tiny). This is another example of that. Instead of the OP just increasing the font size, they've let the text get smaller and smaller and are now complaining that they have too much wasted space.
On all Windows machines I now run I use 125% DPI to try and make the text readable over long periods. On my Surface 3 I use 150% DPI which breaks a lot of stuff.
Honestly as far as I am concerned Apple are the only one that got this right when they scaled everything so it stays the same size (in real terms) as resolution increases (effectively giving your text more pixels, so it looks smoother). Windows is terrible and Linux is worse.
But since every other human seems to have cyborg eyes and is immune from eye strain I guess none of this matters...
With modern monitors, I could increase the font size until it matches a toddler's alphabet book, I wold still have plenty of space left for at least a couple more columns :)
Are you sure it's equivalent to follow-mode, not just vertical splits? Follow-mode emulates the file wrapping to the next column when it reaches the end of a buffer, and if the cursor moves across the top/bottom boundary it'll appear on the other buffer instead of scrolling the current buffer. And the buffers are synchronised as a single "page".
Is that Sublime Text, Atom, or Brackets? Sublime Text has great multicolumn (and grid) support, but I don't use the others.
Although, if you use a tiling window manager and use lightweight non-single-window IDE/editors, you can just launch multiple windows and your window manager can do the rest. Multi-columns seems like a more natural job for window managers, so editors should be designed to naturally handle multiple windows and be able to quickly close and open them.
This was my first thought, and you're right. But what if the author means two columns as in a newspaper or magazine, where the same content continues off the bottom of the left pane to the top of the right one? Does anything support that? Would it be useful?
Interestingly I find the default behavior more helpful. Usually if there are any declarations or some init code at the top and some use of those later, I would want to view the top of the file in one column and work or edit in another part without having both scroll synchronously.
Sometimes I have the same file open in 3 or 4 columns if I need to see what is happening in multiple parts of the code in front of me.
This is already present in many (if not all?) editors already. In vim or emacs you can open a new buffer/window/pane (whatever terminology is used) on the same file and put different views of the same file (with live changes) side by side. I often do this when I need to keep an eye on the header/import section of a file and also work at the bottom of the file at the same time.
I'm pretty sure a lot of other editors/IDEs I've used in the past also support this. It's nothing new.
> This is already present in many (if not all?) editors already.
No. Tiling is, but it doesn't behave as if you had a single file view wrapping across columns. Emacs does have that via follow-mode, but I don't think I've seen it anywhere else (though vim might have something equivalent to follow-mode)
Another option would be to have more options to display addition development related information in side columns. Code statistics, terminal window, program source code visualization, live browser output for Web coding and such...
As in all tech, the future is already here, just very unevenly distributed. Fire up emacs, "control-x 3" and there you are. Next up will be googling about windmove-default-keybindings so that shift-arrowkeys does what you'd expect in an emacs frame (or has this become the default over recent years?).
For a good time try control-x 2 and finish with some control-x 1.
To be honest I don't have this problem because I selected a tool set that does this already.
Tiling window managers (Awesome, XMonad, etc) and VIM do all of this and more, and I use them every day with great ease. In fact, moving away from them and having to use a 'click + drool' GUI (Unity, KDE, Gnome, etc) to move windows around feels slightly painful to me now.
Haha, I'm the one who asked that question years ago :) I'm the author of this article.
Vim does come closest to what I want. However, I'd like to be able to do this in intellij, eclipse, sublime, atom, etc. In other words, my contention is that this should be a standard feature, like syntax highlighting or code folding.
Is it a common feature to lay out a single file in multiple columns? Not split panes. Not the same file split into two with two independent scroll bars. Multiple columns the way a single article is spread across multiple columns in a new paper?
I use Mjolnir[1] to arrange term, Atom or IDEA windows. It's quite efficient since you can switch/resize them very quickly and you don't have to rely on your full-screen-IDE's embedded terminal for console output.
To the author: if this many people is confused about the difference between multi-pane and multi-column, your message isn't clear and it won't be to the developers you're asking either.
Explain exactly what you want (I read the blog post and it gave me no clue to that) and the developers might understand what you're asking.
I very often have a vertical split in vim, both panes with the same file. I can skip around the file and look at stuff in one while actually writing code in the other. Is that more or less what the op is asking for?
Visual Studio has great multi-columns. Just drag any tab and snap it into place.
Also, here's a simple solution: don't maximize windows. There's a lot of space on that screen that could be taken up by a browser, desktop icons, calculator, and any other thing you need instant access to. It's not multitasking(which I've heard is considered bad), if you're using all those windows to accomplish one task.
Visual Studio has tiling. So do almost all editors, so I'd assume that is not what the author is talking about. You can display files side-by-side, you can even display multiple sections of the same file side-by-side, but you can't have a single file view "wrap around" into columns.
You often will not need to see whole class to implement things.
cmd+f --> "string"
ctrl+g --> "line number"
in 4K tv example, you will need to focus your eyes too much that they will get tired after 30 minutes. Instead, zoom in and focus on the method you are dealing with.
you may use;
cmd+alt+2 --> for 2 columns layout in order to compare 2 files.
Your eyes are much more important than text editors.
'CTRL-W v' in vim ;) Also, Visual Studio has vertical and horizontal tab groups, Xcode has "counterparts" where you can display 2 associated files side by side (for instance .c and its .h file), and tmux lets you setup vertical and horizontal splits for terminal sessions which is also very nice in combination with vim.
He also has an IQueueFactory class, that seems like some nice antipattern to me ;) *Edit: also, use QuickFIX, don't write your own. Been there, done that, does not worth it.