A very religious text editor
Go
Latest commit b75e46d May 28, 2015 @nsf Use our own default label params with ASCII ellipsis.
Well, frankly '~' is not the best replacement for '...'. But it's the only
thing that comes to mind (used in Far Manager and Midnight Commander).
Failed to load latest commit information.
LICENSE Add LICENSE file. It is a typical MIT license. Aug 7, 2012
README Add description for center view function. May 26, 2015
action.go Add local buffer autcompletion. Sep 16, 2012
autocomplete.go Use our own default label params with ASCII ellipsis. May 28, 2015
autocomplete_mode.go Gofmt everything. Sep 23, 2012
buffer.go Fix FD leak on file save. Feb 8, 2013
cursor_location.go Fix filter_text cursor movement bug. Aug 30, 2013
extended_mode.go Add C-x ! filter command. Nov 12, 2013
fill_region_mode.go files updated by gofmt May 26, 2015
godit.go Use our own default label params with ASCII ellipsis. May 28, 2015
isearch_mode.go Gofmt everything. Sep 23, 2012
key_press_mode.go Few small fixes. Oct 21, 2012
line_edit_mode.go Use our own default label params with ASCII ellipsis. May 28, 2015
llrb_tree.go Gofmt everything. Sep 23, 2012
llrb_tree_test.go Gofmt everything. Sep 23, 2012
macro_repeat_mode.go Implement kill buffer. Not persistent for now. Sep 9, 2012
overlay_mode.go Another separation of things into different files. Sep 1, 2012
redo_mode.go Implement redo mode. Sep 9, 2012
region_indent_mode.go Fix highlighting bug in region indent mode. Aug 30, 2013
suspend.go Add support for suspend feature (C-z), enabled on linux only at the m… Nov 16, 2012
suspend_linux.go files updated by gofmt May 26, 2015
utils.go Use our own default label params with ASCII ellipsis. May 28, 2015
view.go Use our own default label params with ASCII ellipsis. May 28, 2015
view_op_mode.go Use our own default label params with ASCII ellipsis. May 28, 2015
view_tree.go Just dump the view_location from the view to the buffer after each ev… Mar 30, 2013

README

 --== Godit - a very religious text editor ==--

Screenshots:

 * http://nosmileface.ru/images/godit-linux1.png
 * http://nosmileface.ru/images/godit-linux2.png

I call it religious, because there is a strong faith in the "one true way"
of doing things. By that I mean things like: "the tab size is always an
equivalent to 8 spaces/characters" or "each line ends with '\n' symbol and
someone should end this '\r\n' madness" or "text files are always utf-8
encoded". Most editors provide customizable options for these things, but
godit takes a different approach in that area and has no settings at all. So,
that concludes the ideology behind godit.

If you're interested in what godit feels like, it would be fair to say that it
is an emacsish lightweight text editor. The godit uses many of the emacs key
bindings and operates using a notion of "micromodes". It's easier to explain
what a micromode is by a simple example. Let's take the keyboard macros feature
from both emacs and godit. You can start recording a macro using `C-x (` key
combination and then when you're ready to start repeating it, you do the
following: `C-x e (e...)`. Not only `C-x e` ends the recording of a macro, it
executes the macro once and enters a micromode, where typing `e` again, will
repeat that action. But as soon as some other key was pressed you quit this
micromode and everything is back to normal again. The idea of micromode is used
in godit a lot.


 --== List of keybindings ==--

Basic things:
  C-g              - Universal cancel button
  C-x C-c          - Quit from the godit
  C-x C-s          - Save file [prompt maybe]
  C-x S            - Save file (raw) [prompt maybe]
  C-x M-s          - Save file as [prompt]
  C-x M-S          - Save file as (raw) [prompt]
  C-x C-f          - Open file
  M-g              - Go to line [prompt]
  C-/              - Undo
  C-x C-/ (C-/...) - Redo

View/buffer operations:
  C-x C-w          - View operations mode
  C-x 0            - Kill active view
  C-x 1            - Kill all views but active
  C-x 2            - Split active view vertically
  C-x 3            - Split active view horizontally
  C-x o            - Make a sibling view active
  C-x b            - Switch buffer in the active view [prompt]
  C-x k            - Kill buffer in the active view

View operations mode:
  v                - Split active view vertically
  h                - Split active view horizontally
  k                - Kill active view
  C-f, <right>     - Expand/shrink active view to the right
  C-b, <left>      - Expand/shrink active view to the left
  C-n, <down>      - Expand/shrink active view to the bottom
  C-p, <up>        - Expand/shrink active view to the top
  1, 2, 3, 4, ...  - Select view

Cursor/view movement and text editing:
  C-f, <right>     - Move cursor one character forward
  M-f              - Move cursor one word forward
  C-b, <left>      - Move cursor one character backward
  M-b              - Move cursor one word backward
  C-n, <down>      - Move cursor to the next line
  C-p, <up>        - Move cursor to the previous line
  C-e, <end>       - Move cursor to the end of line
  C-a, <home>      - Move cursor to the beginning of the line
  C-v, <pgdn>      - Move view forward (half of the screen)
  M-v, <pgup>      - Move view backward (half of the screen)
  C-l              - Center view on line containing cursor
  C-s              - Search forward [interactive prompt]
  C-r              - Search backward [interactive prompt]
  C-j              - Insert a newline character and autoindent
  <enter>          - Insert a newline character
  <backspace>      - Delete one character backwards
  C-d, <delete>    - Delete one character in-place
  M-d              - Kill word
  M-<backspace>    - Kill word backwards
  C-k              - Kill line
  M-u              - Convert the following word to upper case
  M-l              - Convert the following word to lower case
  M-c              - Capitalize the following word
  <any other key>  - Insert character

Mark and region operations:
  C-<space>        - Set mark
  C-x C-x          - Swap cursor and mark locations
  C-x > (>...)     - Indent region (lines between the cursor and the mark)
  C-x < (<...)     - Deindent region (lines between the cursor and the mark)
  C-x C-r          - Search & replace (within region) [prompt]
  C-x C-u          - Convert the region to upper case
  C-x C-l          - Convert the region to lower case
  C-w              - Kill region (between the cursor and the mark)
  M-w              - Copy region (between the cursor and the mark)
  C-y              - Yank (aka Paste) previously killed/copied text
  M-q              - Fill region (lines between the cursor and the mark) [prompt]

Advanced:
  M-/              - Local words autocompletion
  C-x C-a          - Invoke buffer specific autocompletion menu [menu]
  C-x (            - Start keyboard macro recording
  C-x )            - Stop keyboard macro recording
  C-x e (e...)     - Stop keyboard macro recording and execute it
  C-x =            - Info about character under the cursor
  C-x !            - Filter region through an external command [prompt]


 --== Current development state==--

I'm still in process of designing some parts of it. Bits of functionality are
missing, but frankly I write godit in godit already and I use godit for
everything else on my system (EDITOR=godit). This README was written in godit
from scratch, I write commit messages in godit, I write code in godit, I write
configs and scripts in godit. The editor is definitely usable, but it is
certain that some corner cases are not covered. Just try it, perhaps you would
like it. Oh and I'm very picky about feature suggestions at the moment,
suggest, but don't expect too much.