Skip to content

rashedInt32/midnight-neon-pine.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🌌 Midnight Neon Pine

A bespoke "Super-Theme" configuration for Neovim. This is a high-performance hybrid that merges the deep-sea comfort of Night Owl, the neon energy of Tokyo Night, and the dreamy sophistication of Rosé Pine.

This isn't a new plugin to maintain—it's a Configuration Recipe that skins the rose-pine engine into a high-contrast masterpiece.

✨ Why this hybrid?

  • The Foundation: Locked to the authentic #011627 background from Night Owl.
  • The Glow: Functions and methods use the iconic Night Owl Purple (#c792ea).
  • The Logic: Access modifiers (public, private) use Rosé Pine's pinks to separate "Control" from "Data."
  • The Recess: Comments use the specific Night Owl Slate-Teal (#637777) so they don't distract from your code.

🚀 Installation (LazyVim / lazy.nvim)

Simply create or overwrite ~/.config/nvim/lua/plugins/theme.lua with the following block:

return {
  "rose-pine/neovim",
  name = "rose-pine",
  lazy = false,
  priority = 1000,

  opts = {
    variant = "main",

    styles = {
      bold = true,
      italic = true,
      transparency = true,
    },

    palette = {
      main = {
        base = "#011627",
        surface = "#0b2233",
        overlay = "#102a3f",

        subtle = "#7f9db2", -- lifted slightly
        comment = "#7a9a9a",

        foam = "#5fb3d9",
        gold = "#e0af68",
        iris = "#cbb4ff",

        pine = "#6fb1a0",
        olive = "#8fbf7f",
        sql = "#b5d98c",

        love = "#e06c75",
        keyword = "#4f8fb3",
        operator = "#4a6b80",

        mint = "#7aa2f7",
        rose = "#c678dd",
      },
    },

    highlight_groups = {

      --------------------------------------------------
      -- STRUCTURAL CORE
      --------------------------------------------------

      ["@function"] = { fg = "#c8b6ff" },
      ["@function.definition"] = { fg = "#5fb3d9", bold = true },

      ["@type"] = { fg = "#e0af68" },
      ["@type.definition"] = { fg = "#e0af68", bold = true },

      --------------------------------------------------
      -- FLOW FIELD
      --------------------------------------------------

      ["@function.call"] = { fg = "#cbb4ff" },
      ["@function.method.call"] = { fg = "#cbb4ff" },

      ["@tag"] = { fg = "#c678dd" },
      ["@tag.builtin"] = { fg = "#6fb1a0" },

      ["@_jsx_attribute"] = { fg = "#5fb3d9" },
      ["@tag.attribute"] = { fg = "#5fb3d9" },

      ["@variable.member"] = { fg = "#b794f6" },
      ["@property"] = { fg = "#b794f6" },

      ["@variable.parameter"] = { fg = "#8bb4ff" },

      --------------------------------------------------
      -- DATA SURFACE
      --------------------------------------------------

      ["@variable"] = { fg = "#9bb5c7" }, -- lifted for readability

      ["@variable.builtin"] = { fg = "#5fb3d9", bold = true },
      ["@variable.defaultLibrary"] = { fg = "#5fb3d9", bold = true },

      ["@string"] = { fg = "#8fbf7f" },
      ["@number"] = { fg = "#6fb1a0" },
      ["@boolean"] = { fg = "#6fb1a0" },
      ["@constant"] = { fg = "#6fb1a0" },

      --------------------------------------------------
      -- LANGUAGE CONTROL
      --------------------------------------------------

      ["@keyword"] = { fg = "#5fb3d9" },
      ["@keyword.control"] = { fg = "#5fb3d9" },
      ["@keyword.storage"] = { fg = "#c678dd", bold = true },
      ["@keyword.return"] = { fg = "#5fb3d9" },
      ["@keyword.sql"] = { fg = "#b5d98c", bold = true },

      ["@operator"] = { fg = "#4a6b80" },

      ["@punctuation.bracket"] = { fg = "#6f94a6" },
      ["@punctuation.delimiter"] = { fg = "#6f94a6" },

      --------------------------------------------------
      -- CONTEXT PERIPHERY
      --------------------------------------------------

      ["@comment"] = {
        fg = "#7a9a9a",
        italic = true,
      },

      CursorLine = { bg = "#061e33" },
      Visual = { bg = "#2d5a7d" },
      CursorLineNr = { fg = "#5fb3d9", bold = true },

      Error = { fg = "#e06c75", bold = true },
      Warning = { fg = "#e0af68", bold = true },
    },
  },

  config = function(_, opts)
    require("rose-pine").setup(opts)
    vim.cmd("colorscheme rose-pine")

    vim.api.nvim_create_autocmd("LspAttach", {
      callback = function()
        local map = {
          ["@lsp.type.function"] = "@function.call",
          ["@lsp.type.method"] = "@function.method.call",

          ["@lsp.typemod.function.defaultLibrary"] = "@function",

          ["@lsp.type.variable"] = "@variable",
          ["@lsp.type.parameter"] = "@variable.parameter",
          ["@lsp.type.property"] = "@property",

          -- Fix struct object keys - prevent declaration modifier from making them gold
          ["@lsp.typemod.class.declaration"] = "@variable.member",

          ["@lsp.type.class"] = "@type",
          ["@lsp.type.interface"] = "@type",
          ["@lsp.type.enum"] = "@type",
          ["@lsp.type.namespace"] = "@type",

          ["@lsp.type.keyword"] = "@keyword",
        }

        for from, to in pairs(map) do
          vim.api.nvim_set_hl(0, from, { link = to })
        end
      end,
    })
    vim.api.nvim_set_hl(0, "EffectOp", {
      fg = "#e06c75",
      bold = true,
      italic = false,
    })

    vim.api.nvim_create_autocmd({ "BufEnter" }, {
      pattern = { "*.ts", "*.tsx" },
      callback = function()
        vim.fn.matchadd(
          "EffectOp",
          [[\<Effect\.\(gen\|fn\|pipe\|map\|flatMap\|catchTag\|provide\|tap\|all\|run\|try\|fail\|sync\|async\|maybe\|option\)\>]],
          95
        )
      end,
    })
  end,
}

📸 Screenshots

Go

Go Example

Python

Python Example

Rust

Rust Example

TypeScript

TypeScript Example

React (TSX)

React TSX Example

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors