Correct, I think it's useless. :D
HN user
nsf
I hope no emacs users use control, there is a caps lock for that.
It's ok to disagree with godit, it's not meant for everybody. Frankly, just for me. And if someone else likes it, I don't mind sharing it.
Go-completion facility in Emacs is available. `github.com/nsf/gocode` has two plugins for emacs (auto-complete-mode and company-mode).
I use it for all text editing. Starting from config files and ending with Go/C/C++/Python/bash.
Emacs is big, startup is slow and you have to carry a pile of elisp scripts which fulfil your feature needs. All features has to be written in elisp of course that could be an issue too. Just a matter of taste.
Well in Go there are no makefiles, but there is a tool called "go". It can build stuff for you. It maintains an assumption that all *.go files within the same directory belong to the same package. So you can't actually store multiple packages in the same dir or span files of one package across multiple dirs and use the go tool at the same time. Since the go tool makes like really easier, I choose to obey its conventions. That's why all files are in the same dir.
And I can't just add "modes" and "view" packages, because there are parts in them which depend on core concepts, which leads me to another "core" package or something. And that's 3 packages already. When there's 3, there's 4. It's easier the way it is.
I agree this panic is quite annoying sometimes. Will make a proper error message when I have time. A very minor issue at the moment. You see I'm not really actively working on it anymore, I use the godit for all of my text editing tasks and if some feature/bug annoys me a lot in godit - I fix it. Directory opening by accident happens sometimes, lol, and when you see a panic message, you panic as well, but then phew.. :)
Perhaps, but it's too late to change the name.
Godit is quite fast. I tested the godit on intel atom netbook, it keeps CPU usage fairly low.
In my opinion linked list of lines is perfect here. Because the only time you need to go through it in a linear fashion is the actual "goto line" operation. The rest is mostly O(1). Of course line insertion is much more common than "goto line" in editors.
The only problem in godit is that it still doesn't handle long lines very well, here most of the operations are O(N). In fact in godit every time you move a cursor or basically do anything it will do O(N) operation on a current line. I checked this kind of stuff on long enough line (10k), no problems here. I don't think there are that many docs with lines longer than 10k.
So, yes, it will work on very large files without any problems. I've just tested it by creating a 56M file with ~660k lines. Can't see any performance issues on my i5-3470, except for loading and saving, it feels like 0.5s for both or so.
Of course contiguous buffer is not an efficient way to do an editor, I guess "advanced" editors use rope data structure or something. Although most of the editors load large files slower than godit. In a perfect world on files bigger than say 50M you should do memory mapping or something. But most editors like to know the amount of lines in a file they're showing to you, so, no mmap here.
Anyways.. It works very well in practice.
I know, I know. I don't take it that personally, just was clarifying why I wrote it and that it's not necessary how I write software.
I totally agree with that, but you know how it goes with sensitive tools like editors. "Nya nya nya, but where is my feature X?"
Writing the right combination of what I want is a perfect way to solve this problem.
Sure, but honestly the original complaint was implying that godit is badly structured. Yes, I don't use Go packages for it, because it's just a small 5k lines of code project and I don't need to use 100 packages to avoid namespace clashes. I use a separate file for most of editor modes and concepts, what else the author wants me to do? Hence, the irony in the answer.
Never used plan9 in my life. The reason why I wrote this editor is because I don't like bloated emacs and I use this many of its features. Go produces nice 100% statically linked binaries, so eventually I can just wget the godit to any of my linux machines and just use it.
The editor is never meant to be used by anyone except me. But if someone finds it nice, I don't mind sharing it. Plus it's the only serious example of termbox library usage (I wrote it too).
Do you want me to write code like that? https://github.com/Mikkeren/FizzBuzzEnterpriseEdition
That's just my english. Of course I meant that the tab size is the same as the size of 8 space characters. And it sounds like the tab _character_ is an equivalent to 8 spaces, which is not true. Sorry for confusing description.