Commit Graph

767 Commits

Author SHA1 Message Date
Maxime Coste
d571c207e6 Make version available through $kak_version and debug info 2018-04-09 17:06:02 +10:00
Maxime Coste
57baad4afd Make FaceRegistry scoped
set-face now takes a scope argument, and faces can be overridden on
a buffer or window basis.

colorscheme apply on global scope, which should be good enough for
now.

Fixes #1411
2018-04-07 16:27:50 +10:00
Maxime Coste
49c52b025f Remove contains_that and use any_of to be closer to the c++ stdlib 2018-03-25 16:47:19 +11:00
Maxime Coste
beb2cef7f9 Document rotate selection breaking change in startup message 2018-03-25 11:39:26 +11:00
Maxime Coste
a732037b53 Support % in path option to mean current buffer directory
In the end, % is not that painful to work with as its only set seldomly,
and we usually dont need to use expansion at the same time. Moreover, it
just requires a single \ to be escaped.

Fixes #1562
2018-03-23 08:22:34 +11:00
Maxime Coste
db7b43acd5 Restore client name after converting to client
When Kakoune forked the sever to background, the newly converted
to client process (the original client/server process) was not
preserving its previous client name.
2018-03-23 07:36:18 +11:00
Maxime Coste
a480e566dc ranges: Add transform overload taking directly a pointer to member
This overload will forward to the general transform implementation
using std::mem_fn to generate a callable.
2018-03-13 14:24:03 +11:00
Maxime Coste
4584ecac77 Move WORD text object to <a-w>
It improves consistency and it looked like there was support for that
change on github.
Fixes #1861
2018-03-10 00:25:19 +11:00
Delapouite
c4eb4438d2 Remove <scope> from user-modes commands 2018-03-02 09:28:27 +01:00
Maxime Coste
7a54c0edfe Update status message with new breaking changes 2018-03-01 15:36:25 +11:00
Maxime Coste
171e787063 Update startup message to notify about h/l change 2018-02-24 23:16:39 +11:00
aver-d
da009b0ef5 Fix typos in C++ string literals
informations, dont, incrementaly, alignement
2018-02-22 20:28:01 +00:00
Maxime Coste
dc30b0e6d6 Do not support general commands in filter mode 2018-02-18 14:54:21 +11:00
Maxime Coste
5924694bda ShellManager: init from a static list of env vars
No need to go through a static list and then copy them one by
one in a vector.
2018-02-18 14:52:29 +11:00
Maxime Coste
10c6c59a26 Buffer: avoid expensive option flattening in on_registred with NoHooks 2018-02-18 14:48:24 +11:00
Maxime Coste
81eb2ee428 Do not strip whitespaces with '*'
Stripping whitespaces there is a failed experiment as it breaks the
ability to use multi-selections consistently: Using '*' followed by some
`N` to add following matches, we end up with mismatched selections
due to whitespace stripping the original selection still contains
whitespaces where all the new ones do not. Once we get to this state,
most selection commands will give different results for the initial
selection and the other ones, breaking predictible multiselection use,
one of the cornerstones of Kakoune editing model.
2018-01-31 09:31:18 +11:00
Maxime Coste
299e22ca7c Do not block when waiting for next event if we have pending input
Handle next event should never block if we have already accumulated
input that we want to process. As we can accumulate new input in
lots of places (everytime we run a shell process for example, we
might end up reading input keys. That can be triggered during the
mode line generation which takes place during display of the window)

Fixes #1804
2018-01-21 12:00:40 +11:00
Maxime Coste
d22c989984 Rename InputModeChange hook to ModeChange
InputModeChange is a bit long to type and its pretty clear in Kakoune
that "Mode" means "Input mode", so use a shorter and as clear name.
2018-01-21 10:34:09 +11:00
Maxime Coste
07dfcd336d Fallback to getpwuid in the unlikely case $HOME is underfined
Add a homedir() helper function, and document the $kak_config
env var.
2018-01-20 11:19:23 +11:00
Maxime Coste
e7cbf38af7 Introduce a $kak_config env var containing the Kakoune user config dir
Makes it easier for users who want to locate their kakrc file, and
does not require to go through shell expansion to get it as
"${XDG_CONFIG_DIR:-${HOME}/.config}/kak"

