Marty Oehme
342a350c97
HACK Since there is some weirdness with the whoosh backend for papis not being able to either index or search for integer values in custom fields, this commit sets the priorities across the library (as well as the tui picker) to make use of textual reprentations. 1 -> high 3 -> medium 5 -> low This means we can't do simple arithmetic evaluations on priority anymore but at least we can search it correctly in papis. Should probably put in a ticket to see if it can be fixed.
203 lines
6.5 KiB
YAML
203 lines
6.5 KiB
YAML
# current issues/requests
|
|
# - [ ] call arbitrary shell command
|
|
# - [ ] non-blocking opening of files
|
|
# - [ ] distinguish in config between aliases for multiline/table
|
|
# - [ ] update view after more operations
|
|
# - if I call an 'update' command (e.g. set new tag or read status), it will not update in list until 'edit' command invoked and rebuilding the list
|
|
# - two selection additions:
|
|
# - [ ] select all in view
|
|
# - [ ] limit view to currently selected
|
|
#
|
|
# for papis itself:
|
|
# - [ ] I can not search custom numeric fields in whoosh? i.e. 'priority:1' will not give results. 'priority:high' will
|
|
base:
|
|
vimflavour: nvim
|
|
documentlist:
|
|
defaultstyle: multiline
|
|
marked-icon: ""
|
|
multilinestyle:
|
|
rows:
|
|
# TODO: show if already note attached; have info window display note content?
|
|
- "{' ' if 'priority' not in doc or doc['priority'] == 'low' else '<red> </red>' if doc['priority'] == 'high' else '<yellow> </yellow>'}<cyan>{doc.alias('type')} {doc['ref']}</cyan> {doc.alias('readstatus')} {' ' if doc['notes'] else ''}"
|
|
- "<white><bold>{doc.html_escape['title']}</bold></white>"
|
|
- "<blue>{doc.html_escape['author']}</blue>"
|
|
- "{doc.foreach('tags', '<lightgray>(</lightgray><gray><dim>{}</dim></gray><lightgray>)</lightgray>', split = ', ', sep = ' ')}"
|
|
tablestyle:
|
|
separator: " "
|
|
headerstyle: "underline|bold"
|
|
rowstyle: "white_bg"
|
|
cursorrowstyle: "black_white|bold"
|
|
columns:
|
|
- {
|
|
header: "",
|
|
content: "{'' if 'priority' not in doc or doc['priority'] == 'low' else '' if doc['priority'] == 'high' else ''}",
|
|
width: 1,
|
|
}
|
|
- {
|
|
header: "",
|
|
content: "{'' if doc['readstatus'] == 'read' else '' if doc['readstatus'] == 'skimmed' else ' '}",
|
|
width: 1,
|
|
}
|
|
- {
|
|
header: "",
|
|
content: "{'' if doc['notes'] else '' if doc['note'] else ' '}",
|
|
width: 1,
|
|
}
|
|
- {
|
|
header: "",
|
|
content: "{doc.alias('type')}",
|
|
width: 1,
|
|
}
|
|
- { header: "Authors", content: "{doc['author']}", width: 25 }
|
|
- { header: "Year", content: "{str(doc['year'])}", width: 4 }
|
|
- { header: "Title", content: "{doc['title']}", width: 125 }
|
|
- { header: "Reference", content: "{doc['ref']}", width: 15 }
|
|
- {
|
|
header: "",
|
|
content: "{str(len(doc.get_files()) if len(doc.get_files()) > 0 else '')}",
|
|
width: 1,
|
|
}
|
|
- { header: "Tags", content: "{doc['tags'] if isinstance(doc['tags'], str) else doc.foreach('tags', '{}', sep=', ')}", width: 35 }
|
|
aliases:
|
|
type:
|
|
{
|
|
article: "",
|
|
book: "",
|
|
inbook: "",
|
|
incollection: "",
|
|
software: "",
|
|
presentation: "",
|
|
thesis: "",
|
|
techreport: "",
|
|
_default_: "",
|
|
}
|
|
readstatus:
|
|
{
|
|
read: "<green></green>",
|
|
skimmed: "<yellow></yellow>"
|
|
}
|
|
|
|
keymappings:
|
|
q: quit
|
|
"?": help
|
|
T: toggle_style
|
|
S: cmd "sort "
|
|
/: search_mode
|
|
<key_down>: scroll_down
|
|
<key_up>: scroll_up
|
|
<ctrl-f>: page_down
|
|
<ctrl-b>: page_up
|
|
G: jump_to_bottom
|
|
gg: jump_to_top
|
|
j: scroll_down
|
|
k: scroll_up
|
|
o: open -r "pdf$"
|
|
O: open -d
|
|
b: browse
|
|
B: papis browse -k doi papis_id:{doc['papis_id']}
|
|
R: view_reset
|
|
<c-r>: reload
|
|
e:
|
|
- edit
|
|
- edit info
|
|
n:
|
|
- papis edit -n papis_id:{doc['papis_id']}
|
|
- edit notes
|
|
"'n":
|
|
- search "notes:.+"
|
|
- limit to entries with notes
|
|
"'u":
|
|
- search "readstatus:read OR readstatus:skimmed"
|
|
- limit to read entries
|
|
"'r":
|
|
- search "NOT readstatus:read AND NOT readstatus:skimmed"
|
|
- limit to unread entries
|
|
" ": mark_selected
|
|
mm: mark_selected
|
|
M: mark_down
|
|
J: mark_down
|
|
mu: unmark_all
|
|
mv: mark_view
|
|
",t": cmd "tag "
|
|
",r":
|
|
- papis update -s readstatus read papis_id:{doc['papis_id']}
|
|
- set readstatus read
|
|
",k":
|
|
- papis update -s readstatus skimmed papis_id:{doc['papis_id']}
|
|
- set readstatus skimmed
|
|
",u":
|
|
- papis update -s readstatus "" papis_id:{doc['papis_id']}
|
|
- set readstatus unread
|
|
",ph":
|
|
- papis update -s priority high papis_id:{doc['papis_id']}
|
|
- set priority high
|
|
",pm":
|
|
- papis update -s priority medium read papis_id:{doc['papis_id']}
|
|
- set priority medium
|
|
",pl":
|
|
- papis update -s priority low read papis_id:{doc['papis_id']}
|
|
- set priority low
|
|
i:
|
|
- info_toggle
|
|
- "Toggle info window"
|
|
I:
|
|
- info_cycle
|
|
- "Cycle info windows"
|
|
<ctrl-p>: info_scroll_up
|
|
<ctrl-n>: info_scroll_down
|
|
# all require 'clip' script to be available on PATH
|
|
yy:
|
|
- copy_to_clipboard "[@{doc['ref']}]"
|
|
- yank pandoc-styled reference
|
|
ss:
|
|
- vim_send "[@{doc['ref']}]"
|
|
- send vim pandoc-styled reference
|
|
yl:
|
|
- copy_to_clipboard "\\cite\{{doc['ref']}\}"
|
|
- yank latex-styled reference
|
|
sl:
|
|
- vim_send "\\cite\{{doc['ref']}\}"
|
|
- send vim latex-styled reference
|
|
yr:
|
|
- copy_to_clipboard "{format_reference(doc,style='apa')}"
|
|
- yank apa-styled reference
|
|
sr:
|
|
- vim_send "{format_reference(doc,style='apa')}"
|
|
- send vim apa-styled reference
|
|
yt:
|
|
- copy_to_clipboard "{doc['title']}"
|
|
- yank title
|
|
yu:
|
|
- copy_to_clipboard "{doc['url']}"
|
|
- yank url
|
|
yd:
|
|
- copy_to_clipboard "{doc['doi']}"
|
|
- yank doi
|
|
# TODO look into https://github.com/supersambo/papis-tui vim-send mappings
|
|
|
|
infowindow:
|
|
default_on: False
|
|
views:
|
|
doc:
|
|
content: "author: {doc['author'].strip()}\n title: {doc['title'].strip()}\n tags:{doc['tags'] if isinstance(doc['tags'], str) else doc.foreach('tags', '{}', sep=', ')}"
|
|
height: 8
|
|
apa:
|
|
content: "{format_reference(doc,style='apa')}"
|
|
abstract:
|
|
content: "{doc['abstract']}"
|
|
linewrap: True
|
|
height: 8
|
|
|
|
commandline:
|
|
search:
|
|
keyword_aliases: { a: "author:", t: "title:", y: "year:", k: "tags:" }
|
|
|
|
statusbar:
|
|
left:
|
|
default: "<black_green><bold> {info['mode_upper']} </black_green></bold><green_bg></green_bg>"
|
|
normal: "<black_green><bold> {info['mode_upper']} </black_green></bold><green_bg></green_bg>"
|
|
command: "<black_cyan><bold> {info['mode_upper']} </black_cyan></bold><cyan_bg></cyan_bg>"
|
|
select: "<black_red><bold> {info['mode_upper']} </black_red></bold><red_bg></red_bg>"
|
|
search: "<black_magenta><bold> {info['mode_upper']} </black_magenta></bold><magenta_bg></magenta_bg>"
|
|
right:
|
|
default: "<green>{info['sortkeys']} </green><cyan_bg></cyan_bg><black_cyan> {info['idx']} < {info['marked']} < {info['view']} < {info['items']} </black_cyan>"
|