@@ -11,74 +11,8 @@ if &cp || exists('g:loaded_notes')
11
11
finish
12
12
endif
13
13
14
- " This is a bit tricky: We want to be compatible with Pathogen which installs
15
- " plug-ins as "bundles" under ~/.vim/bundle/*/ so we use a relative path to
16
- " make sure we 'stay inside the bundle'. However if the notes.vim plug-in is
17
- " installed system wide the user probably won't have permission to write
18
- " inside the installation directory, so we have to switch to $HOME then.
19
- let s: systemdir = xolox#misc#path#absolute (expand (' <sfile>:p:h' ) . ' /../misc/notes' )
20
- if filewritable (s: systemdir ) == 2
21
- let s: localdir = s: systemdir
22
- elseif xolox#misc#os#is_win ()
23
- let s: localdir = xolox#misc#path#absolute (' ~/vimfiles/misc/notes' )
24
- else
25
- let s: localdir = xolox#misc#path#absolute (' ~/.vim/misc/notes' )
26
- endif
27
-
28
- " Define the default location where the user's notes are saved?
29
- if ! exists (' g:notes_directory' )
30
- let g: notes_directory = xolox#misc#path#merge (s: localdir , ' user' )
31
- endif
32
-
33
- " Define the default location of the shadow directory with predefined notes?
34
- if ! exists (' g:notes_shadowdir' )
35
- let g: notes_shadowdir = xolox#misc#path#merge (s: systemdir , ' shadow' )
36
- endif
37
-
38
- " Define the default location for the full text index.
39
- if ! exists (' g:notes_indexfile' )
40
- let g: notes_indexfile = xolox#misc#path#merge (s: localdir , ' index.pickle' )
41
- endif
42
-
43
- " Define the default location for the keyword scanner script.
44
- if ! exists (' g:notes_indexscript' )
45
- let g: notes_indexscript = xolox#misc#path#merge (s: systemdir , ' search-notes.py' )
46
- endif
47
-
48
- " Define the default suffix for note filenames.
49
- if ! exists (' g:notes_suffix' )
50
- let g: notes_suffix = ' '
51
- endif
52
-
53
- " Define the default location for the tag name index (used for completion).
54
- if ! exists (' g:notes_tagsindex' )
55
- let g: notes_tagsindex = xolox#misc#path#merge (s: localdir , ' tags.txt' )
56
- endif
57
-
58
- " Define the default action when a note's filename and title are out of sync.
59
- if ! exists (' g:notes_title_sync' )
60
- " Valid values are "no", "change_title", "rename_file" and "prompt".
61
- let g: notes_title_sync = ' prompt'
62
- endif
63
-
64
- " Smart quotes and such are enabled by default.
65
- if ! exists (' g:notes_smart_quotes' )
66
- let g: notes_smart_quotes = 1
67
- endif
68
-
69
- " Text used for horizontal rulers.
70
- if ! exists (' g:notes_ruler_text' )
71
- let g: notes_ruler_text = repeat (' ' , ((&tw > 0 ? &tw : 79 ) - 5 ) / 2 ) . ' * * *'
72
- endif
73
-
74
- " Symbols used to denote list items with increasing nesting levels.
75
- if ! exists (' g:notes_list_bullets' )
76
- if xolox#notes#unicode_enabled ()
77
- let g: notes_list_bullets = [' •' , ' ◦' , ' ▸' , ' ▹' , ' ▪' , ' ▫' ]
78
- else
79
- let g: notes_list_bullets = [' *' , ' -' , ' +' ]
80
- endif
81
- endif
14
+ " Initialize the configuration defaults.
15
+ call xolox#notes#init ()
82
16
83
17
" User commands to create, delete and search notes.
84
18
command ! - bar - bang -nargs =? -complete =customlist ,xolox#notes#cmd_complete Note call xolox#notes#edit (<q-bang> , <q-args> )
@@ -93,43 +27,21 @@ command! -bar IndexTaggedNotes call xolox#notes#tags#create_index()
93
27
94
28
" Automatic commands to enable the :edit note:… shortcut and load the notes file type.
95
29
96
- function ! s: DAC (events, directory , command )
97
- " Define automatic command for {events} in {directory} with {command}.
98
- " Resolve the path to the directory with notes so that the automatic command
99
- " also applies to symbolic links pointing to notes (Vim matches filename
100
- " patterns in automatic commands after resolving filenames).
101
- let directory = xolox#misc#path#absolute (a: directory )
102
- " On Windows we have to replace backslashes with forward slashes.
103
- if xolox#misc#os#is_win ()
104
- let directory = substitute (directory , ' \\' , ' /' , ' g' )
105
- endif
106
- let pattern = fnameescape (directory ) . ' /*'
107
- " On Windows the pattern won't match if it contains repeating slashes.
108
- let pattern = substitute (pattern, ' /\+' , ' /' , ' g' )
109
- execute ' autocmd' a: events pattern a: command
110
- endfunction
111
-
112
30
augroup PluginNotes
113
31
autocmd !
114
- " NB: "nested" is used here so that SwapExists automatic commands apply
115
- " to notes (which is IMHO better than always showing the E325 prompt).
116
- au BufReadCmd note:* nested call xolox#notes#shortcut ()
117
- call s: DAC (' BufReadCmd' , g: notes_shadowdir , ' call xolox#notes#edit_shadow()' )
118
- call s: DAC (' BufWriteCmd' , g: notes_directory , ' call xolox#notes#save()' )
119
32
au SwapExists * call xolox#notes#swaphack ()
120
33
au BufUnload * call xolox#notes#unload_from_cache ()
121
34
au BufReadPost ,BufWritePost * call xolox#notes#refresh_syntax ()
122
35
au InsertEnter ,InsertLeave * call xolox#notes#refresh_syntax ()
123
36
au CursorHold ,CursorHoldI * call xolox#notes#refresh_syntax ()
37
+ " NB: "nested" is used here so that SwapExists automatic commands apply
38
+ " to notes (which is IMHO better than always showing the E325 prompt).
39
+ au BufReadCmd note:* nested call xolox#notes#shortcut ()
40
+ " Automatic commands to read/write notes (used for automatic renaming).
41
+ exe ' au BufReadCmd' xolox#notes#autocmd_pattern (g: notes_shadowdir ) ' call xolox#notes#edit_shadow()'
42
+ exe ' au BufWriteCmd' xolox#notes#autocmd_pattern (g: notes_directory ) ' call xolox#notes#save()'
124
43
augroup END
125
44
126
- augroup filetypedetect
127
- call s: DAC (' BufNewFile,BufRead' , g: notes_directory , ' if &bt == "" | setl ft=notes | endif' )
128
- call s: DAC (' BufNewFile,BufRead' , g: notes_shadowdir , ' if &bt == "" | setl ft=notes | endif' )
129
- augroup END
130
-
131
- delfunction s: DAC
132
-
133
45
" Make sure the plug-in is only loaded once.
134
46
let g: loaded_notes = 1
135
47
0 commit comments