Fixes #1740
2018-01-19 10:05:08 +11:00
Maxime Coste
eeacb8b5a8 Use the _str and _sv string literals more often 2018-01-18 09:00:54 +11:00
Maxime Coste
49e028b847 Add information on InputModeChange hook in the startup message 2017-12-29 10:00:45 +11:00
Delapouite
74898120ed Add session name filtering for KakBegin hook 2017-12-21 22:22:33 +01:00
Maxime Coste
274367116a Replace uses of getpwuid which is incompatible with static linking
Introduce a get_user_name function which parses '/etc/passwd' to find
the username associated with a user id.
2017-12-04 15:19:57 +08:00
Maxime Coste
208f9641ef Remote: when converting to client, suspend *after* connecting
Also, do not quit server while there is a connection being accepted
Fixes #1690
2017-11-12 22:28:13 +08:00
Maxime Coste
7f51e51fcb Introduce matching_pairs option that controls the pairs used by m 2017-11-04 15:53:53 +08:00
Maxime Coste
25dac6b24e Document the regex impl switch in the startup message 2017-11-01 14:18:13 +08:00
Maxime Coste
7064e890f5 Update breaking changes message 2017-10-28 13:43:04 +08:00
Maxime Coste
d1b9c24afc Make Server outlive buffer manager
Fixes crashes when trying to access the server to get the session
on hooks run during destruction of other managers.

Fixes #1622
2017-10-10 10:49:30 +08:00
Delapouite
d03858280a Add client_list var 2017-10-05 16:41:36 +02:00
Maxime Coste
76f072a786 Removing the local client due to SIGHUP is not graceful
That means we will now backup modified buffers if that client was
the last.

Should improve things for #1590
2017-09-27 11:08:55 +08:00
Maxime Coste
3aaf646eda Fix compilation 2017-09-18 10:30:21 +09:00
Maxime Coste
3d79395e63 Document custom text object move in breaking changes 2017-09-18 10:06:41 +09:00
Maxime Coste
772f85b883 Expose the character under the cursor as $kak_cursor_char_value
Fixes #142
2017-09-12 12:45:39 +08:00
Maxime Coste
ba71f209af Fork server to background when the client/server process receives SIGHUP
Avoid losing the whole session when closing the terminal emulator of
the client/server process, only the client will be removed and the
server will be forked.
2017-09-11 14:21:14 +08:00
Maxime Coste
8e3e5b10c1 Merge remote-tracking branch 'Franciman/exposed_history_id' 2017-09-06 11:55:00 +08:00
Francesco Magliocca
d4fa94c356 Rename env variable kak_curr_history_id to kak_history_id 2017-09-04 16:41:27 +02:00
Francesco Magliocca
b3ac4d86b6 Add current history id to env variables 2017-09-02 12:14:19 +02:00
Maxime Coste
ab6a999431 Rename containers.hh to ranges.hh (and Container to Range) 2017-08-29 15:23:03 +07:00
Maxime Coste
e80b36b495 Expose client pid as $kak_client_pid
As requested in #1414
2017-08-28 13:12:45 +07:00
Maxime Coste
f7bed9eb18 Support specifying an exit status on quit commands
The current client exit status can be specified as an optional
parameter, is nothing is given the exit status will be 0.

Fixes #1230
2017-08-23 13:33:13 +07:00
Maxime Coste
6176a19520 Update startup info
Remove old breaking changes, add selection extending behaviour change.
2017-08-23 07:00:37 +07:00
Maxime Coste
7a79cbbc81 Migrate code to c++14 2017-07-19 08:47:14 +02:00
Maxime Coste
7389e37b4b Small startup message formatting tweak 2017-07-13 00:31:17 +09:00
Maxime Coste
620e718087 Formatting tweak 2017-06-29 09:31:02 +01:00
Maxime Coste
9bbab690ba Merge remote-tracking branch 'danr/Expose-last-entered-command-in-register' 2017-06-29 07:29:32 +01:00
Maxime Coste
f41d78083a Use the extra_word_chars option in word based normal commands
the completion_extra_word_chars is now gone, superseeded by
extra_word_chars that gets used both for completion and for normal mode.

