Another stable release, with many hours of use.
- Show an indication (red X) when the underlying file is not readable.
- Delete current word, to start of word, and to end of word.
- When changing buffers, if new one is the same as the old one, don't actually change. This fixes the 'last buffer' issue where last buffer ends up being itself.
- Remove duplicate entries in the copy/paste buffer history.
- In multicursor mode, remove all current words from autocompletion corpus.
This is a very stable release. I've been using it daily for a couple months without issue.
- Enable autocomplete for search-and-replace
- Multi-stage undo for autocomplete
- Home/End keys go to start/end of file
- Much improved next/previous word
- More like xterm
- Wraps past end of line
- Correct handling of leading whitespace for autoindent
- Fix paste detection
- Autocomplete -- text-based and triggered by tab
- double-tab brings up a menu
- Used in search prompt as well
- Uses version package to automatically stamp version numbers.
- Much improved text justification
- handles comments and indentation
- Bookmarks -- mark a line of a file and return to it later.
- More flexibilty in fmtcmd
- Can now use code formatter on a select setof lines
- Syntax coloring for git-rebase-todo
- Fix two multicursor index-out-of-range errors
- Corrected space char insertion issue in prompt string
- Speed up multicursor highlighting for large multicursors
- Allow configuration specification of syntax rule which always applies.
- Add "clober=true" and rule will always apply (even inside string or comment).
- MultiCursor navigation modes
- AllTogether: all cursors move in unison
- Column (default): cursor move together horizontally, but not vertically
- Detached: all but main cursor are fixed
- Alt-Z to cycle among the modes
- TOML configuration file
- any of: ~/.sith.toml, ~/.sith/config.toml, or ~/.config/sith.toml
- specify syntax coloring, inhertance, code formatter, etc.
- More multicursor stuff:
- multiple cursors on same line
- insert and delete newlines
- align & unalign multiple cursors in a line (or multiple lines)
- check array bounds on GetRow()
- Better file status awareness
- Status-line display if other open buffers are modified
- Modification status in buffer selection menu
- Checks if any files have changed (on disk) while open
- Can now reload a file from disk
- Save-all and Save-as
- Can create a new file from the open-file menu
- Status bar formatting tweaks
- Make overlapping cursors more visible
- Highlight matching bracket character
- Allow toggling of auto-format-on-save
- Was getting caught in loop when multifile search yielded no results
- Ignore zero-length search matches (regex)
- Prevent index out-of-bounds in search
- Auto-tab improvements:
- Allow manual override of tab detection
- Never allow single-space indent string
- Report gofmt error to user
- Menu improvements:
- Make menu search string easier to see
- Make current buffer the default selection
- Improved syntax-coloring:
- Better interaction between rules
- Backtic quotes for Go
- More C++ extensions
- In paste-from-menu, show concatenated lines, rather than just the first line.
- Improved next/prev word navigation
- prevent condition where array length changes after measuring
- fixed some golint issues
- Choose command from menu
- Align cursors: In multicursor mode, insert spaces before each cursor in order to bring the cursors into alignment.
- Multicursor forward/backward search within a line
- useful, e.g., for aligning cursors a say an '='
- Marked search (and search/replace) work again. Was a problem with the 'outermost' method not working on two cursors.
- Fixed unicode handling
- Try to guess character width in terminal
- Allow user different character display modes: ascii, full unicode,
narrow unicode chars only, or low-order unicode characters
- This is a work-around for terminals which fall back to variable-width fonts for glyphs
- Fix clipped unicode when shifted off edge of screen
- more stability in undo/redo cursor movement
- keep cursor on changed spot
Big refactor. Pushed buffer and cursor stuff into their own sub-packages. File no longer accesses buffer/cursor internals.
Removed all known race conditions.
- In replaceBuffer, truncate end of old buffer to length of new
- This was causing problems when "gofmt" was shortening the file.
- Dup buffer on forced snapshot.
- This was causing issues with undoing auto indent stuff.
- "macro" undo/redo
- Each save marks a state, which can be reverted to.
- Search/replace must advance to end of word when replacing; otherwise, we may match the same word twice.
- must force flush for screen refresh, or else no changes get made
- Truncate prompt histories (search/replace), so they don't get too long
- prev/next word uses any non-alphanum char as a break point
- disable snapshotting on paste
- disable autoindent on paste
- remove trailing whitespace on newline
- run gofmt when saving a go file
- Justify was not handling long last lines. Now it is.
- Justify was not handling lines without spaces. Now it does.
- Justify was not working with short lines. Now it merges short lines together.
- Make screen.Flush() async. Just like editor, place empty struct on a flush chan. This is to prevent race condition during user prompint.
- Search and S&R can now be restricted to a set of lines.
- Unjustify turns a set of lines into a single long line.
- Correctly account for tabs when positioning cursor
- Make nav column stickiness work better
- Prevent syntax coloring from wrapping on long lines
- Truncate long filenames in status bar
- Async notifications work now
- Menu width set by contents
- Catch bad values returned from menu in paste-from-menu
- Justify
- remove trailing whitespace
- maintain blank line after justified text
- turn off multicursor when done
Some good new features (autodetection of indentation, multi-file search/replace, toggle between files, cut/paste history), but one uncovered problem (how to do async notifications).
- Search doesn't match at end of line.
- Use AttrReverse for multicursor, so that it works with new terminal default colors
- Use terminal default colors
- Autodetect indentation, supported by 'tab' and backspace.
- Toggle between two files
- Multi-file search and search/replace
- including "replace all"
- Cut/Paste history
- Detect line endings (\n, \r, etc.)
- display non-\n ending in status bar
- Async save and gofmt, with async notifications
- Page up/down now does half a screen
- Next/prev word now functions more like you would expect it to
- Prompt now clears two spaces beyond writing
- Don't report new file as modified
- Desired column changes for end-of-line, next word, etc.
- only do gofmt on go files
- Added syntax colors for html, javascript, coffeescript
- go-to line number
- if search answer is past last line, scroll up more than the offset
- "smart" start of line
- Conditional build for windows, because suspend doesn't work.
- Don't allow multicursor delete of newlines, otherwise weird stuff happens when trying to delete indents.
- Don't let multicursor insert characters in the first column if other rows are at col > 0. This way we can indent multiple blocks of code separated by blank lines.
- Allow alternate alt-keys. Some terminals don't make alt keys equal to esc. If the character code is in the right range, use c-128 as the alt key code.
- Fix opening of subdirectory files in menu selector. I wasn't prepending the directory path to the file name.
- Toggling off auto indent now toggles off autoindent... I had done everything except the actually turning off of autoindent...
- Multicursor in first column does not add whitespace to blank lines. Now it will add whitespace to blank line only if all lines are blank.
- When selecting a file from the file selection menu, open the file by relative path, not absolute.
- Screen refresh will work now. I now write garbage to the screen, then write spaces to the screen. This should clear it completely...
- Make syntax coloring work on full line, not just the part of the line in the current view.
I am have been using sith to edit sith, most of the time. I'm starting to consider using it as my main editor. Almost. This release fixes a few bugs and introduces a bunch of new features.
- Was crashing in prompt, when navigating empty history
- Search starting at end of line caused crash from slice index out-of-bounds.
- Don't add an empty line to the bottom of the file
- Ctrl-L/K/U: cut line, to end-of-line, to start-of-line in prompt.
- Select file window from menu
- Open new file (with file browser menu)
- go fmt
- syntax coloring
- justify
- Autoindent (toggle-able)
- undo/redo should keep cursor on changed line
Basic text editor functionality is working. Probably many bugs, and an occasional crash. Definitely many, many rough edges. Starting to use sith to write sith, hence the name "bootstrap".