benbrastmckie / .config

NeoVim configuration optimized for writing in LaTeX
310 stars 247 forks source link

Deprecated and old version of the which-key spec #128

Open rafisics opened 1 month ago

rafisics commented 1 month ago
NVIM v0.10.0
Build type: RelWithDebInfo
LuaJIT 2.1.1713484068

By updating Which-key to version https://github.com/folke/which-key.nvim/commit/b55a568ae69724e334aec3ef291ea4e1768ba47a and running :checkhealth which-key, it's showing:


==============================================================================
which-key: require("which-key.health").check()

- OK Most of these checks are for informational purposes only.
  WARNINGS should be treated as a warning, and don't necessarily indicate a problem with your config.
  Please |DON't| report these warnings as an issue.

Checking your config ~
- WARNING Your config uses deprecated options:
  - `key_labels`
  - `popup_mappings`
  - `window`
  - `ignore_missing`
  - `hidden`
  - `triggers_nowait`
  - `triggers_blacklist`
  Please refer to the docs for more info.
- WARNING |mini.icons| is not installed
- OK |nvim-web-devicons| is installed

Checking for issues with your mappings ~
- WARNING You're using an old version of the which-key spec.
  Your mappings will work, but it's recommended to update them to the new version.
  Please check the docs and suggested spec below for more info.
  Mappings: >
  {
    L = {
      c = { "<cmd>lua HandleCheckbox()<CR>", "checkbox" },
      n = { "<cmd>AutolistCycleNext<CR>", "next" },
      name = "LIST",
      p = { "<cmd>AutolistCyclePrev<CR>", "previous" },
      r = { "<cmd>AutolistRecalculate<CR>", "reorder" }
    },
    S = {
      d = { "<cmd>SessionManager delete_session<CR>", "delete" },
      l = { "<cmd>SessionManager load_session<CR>", "load" },
      name = "SESSIONS",
      s = { "<cmd>SessionManager save_current_session<CR>", "save" }
    },
    a = {
      a = { "<cmd>lua PdfAnnots()<CR>", "annotate" },
      b = { "<cmd>terminal bibexport -o %:p:r.bib %:p:r.aux<CR>", "bib export" },
      c = { "<cmd>:VimtexClearCache All<CR>", "clear vimtex" },
      e = { "<cmd>e ~/.config/nvim/snippets/tex.snippets<CR>", "edit snippets" },
      f = { "<cmd>lua vim.lsp.buf.format()<CR>", "format" },
      g = { "<cmd>e ~/.config/nvim/templates/Glossary.tex<CR>", "edit glossary" },
      h = { "<cmd>LocalHighlightToggle<CR>", "highlight" },
      k = { "<cmd>VimtexClean<CR>", "kill aux" },
      m = { "<cmd>TermExec cmd='python3 /home/benjamin/Documents/Philosophy/Projects/ModelChecker/Code/src/model_checker %:p:r.py'<CR>", "model checker" },
      name = "ACTIONS",
      p = { "<cmd>TermExec cmd='python %:p:r.py'<CR>", "python" },
      r = { "<cmd>VimtexErrors<CR>", "report errors" },
      s = { "<cmd>TermExec cmd='ssh brastmck@eofe10.mit.edu'<CR>", "ssh" },
      u = { "<cmd>cd %:p:h<CR>", "update cwd" },
      v = { "<plug>(vimtex-context-menu)", "vimtex menu" },
      w = { "<cmd>VimtexCountWords!<CR>", "word count" }
    },
    b = { "<cmd>VimtexCompile<CR>", "build" },
    c = { "<cmd>vert sb<CR>", "create split" },
    d = { "<cmd>update! | bdelete!<CR>", "delete buffer" },
    e = { "<cmd>NvimTreeToggle<CR>", "explorer" },
    f = {
      b = { "<cmd>lua require('telescope.builtin').buffers(require('telescope.themes').get_dropdown{previewer = false})<CR>", "buffers" },
      c = { "<cmd>Telescope bibtex format_string=\\citet{%s}<CR>", "citations" },
      f = { "<cmd>Telescope live_grep theme=ivy<CR>", "project" },
      g = { "<cmd>Telescope git_commits<CR>", "git history" },
      h = { "<cmd>Telescope help_tags<CR>", "help" },
      k = { "<cmd>Telescope keymaps<CR>", "keymaps" },
      name = "FIND",
      r = { "<cmd>Telescope registers<CR>", "registers" },
      t = { "<cmd>Telescope colorscheme<CR>", "theme" },
      w = { "<cmd>lua SearchWordUnderCursor()<CR>", "word" },
      y = { "<cmd>YankyRingHistory<CR>", "yanks" }
    },
    g = {
      b = { "<cmd>Telescope git_branches<CR>", "checkout branch" },
      d = { "<cmd>Gitsigns diffthis HEAD<CR>", "diff" },
      g = { "<cmd>LazyGit<CR>", "lazygit" },
      j = { "<cmd>Gitsigns next_hunk<CR>", "next hunk" },
      k = { "<cmd>Gitsigns prev_hunk<CR>", "prev hunk" },
      l = { "<cmd>Gitsigns blame_line<CR>", "line blame" },
      name = "GIT",
      p = { "<cmd>Gitsigns preview_hunk<CR>", "preview hunk" },
      t = { "<cmd>Gitsigns toggle_current_line_blame<CR>", "toggle blame" }
    },
    i = { "<cmd>VimtexTocOpen<CR>", "index" },
    j = { "<cmd>clo<CR>", "drop split" },
    k = { "<cmd>on<CR>", "max split" },
    l = {
      D = { "<cmd>lua vim.lsp.buf.declaration()<CR>", "declaration" },
      R = { "<cmd>lua vim.lsp.buf.rename()<CR>", "rename" },
      b = { "<cmd>Telescope diagnostics bufnr=0<CR>", "buffer diagnostics" },
      c = { "<cmd>lua vim.lsp.buf.code_action()<CR>", "code action" },
      d = { "<cmd>Telescope lsp_definitions<CR>", "definition" },
      h = { "<cmd>lua vim.lsp.buf.hover()<CR>", "help" },
      i = { "<cmd>Telescope lsp_implementations<CR>", "implementations" },
      k = { "<cmd>LspStop<CR>", "kill lsp" },
      l = { "<cmd>lua vim.diagnostic.open_float()<CR>", "line diagnostics" },
      n = { "<cmd>lua vim.diagnostic.goto_next()<CR>", "next diagnostic" },
      name = "LSP",
      p = { "<cmd>lua vim.diagnostic.goto_prev()<CR>", "previous diagnostic" },
      r = { "<cmd>Telescope lsp_references<CR>", "references" },
      s = { "<cmd>LspRestart<CR>", "restart lsp" },
      t = { "<cmd>LspStart<CR>", "start lsp" }
    },
    m = {
      name = "MARKDOWN",
      v = { "<cmd>Slides<CR>", "view slides" }
    },
    mode = { "n", "v" },
    n = {
      d = { "<cmd>TermExec cmd='nix develop'<CR><C-w>j", "develop" },
      g = { "<cmd>TermExec cmd='nix-collect-garbage --delete-older-than 15d'<CR><C-w>j", "garbage" },
      h = { "<cmd>TermExec cmd='home-manager switch --flake ~/.dotfiles/'<CR><C-w>l", "home-manager" },
      m = { "<cmd>TermExec cmd='brave https://mynixos.com' open=0<CR>", "my-nixos" },
      name = "NIXOS",
      p = { "<cmd>TermExec cmd='brave https://search.nixos.org/packages' open=0<CR>", "packages" },
      r = { "<cmd>TermExec cmd='sudo nixos-rebuild switch --flake ~/.dotfiles/'<CR><C-w>l", "rebuild flake" },
      u = { "<cmd>TermExec cmd='nix flake update'<CR><C-w>j", "update" }
    },
    noremap = true,
    nowait = true,
    p = {
      h = { "<cmd>TermExec cmd='pandoc %:p -o %:p:r.html'<CR>", "html" },
      l = { "<cmd>TermExec cmd='pandoc %:p -o %:p:r.tex'<CR>", "latex" },
      m = { "<cmd>TermExec cmd='pandoc %:p -o %:p:r.md'<CR>", "markdown" },
      name = "PANDOC",
      p = { "<cmd>TermExec cmd='pandoc %:p -o %:p:r.pdf' open=0<CR>", "pdf" },
      v = { "<cmd>TermExec cmd='zathura %:p:r.pdf &' open=0<CR>", "view" },
      w = { "<cmd>TermExec cmd='pandoc %:p -o %:p:r.docx'<CR>", "word" }
    },
    prefix = "<leader>",
    q = { "<cmd>wa! | qa!<CR>", "quit" },
    s = {
      c = { "<Plug>(nvim-surround-change)", "change" },
      d = { "<Plug>(nvim-surround-delete)", "delete" },
      name = "SURROUND",
      s = { "<Plug>(nvim-surround-normal)", "surround" }
    },
    silent = true,
    t = {
      b = { "<cmd>read ~/.config/nvim/templates/PhilBeamer.tex<CR>", "PhilBeamer.tex" },
      g = { "<cmd>read ~/.config/nvim/templates/Glossary.tex<CR>", "Glossary.tex" },
      h = { "<cmd>read ~/.config/nvim/templates/HandOut.tex<CR>", "HandOut.tex" },
      l = { "<cmd>read ~/.config/nvim/templates/Letter.tex<CR>", "Letter.tex" },
      m = { "<cmd>read ~/.config/nvim/templates/MultipleAnswer.tex<CR>", "MultipleAnswer.tex" },
      name = "TEMPLATES",
      p = { "<cmd>read ~/.config/nvim/templates/PhilPaper.tex<CR>", "PhilPaper.tex" },
      r = { "<cmd>read ~/.config/nvim/templates/Root.tex<CR>", "Root.tex" },
      s = { "<cmd>read ~/.config/nvim/templates/SubFile.tex<CR>", "SubFile.tex" }
    },
    u = { "<cmd>Telescope undo<CR>", "undo" },
    v = { "<cmd>VimtexView<CR>", "view" },
    w = { "<cmd>wa!<CR>", "write" }
  }

  -- Suggested Spec:
  {
    {
      mode = { "n", "v" },
      { "<leader>L", group = "LIST", nowait = true, remap = false },
      { "<leader>Lc", "<cmd>lua HandleCheckbox()<CR>", desc = "checkbox", nowait = true, remap = false },
      { "<leader>Ln", "<cmd>AutolistCycleNext<CR>", desc = "next", nowait = true, remap = false },
      { "<leader>Lp", "<cmd>AutolistCyclePrev<CR>", desc = "previous", nowait = true, remap = false },
      { "<leader>Lr", "<cmd>AutolistRecalculate<CR>", desc = "reorder", nowait = true, remap = false },
      { "<leader>S", group = "SESSIONS", nowait = true, remap = false },
      { "<leader>Sd", "<cmd>SessionManager delete_session<CR>", desc = "delete", nowait = true, remap = false },
      { "<leader>Sl", "<cmd>SessionManager load_session<CR>", desc = "load", nowait = true, remap = false },
      { "<leader>Ss", "<cmd>SessionManager save_current_session<CR>", desc = "save", nowait = true, remap = false },
      { "<leader>a", group = "ACTIONS", nowait = true, remap = false },
      { "<leader>aa", "<cmd>lua PdfAnnots()<CR>", desc = "annotate", nowait = true, remap = false },
      { "<leader>ab", "<cmd>terminal bibexport -o %:p:r.bib %:p:r.aux<CR>", desc = "bib export", nowait = true, remap = false },
      { "<leader>ac", "<cmd>:VimtexClearCache All<CR>", desc = "clear vimtex", nowait = true, remap = false },
      { "<leader>ae", "<cmd>e ~/.config/nvim/snippets/tex.snippets<CR>", desc = "edit snippets", nowait = true, remap = false },
      { "<leader>af", "<cmd>lua vim.lsp.buf.format()<CR>", desc = "format", nowait = true, remap = false },
      { "<leader>ag", "<cmd>e ~/.config/nvim/templates/Glossary.tex<CR>", desc = "edit glossary", nowait = true, remap = false },
      { "<leader>ah", "<cmd>LocalHighlightToggle<CR>", desc = "highlight", nowait = true, remap = false },
      { "<leader>ak", "<cmd>VimtexClean<CR>", desc = "kill aux", nowait = true, remap = false },
      { "<leader>am", "<cmd>TermExec cmd='python3 /home/benjamin/Documents/Philosophy/Projects/ModelChecker/Code/src/model_checker %:p:r.py'<CR>", desc = "model checker", nowait = true, remap = false },
      { "<leader>ap", "<cmd>TermExec cmd='python %:p:r.py'<CR>", desc = "python", nowait = true, remap = false },
      { "<leader>ar", "<cmd>VimtexErrors<CR>", desc = "report errors", nowait = true, remap = false },
      { "<leader>as", "<cmd>TermExec cmd='ssh brastmck@eofe10.mit.edu'<CR>", desc = "ssh", nowait = true, remap = false },
      { "<leader>au", "<cmd>cd %:p:h<CR>", desc = "update cwd", nowait = true, remap = false },
      { "<leader>av", "<plug>(vimtex-context-menu)", desc = "vimtex menu", nowait = true, remap = false },
      { "<leader>aw", "<cmd>VimtexCountWords!<CR>", desc = "word count", nowait = true, remap = false },
      { "<leader>b", "<cmd>VimtexCompile<CR>", desc = "build", nowait = true, remap = false },
      { "<leader>c", "<cmd>vert sb<CR>", desc = "create split", nowait = true, remap = false },
      { "<leader>d", "<cmd>update! | bdelete!<CR>", desc = "delete buffer", nowait = true, remap = false },
      { "<leader>e", "<cmd>NvimTreeToggle<CR>", desc = "explorer", nowait = true, remap = false },
      { "<leader>f", group = "FIND", nowait = true, remap = false },
      { "<leader>fb", "<cmd>lua require('telescope.builtin').buffers(require('telescope.themes').get_dropdown{previewer = false})<CR>", desc = "buffers", nowait = true, remap = false },
      { "<leader>fc", "<cmd>Telescope bibtex format_string=\\citet{%s}<CR>", desc = "citations", nowait = true, remap = false },
      { "<leader>ff", "<cmd>Telescope live_grep theme=ivy<CR>", desc = "project", nowait = true, remap = false },
      { "<leader>fg", "<cmd>Telescope git_commits<CR>", desc = "git history", nowait = true, remap = false },
      { "<leader>fh", "<cmd>Telescope help_tags<CR>", desc = "help", nowait = true, remap = false },
      { "<leader>fk", "<cmd>Telescope keymaps<CR>", desc = "keymaps", nowait = true, remap = false },
      { "<leader>fr", "<cmd>Telescope registers<CR>", desc = "registers", nowait = true, remap = false },
      { "<leader>ft", "<cmd>Telescope colorscheme<CR>", desc = "theme", nowait = true, remap = false },
      { "<leader>fw", "<cmd>lua SearchWordUnderCursor()<CR>", desc = "word", nowait = true, remap = false },
      { "<leader>fy", "<cmd>YankyRingHistory<CR>", desc = "yanks", nowait = true, remap = false },
      { "<leader>g", group = "GIT", nowait = true, remap = false },
      { "<leader>gb", "<cmd>Telescope git_branches<CR>", desc = "checkout branch", nowait = true, remap = false },
      { "<leader>gd", "<cmd>Gitsigns diffthis HEAD<CR>", desc = "diff", nowait = true, remap = false },
      { "<leader>gg", "<cmd>LazyGit<CR>", desc = "lazygit", nowait = true, remap = false },
      { "<leader>gj", "<cmd>Gitsigns next_hunk<CR>", desc = "next hunk", nowait = true, remap = false },
      { "<leader>gk", "<cmd>Gitsigns prev_hunk<CR>", desc = "prev hunk", nowait = true, remap = false },
      { "<leader>gl", "<cmd>Gitsigns blame_line<CR>", desc = "line blame", nowait = true, remap = false },
      { "<leader>gp", "<cmd>Gitsigns preview_hunk<CR>", desc = "preview hunk", nowait = true, remap = false },
      { "<leader>gt", "<cmd>Gitsigns toggle_current_line_blame<CR>", desc = "toggle blame", nowait = true, remap = false },
      { "<leader>i", "<cmd>VimtexTocOpen<CR>", desc = "index", nowait = true, remap = false },
      { "<leader>j", "<cmd>clo<CR>", desc = "drop split", nowait = true, remap = false },
      { "<leader>k", "<cmd>on<CR>", desc = "max split", nowait = true, remap = false },
      { "<leader>l", group = "LSP", nowait = true, remap = false },
      { "<leader>lD", "<cmd>lua vim.lsp.buf.declaration()<CR>", desc = "declaration", nowait = true, remap = false },
      { "<leader>lR", "<cmd>lua vim.lsp.buf.rename()<CR>", desc = "rename", nowait = true, remap = false },
      { "<leader>lb", "<cmd>Telescope diagnostics bufnr=0<CR>", desc = "buffer diagnostics", nowait = true, remap = false },
      { "<leader>lc", "<cmd>lua vim.lsp.buf.code_action()<CR>", desc = "code action", nowait = true, remap = false },
      { "<leader>ld", "<cmd>Telescope lsp_definitions<CR>", desc = "definition", nowait = true, remap = false },
      { "<leader>lh", "<cmd>lua vim.lsp.buf.hover()<CR>", desc = "help", nowait = true, remap = false },
      { "<leader>li", "<cmd>Telescope lsp_implementations<CR>", desc = "implementations", nowait = true, remap = false },
      { "<leader>lk", "<cmd>LspStop<CR>", desc = "kill lsp", nowait = true, remap = false },
      { "<leader>ll", "<cmd>lua vim.diagnostic.open_float()<CR>", desc = "line diagnostics", nowait = true, remap = false },
      { "<leader>ln", "<cmd>lua vim.diagnostic.goto_next()<CR>", desc = "next diagnostic", nowait = true, remap = false },
      { "<leader>lp", "<cmd>lua vim.diagnostic.goto_prev()<CR>", desc = "previous diagnostic", nowait = true, remap = false },
      { "<leader>lr", "<cmd>Telescope lsp_references<CR>", desc = "references", nowait = true, remap = false },
      { "<leader>ls", "<cmd>LspRestart<CR>", desc = "restart lsp", nowait = true, remap = false },
      { "<leader>lt", "<cmd>LspStart<CR>", desc = "start lsp", nowait = true, remap = false },
      { "<leader>m", group = "MARKDOWN", nowait = true, remap = false },
      { "<leader>mv", "<cmd>Slides<CR>", desc = "view slides", nowait = true, remap = false },
      { "<leader>n", group = "NIXOS", nowait = true, remap = false },
      { "<leader>nd", "<cmd>TermExec cmd='nix develop'<CR><C-w>j", desc = "develop", nowait = true, remap = false },
      { "<leader>ng", "<cmd>TermExec cmd='nix-collect-garbage --delete-older-than 15d'<CR><C-w>j", desc = "garbage", nowait = true, remap = false },
      { "<leader>nh", "<cmd>TermExec cmd='home-manager switch --flake ~/.dotfiles/'<CR><C-w>l", desc = "home-manager", nowait = true, remap = false },
      { "<leader>nm", "<cmd>TermExec cmd='brave https://mynixos.com' open=0<CR>", desc = "my-nixos", nowait = true, remap = false },
      { "<leader>np", "<cmd>TermExec cmd='brave https://search.nixos.org/packages' open=0<CR>", desc = "packages", nowait = true, remap = false },
      { "<leader>nr", "<cmd>TermExec cmd='sudo nixos-rebuild switch --flake ~/.dotfiles/'<CR><C-w>l", desc = "rebuild flake", nowait = true, remap = false },
      { "<leader>nu", "<cmd>TermExec cmd='nix flake update'<CR><C-w>j", desc = "update", nowait = true, remap = false },
      { "<leader>p", group = "PANDOC", nowait = true, remap = false },
      { "<leader>ph", "<cmd>TermExec cmd='pandoc %:p -o %:p:r.html'<CR>", desc = "html", nowait = true, remap = false },
      { "<leader>pl", "<cmd>TermExec cmd='pandoc %:p -o %:p:r.tex'<CR>", desc = "latex", nowait = true, remap = false },
      { "<leader>pm", "<cmd>TermExec cmd='pandoc %:p -o %:p:r.md'<CR>", desc = "markdown", nowait = true, remap = false },
      { "<leader>pp", "<cmd>TermExec cmd='pandoc %:p -o %:p:r.pdf' open=0<CR>", desc = "pdf", nowait = true, remap = false },
      { "<leader>pv", "<cmd>TermExec cmd='zathura %:p:r.pdf &' open=0<CR>", desc = "view", nowait = true, remap = false },
      { "<leader>pw", "<cmd>TermExec cmd='pandoc %:p -o %:p:r.docx'<CR>", desc = "word", nowait = true, remap = false },
      { "<leader>q", "<cmd>wa! | qa!<CR>", desc = "quit", nowait = true, remap = false },
      { "<leader>s", group = "SURROUND", nowait = true, remap = false },
      { "<leader>sc", "<Plug>(nvim-surround-change)", desc = "change", nowait = true, remap = false },
      { "<leader>sd", "<Plug>(nvim-surround-delete)", desc = "delete", nowait = true, remap = false },
      { "<leader>ss", "<Plug>(nvim-surround-normal)", desc = "surround", nowait = true, remap = false },
      { "<leader>t", group = "TEMPLATES", nowait = true, remap = false },
      { "<leader>tb", "<cmd>read ~/.config/nvim/templates/PhilBeamer.tex<CR>", desc = "PhilBeamer.tex", nowait = true, remap = false },
      { "<leader>tg", "<cmd>read ~/.config/nvim/templates/Glossary.tex<CR>", desc = "Glossary.tex", nowait = true, remap = false },
      { "<leader>th", "<cmd>read ~/.config/nvim/templates/HandOut.tex<CR>", desc = "HandOut.tex", nowait = true, remap = false },
      { "<leader>tl", "<cmd>read ~/.config/nvim/templates/Letter.tex<CR>", desc = "Letter.tex", nowait = true, remap = false },
      { "<leader>tm", "<cmd>read ~/.config/nvim/templates/MultipleAnswer.tex<CR>", desc = "MultipleAnswer.tex", nowait = true, remap = false },
      { "<leader>tp", "<cmd>read ~/.config/nvim/templates/PhilPaper.tex<CR>", desc = "PhilPaper.tex", nowait = true, remap = false },
      { "<leader>tr", "<cmd>read ~/.config/nvim/templates/Root.tex<CR>", desc = "Root.tex", nowait = true, remap = false },
      { "<leader>ts", "<cmd>read ~/.config/nvim/templates/SubFile.tex<CR>", desc = "SubFile.tex", nowait = true, remap = false },
      { "<leader>u", "<cmd>Telescope undo<CR>", desc = "undo", nowait = true, remap = false },
      { "<leader>v", "<cmd>VimtexView<CR>", desc = "view", nowait = true, remap = false },
      { "<leader>w", "<cmd>wa!<CR>", desc = "write", nowait = true, remap = false },
    },
  }

checking for overlapping keymaps ~
- OK No overlapping keymaps found

Checking for duplicate mappings ~
- OK No duplicate mappings found

How to fix the deprecated options? Do you think it should be updated according to the suggested spec? What do you recommend?

rafisics commented 1 month ago

Also, :checkhealth which-key shows the following while a tex file is opened:

checking for overlapping keymaps ~
- WARNING In mode `i`, <`> overlaps with <`h>, <`W>, <`E>, <`q>, <`]>, <`U>, <`X>, <`S>, <`P>, <`L>, <`=>, <`y>, <`l>, <`a>, <`s>, <`m>, <`B>, <`A>, <`g>, <`ve>, <`vr>, <`vf>, <`vq>, <`vk>, <`vp>, <`w>, <`(>, <`n>, <`D>, <`0>, <`Q>, <`[>, <`+>, <`H>, <`F>, <`>>, <`jh>, <`jl>, <`jJ>, <`jk>, <`jH>, <`jj>, <`jK>, <`jL>, <`e>, <`<>, <`.>, <`G>, <`\>, <`d>, <`x>, <`8>, <`6>, <`2>, <`c>, <`k>, <`z>, <`Y>, <`u>, <`)>, <`t>, <`r>, <`f>, <`b>, <`p>, <``>, <`i>, <`*>, <`N>:
  - <`>: autopairs map key
- OK Overlapping keymaps are only reported for informational purposes.
  This doesn't necessarily mean there is a problem with your config.
rafisics commented 1 month ago

To get rid of the following issues:

Checking your config ~

  • WARNING Your config uses deprecated options:
    • key_labels
    • popup_mappings
    • window
    • ignore_missing
    • hidden
    • triggers_nowait
    • triggers_blacklist Please refer to the docs for more info.
  • WARNING |mini.icons| is not installed
  • OK |nvim-web-devicons| is installed

I am using which-key this way for now.