Repository: LazyVim/LazyVim
File: lua/lazyvim/plugins/extras/lang/r.lua (Lua)

Code before:
          wk.register({
            ["<localleader>"] = {
              a = { name = "+(a)ll", ["🚫"] = "which_key_ignore" },
              b = { name = "+(b)etween marks", ["🚫"] = "which_key_ignore" },
              c = { name = "+(c)hunks", ["🚫"] = "which_key_ignore" },
              f = { name = "+(f)unctions", ["🚫"] = "which_key_ignore" },
              g = { name = "+(g)oto", ["🚫"] = "which_key_ignore" },
              k = { name = "+(k)nit", ["🚫"] = "which_key_ignore" },
              p = { name = "+(p)aragraph", ["🚫"] = "which_key_ignore" },
              r = { name = "+(r) general", ["🚫"] = "which_key_ignore" },
              s = { name = "+(s)plit or (s)end", ["🚫"] = "which_key_ignore" },
              t = { name = "+(t)erminal", ["🚫"] = "which_key_ignore" },
              v = { name = "+(v)iew", ["🚫"] = "which_key_ignore" },
            },
          })
        end,
      },
      pdfviewer = (function()
        if vim.loop.os_uname().sysname:find("Windows", 1, true) then
          return "open" -- according to @Aman9das on Github
        elseif vim.loop.os_uname().sysname:find("Darwin", 1, true) then
          return "open"
        else
          return "xdg-open" -- according to @Aman9das on Github
        end
      end)(),
    },
  },
  {
    "hrsh7th/nvim-cmp",
    dependencies = { "R-nvim/cmp-r" },
    opts = function(_, opts)
      opts.sources = opts.sources or {}
      table.insert(opts.sources, { name = "cmp_r" })
    end,
  },
  {
    "nvim-treesitter/nvim-treesitter",
    opts = function(_, opts)
      if type(opts.ensure_installed) == "table" then
        vim.list_extend(opts.ensure_installed, { "markdown", "markdown_inline", "r", "rnoweb" })
      end
    end,
  },
  {
    "neovim/nvim-lspconfig",
    opts = {
      servers = {
        r_language_server = {
          root_dir = function(fname)
            return require("lspconfig.util").root_pattern("DESCRIPTION", "NAMESPACE", ".Rbuildignore")(fname)

Review comment (suggestion):
Instead of all these, you could use `vim.ui.open` I believe. It returns the default open handler based on the OS. See `:h vim.ui.open()` for more info.

Code after:
              f = { name = "+(f)unctions", ["🚫"] = "which_key_ignore" },
              g = { name = "+(g)oto", ["🚫"] = "which_key_ignore" },
              k = { name = "+(k)nit", ["🚫"] = "which_key_ignore" },
              p = { name = "+(p)aragraph", ["🚫"] = "which_key_ignore" },
              q = { name = "+(q)uarto", ["🚫"] = "which_key_ignore" },
              r = { name = "+(r) general", ["🚫"] = "which_key_ignore" },
              s = { name = "+(s)plit or (s)end", ["🚫"] = "which_key_ignore" },
              t = { name = "+(t)erminal", ["🚫"] = "which_key_ignore" },
              v = { name = "+(v)iew", ["🚫"] = "which_key_ignore" },
            },
          })
        end,
      },
      pdfviewer = ""
    },
    config = function(_, opts)
      require("r").setup(opts)
      require("r.pdf.generic").open = vim.ui.open
    end,
  },
  {
    "hrsh7th/nvim-cmp",
    optional = true,
    dependencies = { "R-nvim/cmp-r" },
    opts = function(_, opts)
      opts.sources = opts.sources or {}
      table.insert(opts.sources, { name = "cmp_r" })
    end,
  },
  {
    "nvim-treesitter/nvim-treesitter",
    opts = function(_, opts)
      if type(opts.ensure_installed) == "table" then
        vim.list_extend(opts.ensure_installed, { "markdown", "markdown_inline", "r", "rnoweb" })
      end
    end,
  },
  {
    "neovim/nvim-lspconfig",
    opts = {
      servers = {
        r_language_server = {
          root_dir = function(fname)
            return require("lspconfig.util").root_pattern("DESCRIPTION", "NAMESPACE", ".Rbuildignore")(fname)
              or require("lspconfig.util").find_git_ancestor(fname)
              or vim.loop.os_homedir()
          end,
        },
      },
    },
  },