mirror of
https://github.com/emacs-vs/vs-light-theme.git
synced 2025-12-05 18:20:30 -08:00
301 lines
16 KiB
EmacsLisp
301 lines
16 KiB
EmacsLisp
;;; vs-light-theme.el --- Visual Studio IDE light theme
|
|
|
|
;; Copyright (C) 2019-2025 Shen, Jen-Chieh
|
|
|
|
;; Author: Jen-Chieh Shen
|
|
;; URL: https://github.com/emacs-vs/vs-light-theme
|
|
;; Version: 1.0
|
|
;; Package-Requires: ((emacs "24.1"))
|
|
|
|
;; This file is NOT part of GNU Emacs.
|
|
|
|
;; This program is free software; you can redistribute it and/or modify
|
|
;; it under the terms of the GNU General Public License as published by
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
;; (at your option) any later version.
|
|
|
|
;; This program is distributed in the hope that it will be useful,
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
;; GNU General Public License for more details.
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
|
;; along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
;;; Commentary:
|
|
;;
|
|
;; Visual Studio IDE light theme.
|
|
;;
|
|
|
|
;;; Code:
|
|
|
|
(deftheme vs-light
|
|
"Visual Studio IDE light theme.")
|
|
|
|
(defconst vs-light-theme-graphic-p (display-graphic-p)
|
|
"Non-nil if graphic mode.")
|
|
|
|
(custom-theme-set-faces
|
|
'vs-light
|
|
`(default ((t (:background "#ffffff" :foreground "#000000"))))
|
|
`(font-lock-builtin-face ((t (:foreground "#0C6EEF"))))
|
|
`(font-lock-comment-face ((t (:foreground "olive drab"))))
|
|
`(font-lock-negation-char-face ((t (:foreground "#2B91AF"))))
|
|
`(font-lock-reference-face ((t (:foreground "#2B91AF"))))
|
|
`(font-lock-constant-face ((t (:foreground "#2B91AF"))))
|
|
`(font-lock-doc-face ((t (:foreground "olive drab"))))
|
|
`(font-lock-function-name-face ((t (:foreground "#74534B"))))
|
|
`(font-lock-keyword-face ((t (:foreground "#0000FF"))))
|
|
`(font-lock-preprocessor-face ((t (:foreground "#808080"))))
|
|
`(font-lock-string-face ((t (:foreground "#B21515"))))
|
|
`(font-lock-type-face ((t (:foreground "#2B91AF"))))
|
|
`(font-lock-variable-name-face ((t (:foreground "#000000"))))
|
|
|
|
`(header-line ((t (:background "#F6F6F6" :foreground "#000000"))))
|
|
|
|
`(mode-line ((t :box ( :line-width -1 :style released-button))))
|
|
`(mode-line-inactive ((t :box ( :line-width -1 :style released-button))))
|
|
|
|
`(cursor ((t :background "#A3A3A3")))
|
|
`(hl-line ((t :background ,(if vs-light-theme-graphic-p "#F1F1F1" "#99C9EF"))))
|
|
`(region ((t :background "#8AB6DF")))
|
|
`(fringe ((t :background "#E6E7E8")))
|
|
|
|
`(completions-annotations ((t :inherit (shadow))))
|
|
`(completions-common-part ((t :foreground "#223fbf" :weight bold)))
|
|
|
|
`(highlight ((t :background ,(if vs-light-theme-graphic-p "#99C9EF" "#363636"))))
|
|
|
|
`(line-number ((t ( :background "#EEEEEE" :foreground "#2B91AF"))))
|
|
`(line-number-current-line ((t ( :background "#EEEEEE"
|
|
:foreground ,(if vs-light-theme-graphic-p
|
|
"#2B91AF"
|
|
"#5C8794")))))
|
|
|
|
`(fill-column-indicator ((t :foreground "#AA4242")))
|
|
|
|
`(show-paren-match ,(if vs-light-theme-graphic-p
|
|
`((t :box ( :line-width (-1 . -1) :style released-button
|
|
:color "#A4A4A4")))
|
|
`((t :background "#0055FF"))))
|
|
|
|
`(show-eof-mode-marker-face ((t :background "#ECECFB" :foreground "#7A6C7F")))
|
|
|
|
`(highlight-indent-guides-odd-face ((t :foreground "#D0D0D0")))
|
|
`(highlight-indent-guides-even-face ((t :foreground "#D0D0D0")))
|
|
`(highlight-indent-guides-character-face ((t :foreground "#D0D0D0")))
|
|
`(highlight-indent-guides-top-odd-face ((t :foreground "#D0D0D0")))
|
|
`(highlight-indent-guides-top-even-face ((t :foreground "#D0D0D0")))
|
|
`(highlight-indent-guides-top-character-face ((t :foreground "#D0D0D0")))
|
|
`(highlight-indent-guides-stack-odd-face ((t :foreground "#D0D0D0")))
|
|
`(highlight-indent-guides-stack-even-face ((t :foreground "#D0D0D0")))
|
|
`(highlight-indent-guides-stack-character-face ((t :foreground "#D0D0D0")))
|
|
|
|
`(highlight-doxygen-comment ((t :background "#ffffff")))
|
|
`(highlight-doxygen-code-block ((t :background "grey85")))
|
|
`(highlight-doxygen-command ((t :foreground "SlateGray")))
|
|
`(highlight-doxygen-type ((t :foreground "SteelBlue")))
|
|
`(highlight-doxygen-variable ((t :foreground "gold4")))
|
|
|
|
`(tree-sitter-hl-face:function ((t :foreground "black")))
|
|
`(tree-sitter-hl-face:function.call ((t :foreground "black")))
|
|
`(tree-sitter-hl-face:function.builtin ((t :foreground "#808080")))
|
|
`(tree-sitter-hl-face:function.special ((t :foreground "#808080")))
|
|
`(tree-sitter-hl-face:function.macro ((t :foreground "#808080")))
|
|
`(tree-sitter-hl-face:method ((t :foreground "black")))
|
|
`(tree-sitter-hl-face:method.call ((t :foreground "black")))
|
|
`(tree-sitter-hl-face:type ((t :foreground "#2B91AF")))
|
|
`(tree-sitter-hl-face:type.parameter ((t :foreground "black")))
|
|
`(tree-sitter-hl-face:type.argument ((t :foreground "black")))
|
|
`(tree-sitter-hl-face:type.builtin ((t :foreground "#0000FF")))
|
|
`(tree-sitter-hl-face:type.super ((t :foreground "#17A0FB")))
|
|
`(tree-sitter-hl-face:constructor ((t :foreground "black")))
|
|
`(tree-sitter-hl-face:variable ((t :foreground "#000000")))
|
|
`(tree-sitter-hl-face:variable.parameter ((t :foreground "#808080")))
|
|
`(tree-sitter-hl-face:variable.builtin ((t :foreground "#0C6EEF")))
|
|
`(tree-sitter-hl-face:variable.special ((t :foreground "#6F008A")))
|
|
`(tree-sitter-hl-face:property ((t :foreground "#2F4F4F")))
|
|
`(tree-sitter-hl-face:property.definition ((t :foreground "#2F4F4F")))
|
|
`(tree-sitter-hl-face:comment ((t :foreground "olive drab")))
|
|
`(tree-sitter-hl-face:doc ((t :foreground "olive drab")))
|
|
`(tree-sitter-hl-face:string ((t :foreground "#B21515")))
|
|
`(tree-sitter-hl-face:string.special ((t :foreground "#B21515")))
|
|
`(tree-sitter-hl-face:escape ((t :foreground "#B21515")))
|
|
`(tree-sitter-hl-face:embedded ((t :foreground "#B21515")))
|
|
`(tree-sitter-hl-face:keyword ((t :foreground "#0000FF")))
|
|
`(tree-sitter-hl-face:operator ((t :foreground "#020000")))
|
|
`(tree-sitter-hl-face:label ((t :foreground "#808080")))
|
|
`(tree-sitter-hl-face:constant ((t :foreground "#6F008A")))
|
|
`(tree-sitter-hl-face:constant.builtin ((t :foreground "#0000FF")))
|
|
`(tree-sitter-hl-face:number ((t :foreground "black")))
|
|
`(tree-sitter-hl-face:boolean ((t :foreground "#0000FF")))
|
|
`(tree-sitter-hl-face:repeat ((t :foreground "#0000FF")))
|
|
`(tree-sitter-hl-face:conditional ((t :foreground "#0000FF")))
|
|
`(tree-sitter-hl-face:conditional.ternary ((t :foreground "#0000FF")))
|
|
`(tree-sitter-hl-face:exception ((t :foreground "#0000FF")))
|
|
`(tree-sitter-hl-face:punctuation ((t :foreground "#020000")))
|
|
`(tree-sitter-hl-face:punctuation.bracket ((t :foreground "#020000")))
|
|
`(tree-sitter-hl-face:punctuation.delimiter ((t :foreground "#020000")))
|
|
`(tree-sitter-hl-face:punctuation.special ((t :foreground "#020000")))
|
|
`(tree-sitter-hl-face:tag ((t :foreground "#800000")))
|
|
`(tree-sitter-hl-face:attribute ((t :foreground "#808080")))
|
|
`(tree-sitter-hl-face:noise ((t :foreground "#808080")))
|
|
|
|
`(ts-fold-replacement-face ((t :foreground "#808080" :box (:line-width (-1 . -1) :style pressed-button))))
|
|
`(ts-fold-fringe-face ((t :foreground "#919191")))
|
|
|
|
`(treesit-fold-replacement-face ((t :foreground "#808080" :box (:line-width (-1 . -1) :style pressed-button))))
|
|
`(treesit-fold-fringe-face ((t :foreground "#919191")))
|
|
|
|
`(company-tooltip-annotation ((t :foreground "#41474D")))
|
|
`(company-fuzzy-annotation-face ((t :foreground "#5E85AB")))
|
|
`(company-preview ((t :foreground "dark gray" :underline t)))
|
|
`(company-preview-common ((t (:inherit company-preview))))
|
|
`(company-tooltip ((t :background "#F5F5F5" :foreground "black")))
|
|
`(company-tooltip-selection ((t :background "#D6EBFF" :foreground "black")))
|
|
`(company-tooltip-common ((((type x)) (:inherit company-tooltip :weight bold))
|
|
(t (:background "#F5F5F5" :foreground "#0066BF"))))
|
|
`(company-tooltip-common-selection ((((type x)) (:inherit company-tooltip-selection :weight bold))
|
|
(t (:background "#D6EBFF" :foreground "#0066BF"))))
|
|
`(company-scrollbar-bg ((t :background "#F5F5F5")))
|
|
`(company-scrollbar-fg ((t :background "#C2C3C9")))
|
|
|
|
`(corfu-default ((t :background "#F5F5F5" :foreground "black")))
|
|
`(corfu-current ((t :background "#D6EBFF" :foreground "black")))
|
|
`(corfu-bar ((t :background "#D6EBFF" :foreground "black")))
|
|
`(corfu-annotations ((t :foreground "#41474D")))
|
|
`(corfu-popupinfo ((t :background "#E9EAED" :foreground "#1E1E1E")))
|
|
|
|
`(popup-tip-face ((t :background "#E9EAED" :foreground "#1E1E1E")))
|
|
|
|
`(flx-highlight-face ((t :foreground "#223fbf" :weight bold)))
|
|
|
|
`(ahs-plugin-default-face ((t :background "#E2E6D6" :box (:line-width (-1 . -1) :style pressed-button :color "#525D68"))))
|
|
`(ahs-plugin-default-face-unfocused ((t :background "#F1F2EE" :box (:line-width (-1 . -1) :style pressed-button :color "#525D68"))))
|
|
`(ahs-face ((t :background "#E2E6D6" :box (:line-width (-1 . -1) :style pressed-button :color "#525D68"))))
|
|
`(ahs-definition-face ((t :background "#E2E6D6" :box (:line-width (-1 . -1) :style pressed-button :color "#525D68"))))
|
|
`(ahs-face-unfocused ((t :background "#F1F2EE" :box (:line-width (-1 . -1) :style pressed-button :color "#525D68"))))
|
|
`(ahs-definition-face-unfocused ((t :background "#F1F2EE" :box (:line-width (-1 . -1) :style pressed-button :color "#525D68"))))
|
|
|
|
`(tab-line ((t :background "#D3D3D3")))
|
|
`(tab-line-tab ((t :background "#D3D3D3")))
|
|
|
|
`(centaur-tabs-display-line ((t :background "#D3D3D3" :box nil :overline nil :underline nil)))
|
|
`(centaur-tabs-default ((t :background "#D3D3D3")))
|
|
`(centaur-tabs-unselected ((t :background "#E8E8E8" :foreground "grey40")))
|
|
`(centaur-tabs-selected ((t :background "#F0F0F0" :foreground "black")))
|
|
`(centaur-tabs-unselected-modified ((t :background "#E8E8E8" :foreground "grey40")))
|
|
`(centaur-tabs-selected-modified ((t :background "#F0F0F0" :foreground "black")))
|
|
`(centaur-tabs-modified-marker-unselected ((t :background "#E8E8E8" :foreground "grey40")))
|
|
`(centaur-tabs-modified-marker-selected ((t :background "#F0F0F0" :foreground "black")))
|
|
|
|
`(dashboard-text-banner ((t :foreground "black")))
|
|
`(dashboard-banner-logo-title ((t :foreground "#616161")))
|
|
`(dashboard-heading ((t :foreground "#727272"
|
|
:box (:line-width (-1 . 5) :color "#ffffff"))))
|
|
`(dashboard-items-face ((t :foreground "#1475B7")))
|
|
|
|
`(yascroll:thumb-fringe ((t :background "#C2C3C9" :foreground "#C2C3C9")))
|
|
`(yascroll:thumb-text-area ((t :background "#C2C3C9" :foreground "#C2C3C9")))
|
|
|
|
`(region-occurrences-highlighter-face ((t :background "#8FBEE3")))
|
|
|
|
`(whitespace-indentation ((t :background "grey20" :foreground "aquamarine3")))
|
|
`(whitespace-trailing ((t :background "grey20" :foreground "red")))
|
|
|
|
`(highlight-numbers-number ((t :foreground "#9BCEA3")))
|
|
|
|
`(modablist-select-face ((t :box (:line-width (-1 . -1) :color "#65A7E2" :style nil))))
|
|
`(modablist-insert-face ((t :background "#565136" :box (:line-width (-1 . -1) :color "#65A7E2" :style nil))))
|
|
|
|
`(lsp-flycheck-info-unnecessary-face ((t :inherit flycheck-info :foreground "#858585")))
|
|
`(lsp-flycheck-warning-unnecessary-face ((t :inherit flycheck-warning :foreground "#858585")))
|
|
`(lsp-flycheck-error-unnecessary-face ((t :inherit flycheck-error :foreground "#858585")))
|
|
|
|
`(lsp-inlay-hint-face ((t :background "#ECECFB" :foreground "#7A6C7F")))
|
|
`(lsp-inlay-hint-type-face ((t :background "#ECECFB" :foreground "#7A6C7F")))
|
|
`(lsp-inlay-hint-parameter-face ((t :background "#ECECFB" :foreground "#7A6C7F")))
|
|
|
|
`(dap-ui-breakpoint-verified-fringe ((t :foreground "#E71F2D")))
|
|
`(breakpoint-disabled ((t :foreground "#C55159")))
|
|
|
|
`(diff-hl-insert ((t :background "#107C10")))
|
|
`(diff-hl-delete ((t :background "#B01414")))
|
|
`(diff-hl-change ((t :background "#0077D4")))
|
|
|
|
`(rjsx-tag ((t (:foreground "#87CEFA"))))
|
|
`(rjsx-attr ((t (:foreground "#EEDD82"))))
|
|
`(rjsx-text ((t (:inherit default))))
|
|
`(rjsx-tag-bracket-face ((t (:inherit web-mode-html-attr-name-face))))
|
|
|
|
`(markdown-markup-face ((t :foreground "#7EA728" :background "#ffffff")))
|
|
`(markdown-code-face ((t :foreground "#2B2B2B" :background "#F5F5F5" :extend t :inherit nil)))
|
|
`(markdown-list-face ((t :foreground "gold3")))
|
|
`(markdown-table-face ((t :foreground "#35B0FC" :background "#ffffff")))
|
|
`(markdown-header-face ((t :foreground "#6EA0E6" :background "#ffffff")))
|
|
`(markdown-header-delimiter-face ((t :foreground "#6EA0E6" :background "#ffffff")))
|
|
`(markdown-metadata-key-face ((t :foreground "#0000FF")))
|
|
`(markdown-metadata-value-face ((t :foreground "#D2D2D2")))
|
|
|
|
`(org-block ((t :foreground "#000000" :background "#2B2B2B" :extend t :inherit nil)))
|
|
`(org-level-1 ((t :foreground "#4ec9b0")))
|
|
`(org-level-2 ((t :foreground "#9cdcfe")))
|
|
`(org-level-3 ((t :foreground "#569cd6")))
|
|
`(org-level-4 ((t :foreground "#dcdcaa")))
|
|
`(org-level-5 ((t :foreground "#c586c0")))
|
|
`(org-level-6 ((t :foreground "#ce9178")))
|
|
`(org-level-7 ((t :foreground "#d7ba7d")))
|
|
`(org-level-8 ((t :foreground "#d16969")))
|
|
|
|
`(web-mode-doctype-face ((t :foreground "Pink3")))
|
|
`(web-mode-comment-face ((t :foreground "olive drab")))
|
|
`(web-mode-block-comment-face ((t :foreground "olive drab")))
|
|
`(web-mode-html-tag-bracket-face ((t :foreground "#800052")))
|
|
`(web-mode-html-tag-face ((t :foreground "#800000")))
|
|
`(web-mode-html-attr-name-face ((t :foreground "#FF0000")))
|
|
`(web-mode-html-attr-equal-face ((t :foreground "#000000")))
|
|
`(web-mode-html-attr-value-face ((t :foreground "#0000FF")))
|
|
`(web-mode-css-selector-tag-face ((t :foreground "#88004A")))
|
|
`(web-mode-css-selector-class-face ((t :foreground "#80004A")))
|
|
`(web-mode-css-property-name-face ((t :foreground "#FF0000")))
|
|
|
|
`(nxml-processing-instruction-target ((t :foreground "#800000")))
|
|
`(nxml-processing-instruction-delimiter ((t :foreground "#80765E")))
|
|
`(nxml-namespace-attribute-xmlns ((t :foreground "#FF0000")))
|
|
`(nxml-namespace-attribute-prefix ((t :foreground "#FF0000")))
|
|
`(nxml-element-local-name ((t :foreground "#800000")))
|
|
`(nxml-attribute-local-name ((t :foreground "#FF0000")))
|
|
`(nxml-tag-delimiter ((t :foreground "#800052")))
|
|
`(nxml-text ((t :foreground "#000000")))
|
|
|
|
`(define-it-pop-tip-color ((t :background "#E9EAED")))
|
|
|
|
`(preview-it-background ((t :background "#E9EAED")))
|
|
)
|
|
|
|
(custom-theme-set-variables
|
|
'vs-light
|
|
`(centaur-tabs-background-color "#D3D3D3")
|
|
;; coverlay overlays
|
|
`(coverlay:tested-line-background-color "#E1FFE1")
|
|
`(coverlay:untested-line-background-color "LavenderBlush")
|
|
`(jcs-poptip-background-color "#E9EAED")
|
|
`(jcs-poptip-foreground-color "#1E1E1E")
|
|
`(cogru-tip-background-color "#E9EAED")
|
|
`(cogru-tip-foreground-color "#1E1E1E"))
|
|
|
|
;;;###autoload
|
|
(when load-file-name
|
|
(add-to-list 'custom-theme-load-path
|
|
(file-name-as-directory (file-name-directory load-file-name))))
|
|
|
|
;;;###autoload
|
|
(defun vs-light-theme ()
|
|
"Load Visual Studio light theme."
|
|
(interactive)
|
|
(load-theme 'vs-light t))
|
|
|
|
(provide-theme 'vs-light)
|
|
|
|
(provide 'vs-light-theme)
|
|
;;; vs-light-theme.el ends here
|