From c4661ec60a6cb11deb77ec290d954d9070667bf5 Mon Sep 17 00:00:00 2001
From: Max Christian Pohle
Date: Thu, 16 Jul 2020 22:27:58 +0200
Subject: Initial release as a separate plugin

---
 plugin/autoload/vim-recently-used.vim | 41 +++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)
 create mode 100644 plugin/autoload/vim-recently-used.vim

(limited to 'plugin/autoload')

diff --git a/plugin/autoload/vim-recently-used.vim b/plugin/autoload/vim-recently-used.vim
new file mode 100644
index 0000000..48bb5d6
--- /dev/null
+++ b/plugin/autoload/vim-recently-used.vim
@@ -0,0 +1,41 @@
+"=======================================================================================================================
+" MAX_SPLASH:
+" Shows recently used files from the current directory in a location list
+"=======================================================================================================================
+
+command RecentlyUsed call setloclist(0, [])
+    \ | :lopen
+    \ | setlocal nospell
+    \ | setlocal signcolumn=yes
+    \ | setfiletype qf
+    \ | call setloclist(0, [], 'r', {
+    \ 'title':'Recently used files in directory: '.getcwd(),
+    \ 'items':sort(map(filter(filter(map(copy(v:oldfiles[:100]),
+    \                                    {_, p->expand(p)}),
+    \                                'v:val =~ "'.getcwd().'/"'),
+    \                         'filereadable(v:val)'),
+    \                  {_, p->{'filename': p,
+    \                          'module': printf("%s | %-*s ",
+    \                                           strftime("%F %H:%M",
+    \                                                    getftime(p)),
+    \                                           winwidth(0) - wincol() - 22,
+    \                                           fnamemodify(p, ':.')
+    \                                          )}}),
+    \              {a1, a2 -> a1.module < a2.module})
+    \ })
+
+" autocmd VimEnter * call setloclist(0, filter(map(copy(v:oldfiles), {_, p->{'filename': expand(get(split(p, "'"), 0))}}), { val -> echo val}))
+" from the list of recent files: make absolute paths, filter out files not
+" contained in cwd and finally filter out directories and non-files...
+autocmd StdinReadPre * let s:std_in=1
+autocmd VimEnter * 
+    \ if !exists("s:std_in") && empty(argv())
+    \ |     execute ':RecentlyUsed"
+    \ |     wincmd w'
+    \ | endif
+
+" http://vimdoc.sourceforge.net/htmldoc/quickfix.html#:caddexpr
+" for c in range(char2nr('a'), char2nr('z')) + range(char2nr('A'), char2nr('Z')) +  range(0,9) | let p = getpos("'".nr2char(c)) | if (p[1] > 0) | exec "sign define mark_".nr2char(c)." text=".nr2char(c)." linehl=linenr" | exec "sign place ".c." name=mark_".nr2char(c)." line=".p[1] | endif  | endfor
+" for c in range(char2nr('a'), char2nr('z')) + range(char2nr('A'), char2nr('Z')) +  range(0,9) | let p = line("'".nr2char(c)) | if (p > 0) | exec "sign define mark_".nr2char(c)." text=".nr2char(c)." linehl=linenr" | exec "sign place ".c." name=mark_".nr2char(c)." line=".p | endif  | endfor 
+" call sign_unplace('marks') | for c in range(char2nr('a'), char2nr('z')) + range(char2nr('A'), char2nr('Z')) +  range(0,9) | let p = line("'".nr2char(c)) | if (p > 0) | call sign_define("mark_".nr2char(c), { "text" : nr2char(c), "linehl": "linenr"}) | call sign_place(c, 'marks', "mark_".nr2char(c), '', {'lnum': p}) | endif  | endfor 
+" call sign_unplace('marks') | for c in range(char2nr('a'), char2nr('z')) + range(char2nr('A'), char2nr('Z')) +  range(char2nr('0'), char2nr('9')) | let p = line("'".nr2char(c)) | if (p > 0) | call sign_define("mark_".nr2char(c), { "text" : nr2char(c), "texthl": "linenr"}) | call sign_place(c, 'marks', "mark_".nr2char(c), '', {'lnum': p}) | endif  | endfor 
-- 
cgit v1.2.3