diff --git a/plugins/by-name/papis/default.nix b/plugins/by-name/papis/default.nix index 5266759b..851709c3 100644 --- a/plugins/by-name/papis/default.nix +++ b/plugins/by-name/papis/default.nix @@ -20,8 +20,6 @@ lib.nixvim.plugins.mkNeovimPlugin { dependencies = [ "yq" ]; - settingsOptions = import ./settings-options.nix lib; - settingsExample = { enable_keymaps = true; papis_python = { diff --git a/plugins/by-name/papis/settings-options.nix b/plugins/by-name/papis/settings-options.nix deleted file mode 100644 index ab78748b..00000000 --- a/plugins/by-name/papis/settings-options.nix +++ /dev/null @@ -1,467 +0,0 @@ -lib: -let - inherit (lib) types; - inherit (lib.nixvim) - defaultNullOpts - literalLua - mkNullOrOption - mkNullOrStr - ; -in -{ - enable_modules = - defaultNullOpts.mkAttrsOf types.bool - { - search = true; - completion = true; - at-cursor = true; - formatter = true; - colors = true; - base = true; - debug = false; - } - '' - List of enabled modules. - ''; - - cite_formats = - defaultNullOpts.mkAttrsOf - ( - with types; - oneOf [ - str - (listOf str) - (submodule { - freeformType = with types; attrsOf anything; - options = { - start_str = mkNullOrStr '' - Precedes the citation. - ''; - - end_str = mkNullOrStr '' - Appended after the citation. - ''; - - ref_prefix = mkNullOrStr '' - precedes each `ref` in a citation. - ''; - - separator_str = mkNullOrStr '' - Gets added between `ref`s if there are multiple in a citation. - ''; - }; - }) - ] - ) - { - tex = { - start_str = "[[\cite{]]"; - end_str = "}"; - separator_str = ", "; - }; - markdown = { - ref_prefix = "@"; - separator_str = "; "; - }; - rmd = { - ref_prefix = "@"; - separator_str = "; "; - }; - plain = { - separator_str = ", "; - }; - org = { - start_str = "[cite:"; - end_str = "]"; - ref_prefix = "@"; - separator_str = ";"; - }; - norg = { - start_str = "{= "; - end_str = "}"; - separator_str = "; "; - }; - typst = { - ref_prefix = "@"; - separator_str = " "; - }; - } - '' - Defines citation formats for various filetypes. They define how citation strings are parsed - and formatted when inserted. - ''; - - cite_formats_fallback = defaultNullOpts.mkStr "plain" '' - What citation format to use when none is defined for the current filetype. - ''; - - enable_keymaps = defaultNullOpts.mkBool false '' - Enable default keymaps. - ''; - - enable_fs_watcher = defaultNullOpts.mkBool true '' - Whether to enable the file system event watcher. - - When disabled, the database is only updated on startup. - ''; - - data_tbl_schema = - defaultNullOpts.mkAttrsOf - ( - with types; - either str (submodule { - freeformType = attrsOf anything; - options = { - __unkeyed-type = mkNullOrStr '' - The type for this field. - Only the "text" and "luatable" are allowed. - ''; - - required = mkNullOrOption types.bool '' - Whether this field is required. - ''; - - unique = mkNullOrOption types.bool '' - Whether this field is unique. - ''; - }; - }) - ) - { - id = { - __unkeyed-type = "integer"; - pk = true; - }; - papis_id = { - __unkeyed-type = "text"; - required = true; - unique = true; - }; - ref = { - __unkeyed-type = "text"; - required = true; - unique = true; - }; - author = "text"; - editor = "text"; - year = "text"; - title = "text"; - shorttitle = "text"; - type = "text"; - abstract = "text"; - time_added = "text"; - notes = "luatable"; - journal = "text"; - volume = "text"; - number = "text"; - author_list = "luatable"; - tags = "luatable"; - files = "luatable"; - } - '' - The sqlite schema of the main `data` table. - - Only the `"text"` and `"luatable"` types are allowed. - ''; - - db_path = defaultNullOpts.mkStr (literalLua "vim.fn.stdpath('data') .. '/papis_db/papis-nvim.sqlite3'") '' - Path to the papis.nvim database. - ''; - - yq_bin = defaultNullOpts.mkStr "yq" '' - Name of the `yq` executable. - ''; - - create_new_note_fn = - defaultNullOpts.mkRaw - '' - function(papis_id, notes_name) - vim.fn.system( - string.format( - "papis update --set notes %s papis_id:%s", - vim.fn.shellescape(notes_name), - vim.fn.shellescape(papis_id) - ) - ) - end - '' - '' - Function to execute when adding a new note. `ref` is the citation key of the relevant entry - and `notes_name` is the name of the notes file. - ''; - - init_filetypes = defaultNullOpts.mkListOf types.str [ "markdown" "norg" "yaml" "typst" ] '' - Filetypes that start papis.nvim. - ''; - - papis_conf_keys = - defaultNullOpts.mkListOf types.str [ "info-name" "notes-name" "dir" "opentool" ] - '' - Papis options to import into papis.nvim. - ''; - - enable_icons = defaultNullOpts.mkBool true '' - Whether to enable pretty icons (requires something like Nerd Fonts). - ''; - - search = { - wrap = defaultNullOpts.mkBool true '' - Whether to enable line wrap in the telescope previewer. - ''; - - initial_sort_by_time_added = defaultNullOpts.mkBool true '' - Whether to initially sort entries by time-added. - ''; - - search_keys = defaultNullOpts.mkListOf types.str [ "author" "editor" "year" "title" "tags" ] '' - What keys to search for matches. - ''; - - preview_format = - defaultNullOpts.mkListOf (with types; listOf (either str (listOf str))) - [ - [ - "author" - "%s" - "PapisPreviewAuthor" - ] - [ - "year" - "%s" - "PapisPreviewYear" - ] - [ - "title" - "%s" - "PapisPreviewTitle" - ] - [ "empty_line" ] - [ - "journal" - "%s" - "PapisPreviewValue" - "show_key" - [ - "󱀁 " - "%s: " - ] - "PapisPreviewKey" - ] - [ - "type" - "%s" - "PapisPreviewValue" - "show_key" - [ - " " - "%s: " - ] - "PapisPreviewKey" - ] - [ - "ref" - "%s" - "PapisPreviewValue" - "show_key" - [ - " " - "%s: " - ] - "PapisPreviewKey" - ] - [ - "tags" - "%s" - "PapisPreviewValue" - "show_key" - [ - " " - "%s: " - ] - "PapisPreviewKey" - ] - [ - "abstract" - "%s" - "PapisPreviewValue" - "show_key" - [ - "󰭷 " - "%s: " - ] - "PapisPreviewKey" - ] - ] - '' - Papis.nvim uses a common configuration format for defining the formatting of strings. - - Sometimes -- as for instance in the below `preview_format` option -- we define a set of - lines. - At other times -- as for instance in the `results_format` option -- we define a single - line. - - Sets of lines are composed of single lines. - A line can be composed of either a single element or multiple elements. - The below `preview_format` shows an example where each line is defined by a table with - just one element. - ''; - - results_format = - defaultNullOpts.mkListOf (with types; listOf (either str (listOf str))) - [ - [ - "files" - [ - " " - "F " - ] - "PapisResultsFiles" - "force_space" - ] - [ - "notes" - [ - "󰆈 " - "N " - ] - "PapisResultsNotes" - "force_space" - ] - [ - "author" - "%s " - "PapisResultsAuthor" - ] - [ - "year" - "(%s) " - "PapisResultsYear" - ] - [ - "title" - "%s" - "PapisResultsTitle" - ] - ] - '' - The format of each line in the the results window. - Here, everything is show on one line (otherwise equivalent to points 1-3 of - `preview_format`). - - The `force_space` value is used to force whitespace for icons (so that if e.g. a file is - absent, it will show " ", ensuring that columns are aligned.) - ''; - }; - - at-cursor = { - popup_format = - defaultNullOpts.mkListOf (with types; listOf (either str (listOf str))) - [ - [ - "author" - "%s" - "PapisPopupAuthor" - ] - [ - "vspace" - "vspace" - ] - [ - "files" - [ - " " - "F " - ] - "PapisResultsFiles" - ] - [ - "notes" - [ - "󰆈 " - "N " - ] - "PapisResultsNotes" - ] - [ - "year" - "%s" - "PapisPopupYear" - ] - [ - "title" - "%s" - "PapisPopupTitle" - ] - ] - '' - The format of the popup shown on `:Papis at-cursor show-popup` (equivalent to points 1-3 - of `preview_format`). - - Note that one of the lines is composed of multiple elements. - - Note also the `[ "vspace" "vspace" ]` line which is exclusive to `popup_format` and which - tells papis.nvim to fill the space between the previous and next element with whitespace - (and in effect make whatever comes after right-aligned). - It can only occur once in a line. - ''; - }; - - formatter = { - format_notes = mkNullOrOption types.rawLua '' - This function runs when first opening a new note. - - The `entry` arg is a table containing all the information about the entry (see above - `data_tbl_schema`). - - This example is meant to be used with the `markdown` filetype. - The function must return a set of lines, specifying the lines to be added to the note. - ''; - - format_references = mkNullOrOption types.rawLua '' - This function runs when inserting a formatted reference (currently by `f/c-f` in Telescope). - - It works similarly to the `format_notes` above, except that the set of lines should only - contain one line (references using multiple lines aren't currently supported). - ''; - }; - - papis-storage = { - key_name_conversions = - defaultNullOpts.mkAttrsOf types.str - { - time_added = "time-added"; - } - '' - As lua doesn't deal well with '-', we define conversions between the format - in the `info.yaml` and the format in papis.nvim's internal database. - ''; - - tag_format = defaultNullOpts.mkEnum' { - values = [ - "tbl" - "," - ":" - " " - ]; - pluginDefault = null; - example = "tbl"; - description = '' - The format used for tags. - Will be determined automatically if left empty. - - Can be set to: - - `"tbl"` if a lua table, - - `","` if comma-separated, - - `":"` if semi-colon separated, - - `" "` if space separated. - ''; - }; - - required_keys = defaultNullOpts.mkListOf types.str [ "papis_id" "ref" ] '' - The keys which `.yaml` files are expected to always define. - - Files that are missing these keys will cause an error message and will not be added to the - database. - ''; - }; -}