Commit Graph

191 Commits

Author SHA1 Message Date
Justin M. Keyes
1ca5646bb5 Merge pull request #3470 from ZyX-I/pr-3198
XDG base directory specification support
2015-10-25 22:38:23 -04:00
ZyX
8642bad122 shada: Remove SHADA_FILE2 2015-10-23 14:54:11 +03:00
ZyX
a82a059921 option: Add // to the end of default &directory 2015-10-23 14:54:11 +03:00
ZyX
2e750973e9 shada: Move shada file to a new location 2015-10-23 14:54:10 +03:00
ZyX
7a1090eef5 shada: Run set_last_cursor before writing shada file 2015-10-23 14:47:59 +03:00
ZyX
909d79e600 shada: Do not use msgpack_rpc functions for converting data to msgpack
Should protect against #3431
2015-10-08 22:01:13 +03:00
ZyX
9d72f8ebaa shada: Fix shada_removable signature 2015-10-08 22:01:11 +03:00
ZyX
2dd8e05f9f shada: Fix jump/change list merging code
Errors happens under following conditions:

1. Jump/change list is full.
2. New jump/change list item should go between some of the old ones.
2015-10-08 22:01:11 +03:00
ZyX
0a44d504c8 shada(documentation): Fix outdated comments 2015-10-08 22:01:10 +03:00
ZyX
b8e7915596 shada: Make sure that shada-r option correctly ignores case 2015-10-08 22:01:10 +03:00
ZyX
0966e92cf4 shada: When using shada-r normalize option path 2015-10-08 22:01:10 +03:00
ZyX
d283e758ea shada: Fix out-of-bounds array access
It leads to a memory leak as well. May overwrite wms->jumps_size.
2015-10-08 22:01:07 +03:00
ZyX
690d280fa8 shada: Save an allocation when writing local marks 2015-10-08 22:01:06 +03:00
ZyX
29a3e972de shada: Fix v:hlsearch save/restore and do not write empty patterns 2015-10-08 22:01:05 +03:00
ZyX
915a298223 shada,functests: Fix v:hlsearch saving/restoring handling 2015-10-08 22:01:04 +03:00
ZyX
e1dc9ed464 shada: First write temporary file and only then check any permissions
It is not logical that on UNIX permissions can prevent even writing temporary
file, while on other OS it will first write temporary file and then fail during
rename.
2015-10-08 22:01:03 +03:00
ZyX
ceb135a498 shada: Keep uid and gid of the file when working from root
It was the behaviour exhibited by Vim, but it got unintentionally removed. There
is a difference though: Vim runs fchown *before* populating the file, I run it
just before renaming.
2015-10-08 22:01:00 +03:00
ZyX
313b947e3f shada: Refactor code that works with hms.last_hist_entry 2015-10-08 22:00:49 +03:00
ZyX
48ba2f0109 documentation/functests: Replace NeoVim with Neovim 2015-10-08 22:00:49 +03:00
ZyX
0fe11fe70a shada: Add generator key to the header
For use in viminfo→shada converters, plugins that allow editing ShaDa files or
any other software which generates ShaDa files for whatever purpose.
2015-10-08 22:00:49 +03:00
ZyX
127e63fc17 shada: Use same iteration end conditions as with other iterators 2015-10-08 22:00:49 +03:00
ZyX
c57c569000 shada: Also expand file name obtained from &shada option 2015-10-08 22:00:48 +03:00
ZyX
2ba138b2f9 *: Fix problems with clang+asan Release build 2015-10-08 22:00:47 +03:00
ZyX
be45e75026 shada: Refuse to write ShaDa file when ShaDa was disabled 2015-10-08 22:00:46 +03:00
ZyX
d1830e1433 config: Check order and endianess even when cross-compiling 2015-10-08 22:00:45 +03:00
ZyX
0d15b35d49 shada,config: Use CMake to determine endianess and be64toh existence 2015-10-08 22:00:44 +03:00
ZyX
369081d1c4 shada: Fix crash in hmll_insert
This problem made test64 to crash. Description of the bug: when removing entry
from history when removed entry is not the last one it puts one element to
free_entries list, but ignores free entries starting from last_free_element.

Possible solutions:
1. First working: simply populate free_entries list with entries which are still
   free, starting from last_free_element.
2. Better (wastes less CPU): after free_entries list size goes to zero (which is
   the initial value) continue using last_free_element.
3. Even better (less memory): note that element from the list is *only* removed
   before adding another one. So replace free_entries array with one item.

Also renamed last_free_element to last_free_entry: in any case most of the lines
which mention it were altered.
2015-10-08 22:00:43 +03:00
ZyX
9afa45e639 shada: Fix -Wstrict-aliasing gcc error
Also removes theoretically possible unaligned memory access when computing
be64toh() argument.
2015-10-08 22:00:43 +03:00
ZyX
bcb60b0a64 shada: Fix unused variable warning when using Release build 2015-10-08 22:00:42 +03:00
ZyX
597da19777 shada: Fix incompatible pointer types error in non-glibc builds 2015-10-08 22:00:40 +03:00
ZyX
9b53acffb5 shada: Avoid “conditional … depends on initialized value” error
Error can be seen in some errors_spec.lua tests.
2015-10-08 22:00:40 +03:00
ZyX
1889ee329f shada: Allow moving jump index past the end
idx == len + 1 indicates that no jumplist entry is currently used.
2015-10-08 22:00:40 +03:00
ZyX
17c69258a7 shada: Use same merging code for jumps and changes 2015-10-08 22:00:39 +03:00
ZyX
9d8184c65a shada: Move common jump/change merging code into a macros 2015-10-08 22:00:39 +03:00
ZyX
f9ae1caf7e shada: Fix jump list merger code 2015-10-08 22:00:39 +03:00
ZyX
a4b2698a1f shada: Move all default values to an array of ShadaEntry structs 2015-10-08 22:00:39 +03:00
ZyX
0564b30ef5 shada: Fix linter errors 2015-10-08 22:00:38 +03:00
ZyX
74d5084139 shada,functests: Add tests for merging ShaDa data 2015-10-08 22:00:38 +03:00
ZyX
0a334f9d33 shada: Merge changes regardless whether they are from current instance 2015-10-08 22:00:37 +03:00
ZyX
4dc3bc8fc1 shada,functests: Make sure that v:oldfiles list is reset on :rshada! 2015-10-08 22:00:37 +03:00
ZyX
c9963872ef shada: Always use merging when reading jumps and changes 2015-10-08 22:00:36 +03:00
ZyX
4371842bcc shada: Call regtilde when reading last replacement string 2015-10-08 22:00:36 +03:00
ZyX
c5554cbb87 shada: Use hash for searching for history entries 2015-10-08 22:00:35 +03:00
ZyX
bcdda63e3a shada: Allocate all hashes on stack 2015-10-08 22:00:35 +03:00
ZyX
fd4d5521a3 shada,functests: Use special sd_reader function for skipping 2015-10-08 22:00:34 +03:00
ZyX
42fbfd3aee shada: Add warning about removing/renaming temporary file 2015-10-08 22:00:30 +03:00
ZyX
1542fc221e shada,functests: Improve detection of invalid ShaDa files
It appears that large portion of non-ShaDa ASCII text files may be parsed as
a ShaDa file because it is mostly recognized as a sequence of unknown entries:
all ASCII non-control characters are recognized as FIXUINT shada objects, so
text like

    #!/bin/sh

    powerline "$@" 2>&1 | tee -a powerline

(with trailing newline) will be recognized as a correct ShaDa file containing
single unknown entry with type 0x23 (dec 35, '#'), timestamp 0x21 (dec 33, '!')
and length 0x2F (dec 47, '/') without this commit. With it parsing this entry
will fail.
2015-10-08 22:00:29 +03:00
ZyX
fce9590cfc shada: When packing header, pack mapping keys as strings, not binary 2015-10-08 22:00:25 +03:00
ZyX
12a31c70c1 shada,functests: Test compatibility support
For compatibility the following things are done:

1. Items with type greater then greatest type are ignored when reading and
   copied when writing.
2. Registers with unknown name are ignored when reading and blindly copied when
   writing.
3. Registers with unknown type are ignored when reading and merged as usual when
   writing.
4. Local and global marks with unknown names are ignored when reading. When
   writing global marks are blindly copied and local marks are also blindly
   copied, but only if file they are attached to fits in the `'N` limit defined
   in &shada. Unknown local mark’s timestamp is also taken into account when
   calculating which files exactly should fit into this limit.
5. History items with unknown type are ignored when reading and blindly copied
   when writing.
6. Unknown keys found in register, local marks, global marks, changes, jumps and
   search pattern entries are read to additional_data Dictionary and dumped (of
   course, unless any of these elements were not overwritten later). It
   obviously works only for values conversible to Object type.
7. Additional elements found in replacement string and history entries are read
   to additional_elements Array and dumped (same: only if they were not
   overwritten later). Again this works only for elements conversible to Object
   type.
8. Additional elements found in variable entries are simply ignored when
   reading. When writing *new* variables they will be preserved during merging,
   but that’s all. Variable values dumped from current NeoVim session never have
   additional elements.
2015-10-08 22:00:25 +03:00
ZyX
82934e8797 shada: Fix GCC -Wconversion warnings in srni_flags definitions 2015-10-08 22:00:25 +03:00