Fixes #1304
2017-06-26 15:28:41 +01:00
Maxime Coste
268c214f56 Change completion_extra_word_char to be a list of codepoints instead of a string 2017-06-26 14:39:17 +01:00
Maxime Coste
dc1b039282 Add ctags command renaming info in the startup message 2017-06-23 10:23:26 +01:00
Maxime Coste
5fbaa2c955 Update startup info message
Remove some old breaking changes, add the lint/make/grep command
changes.
2017-06-17 08:47:14 +01:00
Maxime Coste
ab56be090a minor style tweak 2017-06-12 06:12:10 +01:00
Maxime Coste
250886a9e1 Use read_fd to get pipe command from stdin instead of ad-hoc code
read_fd will also now throw on read error instead of just returning
the data read so far as if nothing failed.
2017-06-12 05:21:34 +01:00
Maxime Coste
2b5fafa909 Do not show startup info when piping into kak
Fixes #1340
2017-06-08 10:03:07 +01:00
Delapouite
09daaa8b3a Expose kak_buf_line_count 2017-06-06 14:29:06 +02:00
Maxime Coste
96813ee824 Document the * behaviour change in the startup message 2017-06-03 18:17:44 +01:00
Maxime Coste
58dfd76dca Small formatting fix 2017-06-03 14:02:43 +01:00
Maxime Coste
b9080d8b2c Document line-flags -> line-specs and update-option in breaking changes 2017-05-27 06:18:02 +01:00
Dan Rosén
b1735ae76e Expose last entered command in register : 2017-05-25 21:48:41 +02:00
Maxime Coste
df4eadd2f5 Merge remote-tracking branch 'danr/Add-modified-value-if-buffer-has-modifications-not-saved' 2017-05-21 06:43:19 +01:00
Maxime Coste
b440d9f537 Change <a-z>/<a-Z> to combine selections instead of appending 2017-05-20 10:31:49 +01:00
Dan Rosén
625e7f8249 Add modified value if buffer has modifications not saved
Closes #1386
2017-05-18 17:39:30 +02:00
Maxime Coste
0229baf6ba Add range-faces -> range-specs rename to the breaking changes message 2017-05-17 19:42:23 +01:00
Maxime Coste
3a0d9481ac Add the -E switch for server initialization commands
Fixes #1361
2017-05-13 11:05:09 +01:00
Maxime Coste
30e6387071 Assume filename passed to write_buffer_to_file is already parsed 2017-04-20 09:55:56 +01:00
Maxime Coste
91bfd714e4 Place hardware terminal cursor at the current main cursor/prompt cursor position
Fixes #1318
Also fixes https://gitlab.com/gnachman/iterm2/issues/5408
2017-04-12 10:39:17 +01:00
Maxime Coste
112bd156e4 Merge remote-tracking branch 'lenormf/fix-filter-backup-suffix' 2017-04-10 21:39:24 +01:00
Frank LENORMAND
16068321c1 src: Support the -help flag
This commit allows a help message to be printed when a `-help` flag is
passed to the editor, which will subsequently quit after a summary and a
description of all the flags available have been displayed.

The GNU convention (passing a single `--help` argument to the program)
is also supported, although undocumented.

The man page also now documents the `+:` argument, although unrelated to
the original changeset.
2017-04-10 22:23:30 +03:00
Frank LENORMAND
6b8587000b src: Introduce a -i suffix flag for filter backups
This commit allows the user to chose to backup the files on which a
filter has been run, by specifying a suffix for the backup file. The
former implementation always backed up the files with a hardcoded
".kak-bak" suffix.

When no suffix is specified on the command line, the files are not
saved.

Fixes #1288
2017-03-23 08:50:43 +03:00
Maxime Coste
8b1078e510 Use a HashMap to store the normal mode keymap 2017-03-16 23:40:38 +00:00
Maxime Coste
e44f95820e Fixes some clang-tidy warning and add a few missing meta.hh include 2017-03-16 23:34:02 +00:00
Maxime Coste
5f7464d90d Try to clean up option include a bit 2017-03-16 09:57:39 +00:00
Maxime Coste
db9b863222 Migrate WithBitOps template specialization to with_bit_ops function
This way we dont depend on knowing the base template to enable bit ops
on an enum type.
2017-03-15 18:00:58 +00:00
Maxime Coste
5705b6c6f9 The canonical name for the documentation command is :doc, not :help 2017-03-15 11:49:00 +00:00
Dan Rosén
5a403a9611 Increase modelinefmt configuration power 2017-03-11 21:43:51 +01:00
Maxime Coste
34da4bf08b Add dilbert in the ui_options doctring 2017-03-10 12:09:09 +00:00
Maxime Coste
a0b42323ed Add a -debug flag to :edit to set the buffer as debug data
As for the *debug* buffer, buffers with the debug flag wont get
used for cycling through buffer, or word completion.
2017-03-08 19:33:25 +00:00
Maxime Coste
d9abc2a156 Refactor StringData and StringRegistry to remove need for purging
Purging unused strings could get pretty expensive with a lot of
interned strings as it requiered iterating on all of them. Use
a flag on the refcount of the StringData to see if the string
is interned, and notify the StringRegistry in this case.

This should improve the speed of editing big files with many words,
such as the one described in #1195
2017-02-23 00:03:32 +00:00
Maxime Coste
fe2d0fab71 Fix performance of word completion with many different selections
Fixes #1228
2017-02-20 19:28:02 +00:00
Maxime Coste
9fdbcf761d Display an info box on startup with recent breaking changes 2017-02-19 13:59:44 +00:00
Maxime Coste
9e0f085b86 Reorganize code in main.cc 2017-02-14 13:54:45 +00:00
Maxime Coste
d470bd2cc9 Make numeric registers setable
Fixes #1214
2017-02-14 00:02:01 +00:00
Eike Plack
01eceebf75 Support the vim behaviour for +line syntax
* Ommitting the linenumber will move to buffer end
2017-01-31 19:44:27 +01:00
Maxime Coste
753f3a50d1 Make StringView and unit types trivial types 2017-01-29 13:49:45 +00:00
Maxime Coste
e8ee8c23d8 Support the +line syntax for clients as well.
Fix a crash on daemon quit as well.
2017-01-21 12:17:49 +00:00
Maxime Coste
dcd8f6ef01 Apply clang-tidy modernize to the codebase 2017-01-08 22:39:01 +00:00
Maxime Coste
e42881fa38 Fix remaining uses of hardcoded /tmp to get the socket paths
Fixes #1097
2017-01-01 13:10:08 +00:00
Maxime Coste
190a04d6c8 Add a ncurses_change_colors option that can disable color palette change
Closes #1057
2016-12-30 07:01:13 +00:00
Maxime Coste
3a6167ae62 Merge branch 'master' of git://github.com/akkartik/kakoune 2016-12-20 20:15:54 +00:00
Kartik K. Agaram
0a21426d58 Remain silent on exit without error. 2016-12-20 10:11:13 -08:00
Maxime Coste
c2305e03b3 Small formatting tweak 2016-12-20 12:57:48 +00:00
Maxime Coste
fdb2d83ea1 Ensure we have an EOL after error messages 2016-12-20 12:49:05 +00:00
Maxime Coste
b7a0aa7546 Ensure we return 0 on exit from graceful disconnection
Fixes #1042
2016-12-20 10:34:48 +00:00
Maxime Coste
e2fae522e5 Small include fix 2016-12-03 13:18:11 +00:00
Maxime Coste
a65e8142f3 Rework handling of initial coordinates so that init commands can change them
Fixes #944
2016-12-01 20:55:20 +00:00
Maxime Coste
3a81260917 Simplify greatly UI input handling
This round trip through an input callback expected to call
is_key_available and get_key was overcomplicated, just send the
keys as they arrive, the client is already buffering due to urgent
event mode.
2016-11-29 21:59:36 +00:00
Maxime Coste
0dff8a7d3f Small remote code cleanup 2016-11-29 19:52:57 +00:00
Maxime Coste
12856066b1 Cleanup include dependencies a bit 2016-11-28 23:58:08 +00:00
Maxime Coste
c2989704d5 More correct handling of SIGHUP while suspended
Fixes #833
2016-11-14 00:49:34 +00:00
Maxime Coste
e318190a59 Small formatting tweak 2016-10-17 18:37:05 +01:00
Maxime Coste
5440d31f99 Only create a default *scratch* when we dont have any non debug buffers
Fixes #852
Closes #856
2016-10-11 00:45:05 +01:00
Maxime Coste
780a4605fa More transform(...) filter cleanup using mem_fn when possible 2016-10-11 00:32:40 +01:00
Maxime Coste
006be63a32 Ensure local client is destroyed before we fork the server to background
The recent change that introduced defered client deletion made the local
client destruction happens too late, putting the terminal in a bad state
when we resumed the process as client only.
2016-10-06 23:35:32 +01:00
Maxime Coste
35559b65dd Support codepoints of variable width
Add a ColumnCount type and use it in place of CharCount whenever
more appropriate, take column size of codepoints into account for
vertical movements and docstring wrapping.

Fixes #811
2016-10-01 13:45:00 +01:00
Maxime Coste
c152fbe3b6 Make idle timeout and filesystem check timeout configurable 2016-09-18 13:47:22 +01:00
Maxime Coste
c63c92cbf7 Support kill session inside init command 2016-09-06 22:46:27 +01:00
Maxime Coste
4fc20b8d7d Rework client quitting and handling of remote errors
Client quitting no longer immediately unwinds, client is just pushed
for deletion until we get back to the main loop, similarly to what
happens for buffer and window deletion.
2016-09-04 17:56:07 +01:00
Maxime Coste
3f0415c765 Introduce the 'completion_extra_word_chars' option
This string option is used to get all the additional characters
that should be considered as "word" character for the purpose of
insert mode completion.

Fixes #758
2016-08-24 23:47:09 +01:00
Maxime Coste
f73e89a716 Add information of types of options 2016-08-06 09:05:50 +01:00
Maxime Coste
373c21e875 Preserve selections when converting to client mode
Fixes #742
2016-08-05 08:16:43 +01:00
Maxime Coste
003cb8dfea Merge remote-tracking branch 'lenormf/readonly-mode' 2016-07-24 21:21:49 +01:00
Frank LENORMAND
ef82c496eb Use a more appropriate error message with unlogical flag combinations 2016-07-23 10:03:25 +03:00
Frank LENORMAND
3c91f711fc Warn the user when flag combinations don't make sense 2016-07-23 10:03:25 +03:00
Frank LENORMAND
8a4596bea9 Implement a readonly mode
This commit introduces the `readonly` variable as well as the `-ro`
command line option which prevent buffers from being overwritten on
disk when the `write` command is used without arguments. Some buffers
can selectively be put in readonly mode by setting the `readonly`
variable on the `buffer` scope, the `global` mode will affect all
buffers (even those who will be open subsequently), using the `window`
scope will have no effect.

Closes #685
2016-07-23 10:03:21 +03:00
Maxime Coste
530ecf212e Ensure buffer create/close hooks are run at appropriate times
They used to be ran before the buffer was added to the buffer list
we now run them afterwards.
2016-07-10 16:34:16 +01:00
Maxime Coste
3059b3a253 Extract ui type parsing to its own function 2016-06-11 13:22:24 +01:00
Maxime Coste
c73e64882c Check session valididty on kak -l and support kak -clear for clearing the dead ones
Fixes #689
2016-06-06 19:28:56 +01:00
Maxime Coste
1834a67b87 Go back to libc locale and use c_regex_traits
Unfortunately, cygwin does not support c++ locales.
2016-05-19 21:45:23 +01:00
Maxime Coste
1788126f38 BufferManager now owns the Buffers instead of registering them 2016-05-14 08:33:50 +01:00
Maxime Coste
ba421e45f7 Delay window deletion until we get back to main loop
Avoid WinResize hooks while redrawing, ensure window resize only
take place while handling user input.

