Diakonos Changelog
------------------

0.9.12

- Fix opening of already-open file

0.9.11

- Fix installation on OSX (re: curses 1.4.5)
- Add GraphQL and Go syntax highlighting

0.9.10

- (neglected to document)

0.9.9

- List main culprits (directories) when fuzzy file finder encounters too many files
- Add support for extension configuration settings
- Make compatible with Ruby 3.2 (re: File.exists?)

0.9.8

- Handle symlink cycles when fuzzy file finding (file open)
- Fix language switch display bug
- Made Diakonos installable via gem

0.9.7
- Added ability to move lines up or down.
- Made compatible with Ruby 2.4.0.
- Handle closure of last buffer.
- Improve efficiency of fuzzy file find.

0.9.6
- Added Vue.js webpack syntax highlighting.
- Uninstallation no longer requires curses library.

0.9.5
- Added support for OSX clipboard.
- Fixed inability to use space when fuzzy file finding.

0.9.4
- Searching within a selection now highlights only within selection, and reports only the number of matches in the selection.
- Can now replace all within selection.
- Basic mouse support added.
- Indentation performance vastly improved.
- Some indentation bugs fixed.
- lang.languagename.indent.triggers added.
- For languages with comment closers, don't duplicate closers.

0.9.3

- Ruby 2.0 or higher now required.
- Tab completion of paths now uses session dir.
- save_backup_files setting (default false).
- Slightly improve render speed of some highlighted languages.
- Fuzzy file find no longer active when current input line is an absolute path (performance improvement).

0.9.2

- Fixed stale session bugs.
- Ruby 2.0.0 compatibility.
- colour.background setting.
- Fuzzy file find: Listing now sorted alphabetically.
- Now use by default the terminal's current/default background colour, including possible transparency.
- Support selection by Shift key with cursor movement.

0.9.1

- Added PKGBUILD to bash filemask.
- Fixed -m switch (open matching files).
- Fixed breakage of grepping through all buffers when some buffers are unnamed.
- Fixed bug that prevented type_character from working in macros.
- Fixed open_file bug caused by empty input.
- Fixed several display bugs.
- Added fuzzy_file_find.recursive option (default true).
- Fixed fuzzy_file_find.max_files.
- Improved efficiency of fuzzy file finder.
- Various updates to default syntax highlighting.

0.9.0

- Added partial UTF-8 support (only characters the same width as US-ASCII).
- Some bug fixes.

0.8.15

- Introduced open_as_first_buffer setting (default false).
- Now shows number of matches found after searching.
- Now shows number of replacements made.
- Now switches to previous buffer when switching to the current buffer by number.
- Last search and readline histories are now saved to sessions.
- Added delete_from function.
- Added key.after configuration directive for history-sensitive key mapping.
- Added select_word function.  Mapped to <Ctrl-space, Ctrl-space> by default.
- Added select_word_another function.  Mapped to <Ctrl-space> after select_word.
- Added search for word, mapped to <Ctrl-Alt-F> by default.
- Undo now opens any just-closed file.
- Fixed find_again behaviour for buffers without search history.

0.8.14

- comment_out now skips blank lines.
- Added renumber_buffer function.  Default <Ctrl-B, number>.
- Can now configure fuzzy_file_find.ignore globs and fuzzy_file_find.max_files.
- go_to_char and go_to_char_previous now support an optional :after argument.
- delete_to_and_from now supports an optional :inclusive argument.
- More effecient marking of undo points when pasting external text or typing fast.
- Added more info about config files in About page.
- Display-related bug fixes and improvements.
- Ruby 1.9.2 is now the minimum Ruby version required for Diakonos.

0.8.13

Contributors: Pistos

- Added different_file argument to cursor_return.
- Remapped different-file cursor_return to <Alt-`> and <Alt-Shift-`>.
- Added KDE4 Klipper support (via dbus).
- Now automatically jumps to first merge conflict (if any) on startup.
- Added find_clip function.
- Now switches to existing buffer when trying to open a file that is already loaded.
- Now supports more formats for opening files at specific line numbers.
- Added keys to switch to buffers 10 through 19.  <Alt-0, Alt-0> through <Alt-0, Alt-9>.
- Numerous minor fixes and improvements.

0.8.12

Contributors: Pistos

- Refactored keying system.
- Introduced keying modes.
- Ruby version now enforced, both at installation and run time.
- Input line can now scroll if input is longer than screen width.
- Added support for session completion in zsh and bash.
- Added select_line.
- Added select_wrapping_block (default key: Alt-space).
- Searching is now restricted to the selected text, if any.
- Added view.non_search_area.format.
- Fixed cursor stack.
- Cursor stack is now global (cross-buffer).
- Simplified switch_to_next_buffer and switch_to_prev_buffer; no more history.
- Added chdir function.
- Various refactorings.
- Various bug fixes.

0.8.11

Contributors: Pistos, dominikh

- Added join_lines_upward (Alt-Shift-J).
- Added one-key selection in buffer list.
- Added support for single line indentation.
- Added extension system.
- Added surround_selection and related functions.
- Added "about" page.
- Various bug fixes and refactorings.

0.8.10

Contributors: Pistos, dominikh

- Ruby version 1.9+ now required.  (Ruby 1.8 support dropped)
- Added go_to_char (Alt-N).
- Added go_to_char_previous (Alt-P).
- shell command now shows executed command on interaction line.
- shell command is now interruptible.
- Klipper synchronization now a single setting (clipboard.external klipper).
- Added xclip support.
- Cursor and viewport positions now saved in and restored from sessions.
- Current buffer number now saved in sessions.
- Fixed context line.
- Textual indication of no shell results now given.
- Added basic pair (bracket) highlighting.
- Added go_to_pair_match (Alt-Shift-[).
- Fixed chmodding in installer.
- Undo and redo now actually compare file contents to set "modified" flag.
- Added support for a special 'all' language, whose formats apply no matter the current language.
- Added dynamic prefix expansion (Alt-E).

0.8.9

Contributors: Pistos, Decklin Foster

- Put interaction timer only on first stale session prompt, not any after that.
- Changed all function names from camelCase to snake_case.
- Added --help-dir switch to installer.
- Fixed some issues with installer.
- Changed delete_to_and_from to always assume given character is the left side character when matching pairs.
- Fixed a line number display bug.
- X windows pasting handled much better now.
- Numerous internal refactorings and reorganizations.

0.8.8

- New installation and uninstallation method: tarball + install.rb.
- Added configuration setting inheritance.
- Added block selection mode (Alt-Shift-M B; Alt-Shift-M N).
- Added line numbering settings.
- Added spawn function.
- Added go_block_previous, go_block_next (Ctrl-PageUp, Ctrl-PageDown).
- Added go_block_outer, go_block_inner (Alt-PageUp, Alt-PageDown).
- "Remove word" functionality (Ctrl-W) added to readline.
- Added find.show_context_after setting.
- Added view.column_markers.
- Added lang.____.indent.not_indented setting.
- Introduced $d shell variable: current buffer's directory.
- $f and $d now expand to absolute paths.
- delete_to and delete_to_and_from can now operate over multiple lines.
- delete_to_and_from can now delete between matching brackets.
- Added git diff (F9).
- Ruby 1.9 support smoothed out.  Ruby 1.8 support being deprecated.
- Support for non-ASCII encodings tentatively confirmed.
- Several bugs fixed.
- Help files updated.

0.8.7

- MRU buffer history added.
- strip_trailing_whitespace_on_save setting added.
- Sessions (named and unnamed) added.
- grep as you type added.
- delete_to added.
- delete_to_and_from added.
- find.return_on_abort setting added.
- Makefile config added.
- Markdown config added.
- Sass config added.
- Now including custom.conf from default diakonos.conf.
- Help files updated.
- Some Ruby 1.9 compatibility introduced.
- Lots of code refactoring done.
- Numerous little adjustments and fixes made.

0.8.6

- Find-as-you-type added.
- Help system added.
- print_mapped_function added.
- User-definable status line variables added.
- :after_open and :after_buffer_switch hooks added.
- Sample script for git branch status variable added.
- comment_out and uncomment functions added.
- comment_string and comment_close_string settings added.
- Added -m (--open-matching) command line argument.
- wrap_paragraph function and wrap_margin setting added for hard wrapping text.
- columnize function and column_delimiter setting added.
- Numerous small fixes, adjustments and refactorings.

0.8.5

- Added 256 colour support.
- Added support for opening files with "filepath:linenumber" syntax.
- Added ability to put %_ in a code closer as the place to position the cursor.
- Code closers can now contain newlines.
- Now closer text is parsed-indented by default.
- Added copy_selection_to_klipper.
- Added cut_selection_to_klipper.
- Added paste_from_klipper.
- Added delete_and_store_line_to_klipper.
- Added delete_to_EOL_to_klipper.
- Added delete_line_to_klipper.
- Added support for regexp match placeholders (\1, \2, etc.) in findAndReplace.
- Added $k shell command variable for klipper contents.
- Added eol_behaviour setting.
- Various minor bug fixes.
- Changed to MIT licence.

0.8.4

- Added joinLines function.
- Added "yes and (s)top" as a find-and-replace option.
- Added '-h' to be synonymous with '--help'.
- Added "Ctrl-Q to quit" to opening message.
- Added close_code feature.
- Added list selection.
- Added buffer selection.
- Added delete_newline_on_delete_to_eol option.
- Added select_block command.
- Slight (8%) display performance improvement.
- Moved source code from svn to github.com.

0.8.3

- Extended ASCII characters (128 to 254) are now typeable.
- Added elsif as a Ruby unindenter.
- Significant internal refactoring.
- First working rubygem.
- Added HAML syntax highlighting.
- Configuration can now be downloaded from the Internet if missing.
- Updated README and changed setup.rb installation method.

0.8.2

- Added ability to use ';' in keychains.
- Added the printKeychain command.
- Augmented default conf to include some KDE 3.5 konsole keychains for common keys.
- Added use_magic_file setting; default to off.
- Added a clipboard/selected diff keybinding.

0.8.1

- Added choice prompt iteration.
- Added a cursor stack for jumping back and forth between recently visited locations in the buffer.
- Introduced cursorReturn command (to move through the cursor stack).
- replaceAll now sets modified flag.
- Speed of many multi-line operations improved.
- Fixed parsedIndent logic in cases of adjacent indenter and unindenter.
- goToLine command now supports a column argument.
- goToLine command's line and column argument are now both optional.
- goToLine also takes a +/- number of lines argument.
- Added case sensitivity parameter to find command; defaults to case-insensitive.
- Added operateOnString, operateOnLines, operateOnEachLine.

0.8.0

- Changed seek behaviour to use regexp group indexes.
- Changed "word seek" in configuration file to seek both word beginnings and word endings.
- Added settings interaction.blink_string, interaction.blink_duration, interaction.choice_delay.
- Choice prompt no longer coerces invalid choices.
- Choice prompt now requires a valid choice if no default given.
- Default choice removed from critical choices.
- Critical choices now ignore user input for interaction.choice_delay seconds.
- Added hooks.
- Added toggleSelection command.
- Added lang.*.indent.using_tabs.
- Fixed some indentation and tab-related bugs.
- Added YAML syntax highlighting.
- Refactored lots of code and began using unit tests.
- Minor default conf additions and modifications.
- Added fstab definitions to default conf.
- Diff now shown before revert prompt.
- Bang line must start with #! to be considered as a bang line (re: bangmasks).
- Added a collapseWhitespace command.

0.7.9

- Changed seek behaviour to not remember last position, but use current cursor
position instead.
- File is now checked for external modifications, prompting for load.
- Added -e, --execute option which eval's Ruby code (including Diakonos commands) after startup.
- Paging up and down now respects the y cursor margin.
- Paging up and down now keeps cursor at same screen coordinates.
- Settings can now be altered for the duration of the editing session.
(new commands: changeSessionSetting, toggleSessionSetting)

0.7.8

- Included package.rb and setup.rb for installation.
- Now looks for conf in more directories.
- Updated README.
- Added pasteShellResult function.
- Added $c shell variable: file containing clipboard contents.
- Added $s shell variable: file containing selected text.
- Fixed buffer switching to use a proper stack.
- Added input line history.
- Added Ctrl-K to clear input line.

0.7.7

- Fixed various find-related bugs.
- Added the command deleteAndStoreLine, which accumulates cut lines into
the same clipboard clip.

0.7.6

- Added some crontab highlighting to the default configuration file.
- Added "delete character" functionality to input line.
- Fixed backspace functionality of input line.

0.7.5

- Fixed bug which stopped Diakonos from completing refresh operations when
the context line is disabled.
- Added execute command, which executes a command in a subshell, but only
displays the return code (ignores stdout).
- Added a $F parameter for shell and execute commands.  Space-separated list
of all current buffer filenames.
- Added a $i parameter for shell and execute commands.  Substitute a string
obtained from user.
- /usr/share/diakonos is now checked for a config file, if
/usr/local/share/diakonos is not found.
- findAgain command now also retains memory across buffers, if needed.

0.7.4

- Prevent attempts to open non-files.
- Fixed saveFileAs bug which saved the wrong file when tab-completion was used
in the filename prompt.
- Fixed bug in tab completion: Directories are now completed properly and their
contents are listed.

0.7.3

- Fixed function-argument duplication bug which occurs after Help is consulted.
- Updated default conf file to include CSS and modifications to "conf" format
and the ruby format.
- Added display debug logging.
- Fixed off-screen drawing bug.
- Fixed on-startup drawing bug.
- Minor conf file additions and changes, including PHP and PL/pgSQL support.

0.7.2

- Fixed a drawing bug to do with long lines and screens wider than 80
columns.
- Added support for specifying any numeric keycode as a keystroke.
- Added a suspend command, to suspend the Diakonos process/job to background
and return to the shell.
- Altered drawing code a bit re: the shell and suspend commands.
- Fixed "view.jump.* 0" bug.
- Fixed copy/cut bug for selections starting or ending in columns besides
the left-most column.

0.7.1

- The openFile command now uses /usr/bin/file (if available) to check if the
  file is readable (text), prompting to confirm open if it isn't.
- Fixed popTag bug where popping from an empty stack caused an exception.
- The seek command now no longer (incorrectly) cancels text selection.
- Drawing bugs fixed (to do with illegal off-screen drawing).
- Added the ability to use \n in searches, to match across lines.

0.7.0

- Adjusted buffer management system so that, internally, absolute file paths
  are used.
- Added limited (line-number-based) ctags support.  Commands: goToTag,
  goToTagUnderCursor, popTag.
- Fixed revert command bug.
- Added an evaluate command, which lets you run any Diakonos command.
- Fixed display bug where Diakonos errors (Ruby exceptions) would ruin the
  curses display.
- Malformed regular expressions given for regexp searching are now searched
  for as literal text, instead of just throwing an error.
- Keychains that have no assignment are now shown in full on the interaction
  line.
- Error message for some caught exceptions now includes a listing of probable
  causes.

0.6.13

- Fixed the bug where searching backwards from the start of a line will cause
  the search to start from the end of the line, instead of from the end of the
  next line up.
- Added a "seek" command, which is a sort of silent find.  Used for
  implementing features like go to next word and previous word.
- Adjusted default conf file to include alternate ANSI sequences for function
  keys.
- Context line truncation now omits the more proximate code, not the less
  proximate code.
