1
+ def quote [... t ] {
2
+ let s = $t | str join ' ' | str replace - a " '" " ''"
3
+ $" '($s )'"
4
+ }
5
+
1
6
def __cwdhist_menu [] {
2
7
{
3
8
name : cwdhist_menu
@@ -14,12 +19,12 @@ def __cwdhist_menu [] {
14
19
}
15
20
source : { |buffer , position |
16
21
#$"[($position)]($buffer);(char newline)" | save -a ~/.cache/cwdhist.log
17
- let t = ($buffer | split row ' ' | last )
22
+ let t = quote ' % ' ($buffer | split row ' ' | last ) ' % '
18
23
if $env .cwd_history_full {
19
24
open $nu .history-path | query db $"
20
- select cwd as value, count\( *) as cnt
25
+ select cwd as value, count\( *\ ) as cnt
21
26
from history
22
- where cwd like '% ($t )%'
27
+ where cwd like ($t )
23
28
group by cwd
24
29
order by cnt desc
25
30
limit 50
@@ -28,7 +33,7 @@ def __cwdhist_menu [] {
28
33
open $env .cwd_history_file | query db $"
29
34
select cwd as value, count
30
35
from cwd_history
31
- where cwd like '% ($t )%'
36
+ where cwd like ($t )
32
37
order by count desc
33
38
limit 50
34
39
;"
@@ -69,12 +74,12 @@ export def empty-sqlite [] {
69
74
70
75
export def 'cwd history delete' [cwd ] {
71
76
open $env .cwd_history_file
72
- | query db $" delete from cwd_history where cwd = '( $cwd )' ;"
77
+ | query db $" delete from cwd_history where cwd = ( quote $cwd );"
73
78
}
74
79
75
80
export-env {
76
81
$env .cwd_history_full = false
77
- $env .cwd_history_file = ' ~/. cache/ nu_cwd_history.sqlite'
82
+ $env .cwd_history_file = ([ $nu .data-dir ' cache' ] | path join ' nu_cwd_history.sqlite' )
78
83
79
84
if not ($env .cwd_history_file | path exists ) {
80
85
empty-sqlite | save - f $env .cwd_history_file
@@ -95,9 +100,9 @@ export-env {
95
100
}
96
101
open $env .cwd_history_file
97
102
| query db $"
98
- insert into cwd_history\( cwd)
99
- values \( '( $path )' )
100
- on conflict\( cwd)
103
+ insert into cwd_history\( cwd\ )
104
+ values \( ( quote $path )\ )
105
+ on conflict\( cwd\ )
101
106
do update set
102
107
count = count + 1,
103
108
recent = datetime\( 'now', 'localtime');"
0 commit comments