Fixes #672
2016-05-14 08:17:52 +01:00
Maxime Coste
4c8089009d Tolerate failure in setting current locale 2016-05-12 00:00:03 +01:00
Maxime Coste
dd41a46c4c Correctly set c++ locale on startup
Fixes #595
2016-05-10 22:06:02 +01:00
Maxime Coste
e3cddf3783 Fix use of potentially null local_client
Fixes #667
2016-05-09 13:56:15 +01:00
Maxime Coste
815924e4da Merge remote-tracking branch 'lenormf/buffer-padding' 2016-04-11 13:44:10 +01:00
Maxime Coste
d4b1138e2f Use a specific startup_error exception type to get a nicer message
Fixes #424
2016-04-09 09:13:35 +01:00
Maxime Coste
c768ff9b6f Small style tweak, we know buffer begin coord is always {0,0} 2016-04-09 01:08:38 +01:00
Paul d'Hubert
eb8ad56c87 expose cursor_byte_offset env variable
Update README.asciidoc
2016-04-08 13:29:31 +02:00
Maxime Coste
8badcdc0d5 Make DynamicRegister statically dispatch to its function 2016-03-31 09:17:02 +01:00
Maxime Coste
6739c5047e Support an optional column param with the +<line>[:<column>] syntax 2016-03-15 13:21:28 +00:00
Maxime Coste
b014093c97 Quit on SIGINT when using a DummyUI 2016-03-15 00:24:42 +00:00
Maxime Coste
9e15181dc9 Rework container helpers, use pipe syntax and cleanup implementation
use 'container | filter(func) | reverse() | transform(func)' instead
of 'transform(reverse(filter(container), func), func)' to express
container transformations.
2016-03-08 21:35:56 +00:00
Maxime Coste
4d4f18a78a Select ui at launch through the -ui <ui_name> switch 2016-03-07 21:44:50 +00:00
Maxime Coste
f1fb2114da Handle <c-l> redrawing on the server side
That way we can force a redraw at any moment, including during
batch execution.
2016-03-07 21:44:50 +00:00
Maxime Coste
433940485f Initial, WIP json ui implementation
The JsonUI writes json rpc user interface commands on stdout and
reads json rpc requests on stdin.
2016-03-07 21:44:50 +00:00
Maxime Coste
52525a156f Remove complete_prefix option and behaviour
Now that we use subsequence based completion almost everywhere,
completing the common prefix does not make sense anymore.
2016-03-07 20:17:41 +00:00
Maxime Coste
134be9a1f6 Just write to stderr when exceptions are uncaught 2016-03-03 14:05:07 +00:00
Maxime Coste
b5b5b82c70 destroy buffer manager first but clear clients before destroying buffers.
Fixes #612
2016-03-03 14:05:07 +00:00
Maxime Coste
67849f2db7 BufferManager should outlive ClientManager in the end
If not, clients end up keeping references on a buffer while
it it being deleted.
2016-03-02 20:27:47 +00:00
Maxime Coste
13d039c228 Ensure the BufferManager is destroyed first so that buffer hooks can access other managers
Fixes #612
2016-03-02 13:12:14 +00:00
Maxime Coste
3987463e75 Remove direct access to ui, go through client
Client can now update menu/info positions when the window move
around.
2016-02-27 17:23:13 +00:00
Frank LENORMAND
ac08a1fa75 Format the options' documentation properly 2016-02-17 16:02:05 +02:00
Frank LENORMAND
f408cf7ed3 Allow users to chose how the buffers are padded 2016-02-17 15:48:09 +02:00
Maxime Coste
0fc0702983 indentwidth can actually take 0 as a parameter 2016-02-12 13:53:54 +00:00
Maxime Coste
986c91a835 Support validating some options values before setting them
Fixes #583
2016-02-11 22:07:18 +00:00
Maxime Coste
032219b119 Rename set_signal_wrapper to set_signal_handler and tweak SignalHandler def 2016-01-10 20:46:15 +00:00
Maxime Coste
2f8612f8e7 Merge remote-tracking branch 'danlrobertson/safe_signal' 2016-01-10 03:00:25 +00:00
Maxime Coste
c39a4d5879 Add a static_words str-list option always considered for word completion
Fixes #313
2015-12-27 08:53:31 +00:00
Maxime Coste
978e8d18b9 Center the initial target line 2015-12-25 07:17:54 +00:00
Maxime Coste
a051250204 Do not try to access the local client if it was not succesfully created 2015-12-24 04:09:30 +00:00
Maxime Coste
4d230e4051 Support passing +<line number> parameter to specify the first buffer target line on open
Fixes #336
2015-12-23 22:56:33 +00:00
Daniel Robertson
f5f7bc80e8 Add a signal function using sigaction
Use a wrapper for sigaction in place of signal to ensure that the
SA_RESTART flag is set for all signals used.

Signed-off-by: Daniel Robertson <danlrobertson89@gmail.com>
2015-12-23 14:03:31 -05:00