Commit graph

155 commits

Author SHA1 Message Date
Csonka Mihaly
ec0bbf4e76 Fix remove dir panicing when the dir does not exist, but when the purpose is to make place for a replacement. 2020-03-22 23:50:44 +01:00
Csonka Mihaly
09dfc32d2c Fix "file an issue" error 2020-03-22 23:38:06 +01:00
Csonka Mihaly
4bc9b00a52 Add wrapper error telling the user to file an issue 2020-03-22 23:32:03 +01:00
Csonka Mihaly
a625b0aea0 Fix welcome command 2020-03-22 22:54:02 +01:00
Csonka Mihaly
4bfc2e5a6c Add BashSpawnError 2020-03-22 22:16:30 +01:00
Csonka Mihaly
5d2c2aca80 Add UnreadableDir error. 2020-03-22 21:08:04 +01:00
Csonka Mihaly
11575a8443 Restructure error module 2020-03-22 20:47:13 +01:00
Csonka Mihaly
4bbccc2cfa Add InvalidPath error 2020-03-22 20:14:10 +01:00
Csonka Mihaly
5c44bba2bf Fix error message for absense of cheatsheet dir 2020-03-22 17:33:23 +01:00
Csonka Mihaly
800a7e61a7 Added backticks around variable data in error info. Less ambiguous when input is empty. 2020-03-22 16:31:49 +01:00
Csonka Mihaly
3c5d5aba98 Fix parsing of paths param with trailing colon to not yield an empty item + add test for this 2020-03-22 02:53:40 +01:00
Csonka Mihaly
a4c30d7439 Make shell handler return an anyhow::Error. 2020-03-22 01:54:04 +01:00
Csonka Mihaly
07509ddcd7 Add error context to parser. 2020-03-22 01:51:38 +01:00
Csonka Mihaly
c1c5910cf4 Make error info for cheatsheet paths acquisition more verbose. 2020-03-21 19:35:54 +01:00
Csonka Mihaly
1c22e11e09 Add error info to fzf. 2020-03-21 19:01:58 +01:00
Csonka Mihaly
a4e2311263 Add error info to filesystem operations. 2020-03-21 17:43:13 +01:00
Csonka Mihaly
ff264735b9 Add error info to core flow. 2020-03-21 15:56:03 +01:00
Csonka Mihaly
807c3a35a5 Make all regexes static. 2020-03-21 03:22:11 +01:00
Csonka Mihaly
0785f9cf30 Add error info for invalid regex. 2020-03-21 02:52:27 +01:00
Csonka Mihaly
d371300fac Add error info when getting terminal dimensions. 2020-03-21 02:49:36 +01:00
Csonka Mihaly
77d0de839e Fix error message when spawning bash in func. 2020-03-21 02:37:54 +01:00
Csonka Mihaly
a209dd94ca Add error info for welcome handling. 2020-03-21 02:19:06 +01:00
Csonka Mihaly
54fec8728e Add error context to ad-hoc functions. 2020-03-21 02:12:39 +01:00
Csonka Mihaly
0a84a0a2c9 Add error info to preview::extract_elements 2020-03-21 01:43:11 +01:00
Csonka Mihaly
f1182279a9 Add context to possible errors for the repo subcommand. 2020-03-21 01:34:20 +01:00
Csonka Mihaly
1d33211c45 Add context for errors when browsing featured cheatsheets. 2020-03-20 23:24:43 +01:00
densa-inc
c12c2abc69 fixed issue of terminal programs like fzf not recognizing stdin as terminal (#267) 2020-03-20 15:33:36 +01:00
Denis Isidoro
10f0219792
Forward many more parameters to fzf after --- (#294) 2020-03-19 22:01:50 -03:00
Denis Isidoro
64045e32ca
Remove need for lifetime on FzfOpts (#293) 2020-03-19 20:50:45 -03:00
Denis Isidoro
73cd346c1b
fzf-overrides: no need for leading space 2020-03-19 15:27:34 -03:00
Denis Isidoro
2ca1d8fc85
Fix --multi with --column + refactors (#290) 2020-03-19 09:19:50 -03:00
Denis Isidoro
84e28e7885
Small refactors (#289) 2020-03-18 12:29:29 -03:00
Denis Isidoro
a0bba94db3
Minor fixes (#285) 2020-03-18 08:38:13 -03:00
Kevin K
a51a54dbac
Uses a hashset to de-duplicate results
This creates a `HashSet<u64>` using FNV Hashing, because it's much
faster than Rust's default SIP hash and this isn't used for anything
that needs to be cyptographically secure. It also allows us to keep a
hashset of 64bit numbers, instead of Strings or string slices thus
reducing memory consumption.

In unscientific benchmarks of ~5,200 `.cheat` lines containing about
`2,600` duplicate lines there was no noticable increase in memory
consumption (benchmarking time is harder since you wait for human
input), both master (HEAD b78903a9d4) and this commit used 10.8mb max
RSS.

To attempt to measure time (and again max RSS) running master against
this commit using the command `navi --print --path dups_folder/ best "git tag"`
resulted in a *decrease* of memory consumption by about 200k, and no
noticable time increase.

Closes #283
2020-03-17 21:39:00 -04:00
Denis Isidoro
b49ee6a491
Make --allow-extra default (#281) 2020-03-17 12:39:38 -03:00
Denis Isidoro
0b91a374fe
Add navi repo browse (#280) 2020-03-16 22:56:47 -03:00
Denis Isidoro
3f66614818 Bump 2020-03-16 10:22:37 -03:00
Denis Isidoro
7eccec0a51 linting 2020-03-16 08:14:02 -03:00
Denis Isidoro
dd6c54f089 wip 2020-03-16 08:13:55 -03:00
Denis Isidoro
ebcdb8d162 linting 2020-03-16 08:02:52 -03:00
Denis Isidoro
fcfa7843fc wip 2020-03-16 08:02:23 -03:00
Denis Isidoro
92cf10d10a
Allow repos with @ (#272) 2020-03-15 22:13:18 -03:00
Denis Isidoro
07134996e4
Use data_dir for cheats 2020-03-15 20:26:48 -03:00
Denis Isidoro
de16846aba
Initial cheat repo support (#258)
This PR makes navi stop bundling `.cheat` files and makes it able to download from repos on GitHub, using a standardized config directory.

- it fixes #233 and #237
- it makes #52, #256 and #257 much easier to implement
- it makes #40 harder to implement
- it's an alternate solution to #140 
- it's influenced by #238 and #254.

This PR ended up being much bigger than I would like so if you could review only this description it would be already very nice!

When navi is started for the first time, a welcome cheatsheet is shown:
![Screenshot at 2020-03-15 10-20-04](https://user-images.githubusercontent.com/3226564/76702240-19fffd80-66a7-11ea-884f-97c565bc1ead.png)

If the user selects the first option, the user is prompted to download `.cheat`s from https://github.com/denisidoro/cheats: 
![Screenshot at 2020-03-15 10-20-35](https://user-images.githubusercontent.com/3226564/76702239-19fffd80-66a7-11ea-8f69-324f669b1e01.png)
![Screenshot at 2020-03-15 10-22-59](https://user-images.githubusercontent.com/3226564/76702236-18363a00-66a7-11ea-8ff4-53b497f85888.png)

The config folder is populated:
![Screenshot at 2020-03-15 10-21-11](https://user-images.githubusercontent.com/3226564/76702238-19676700-66a7-11ea-8367-3e7b5733f2b4.png)

When run again, cheats are available:
![Screenshot at 2020-03-15 10-21-34](https://user-images.githubusercontent.com/3226564/76702237-19676700-66a7-11ea-9c2a-d8829340f3e9.png)

### Breaking changes

In order to make navi stop bundling shell widgets as well, a breaking change has been introduced: `source $(navi widget bash)` won't work anymore. It should be `source <(navi widget bash)` now. Any ideas on how to make this transition more graceful?
2020-03-15 13:46:58 -03:00
Denis Isidoro
48c2b64f7f
Static newline regex (#264) 2020-03-14 18:22:39 -03:00
asd
1678564800 💅 2020-03-14 18:14:30 -03:00
Denis Isidoro
3fa141846b
Allow multiline commands (#262)
Fixes #260
2020-03-14 18:08:57 -03:00
Denis Isidoro
5423cd8ccb
wip (#261) 2020-03-14 15:34:26 -03:00
Ingolf Wagner
0d22fe49ab
pull request comments 2020-03-14 23:46:33 +08:00
Ingolf Wagner
3617126f6a
cosmetics 2020-03-14 20:53:27 +08:00