Skip to content
This repository has been archived by the owner on May 13, 2024. It is now read-only.

feat(code): add a way to configure Prism theme #38

Closed
wants to merge 2 commits into from

Conversation

Kocal
Copy link
Contributor

@Kocal Kocal commented Jan 8, 2020

Summary

I didn't like Prism theme okaidia and I wanted to use another one, but it was not possible because the theme was hardcoded.
I've added a Stylus variable $prismTheme (default okaida) and changed the way to include a prism theme (directly import it in code.styl, like default Vuepress theme does).

default theme:
S茅lection_999(508)

(Don't take care of highlighted lines, it's part of #37 馃槄)

override theme:
S茅lection_999(509)

I've also updated the documentation:
S茅lection_999(510)

What kind of change does this PR introduce? (check at least one)

  • Bugfix
  • Feature
  • Code style update
  • Refactor
  • Docs
  • Build-related changes
  • Other, please describe:

If changing the UI of default theme, please provide the before/after screenshot:

Does this PR introduce a breaking change? (check one)

  • Yes
  • No

If yes, please describe the impact and migration path for existing applications:

The PR fulfills these requirements:

  • When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)

You have tested in the following browsers: (Providing a detailed version will be better.)

  • Chrome 78.0.3904.108
  • Firefox
  • Safari
  • Edge
  • IE

If adding a new feature, the PR's description includes:

  • A convincing reason for adding this feature
  • Related documents have been updated
  • Related tests have been updated (I don't think there are tests for that)

To avoid wasting your time, it's best to open a feature request issue first and wait for approval before working on it.

Other information:

@@ -133,3 +133,5 @@ div[class~="language-bash"]:before

div[class~="language-php"]:before
content "php"

@import '~prismjs/themes/prism-' + $prismTheme + '.css'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Prism's default theme @import '~prismjs/themes/prism.css won't be able to configure.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, nice catch

@billyyyyy3320
Copy link
Member

For now, you can use index.stly to override it, such as:

//index.stly

@import '~prismjs/themes/prism-twilight.css'

Since our code block background is always black, some theme might not be suitable.

AFAIK, VP's default theme doesn't support configuring Prism theme. I can't confirm whether it should be supported, but it's worthwhile to open an issue in VuePress, and we can follow the decision.

@Kocal
Copy link
Contributor Author

Kocal commented Jan 8, 2020

Yes, VP's default theme does not support configuring Prism theme, they directly use @import '~prismjs/themes/prism-tomorrow.css' in styles/code.styl.

Using your solution won't work properly because Prism is still imported with <style src="..."> in this theme. It seems that Prism need to be imported with @import in Stylus in the base theme in order to be overridable, see vuejs/vuepress#1707.

I will open a new PR to remove <style> and import Prism in file code.styl, like it's done in VP's default theme.
Like this, end users will be able to override it in their index.styl.

@Kocal Kocal closed this Jan 8, 2020
@Kocal Kocal deleted the fix/prism-configuration branch January 8, 2020 13:26
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants