hexojs / hexo

A fast, simple & powerful blog framework, powered by Node.js.
https://hexo.io
MIT License
38.83k stars 4.76k forks source link

The Backtick Code Block does not support additional options #4830

Open yunnysunny opened 2 years ago

yunnysunny commented 2 years ago

Check List

Please check followings before submitting a new issue.

Expected behavior

  ```javascript line_number:true highlight:true mark:1,2,3
  function listenInCluster(server, address, port, addressType,
  backlog, fd, exclusive, flags) {
  exclusive = !!exclusive;

  if (cluster === undefined) cluster = require('cluster');

  if (cluster.isPrimary || exclusive) {
  // Will create a new handle
  // _listen2 sets up the listened handle, it is still named like this
  // to avoid breaking code that wraps this method
  server._listen2(address, port, addressType, backlog, fd, flags);
  return;
  }

  .....
  }


Github does not support show the markdown code , so I split the issue into too commits.
yunnysunny commented 2 years ago

Actual behavior

The code above will be rendered as follows: image

How to reproduce?

Is the problem still there under "Safe mode"?

Environment & Settings

Node.js & npm version(node -v && npm -v)

v14.17.4
6.14.14

Your site _config.yml (Optional)

# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/

# Site
title: Hexo
subtitle: ''
description: ''
keywords:
author: John Doe
language: en
timezone: ''

# URL
## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'
url: http://example.com
permalink: :year/:month/:day/:title/
permalink_defaults:
pretty_urls:
  trailing_index: true # Set to false to remove trailing 'index.html' from permalinks
  trailing_html: true # Set to false to remove trailing '.html' from permalinks

# Directory
source_dir: source
public_dir: public
tag_dir: tags
archive_dir: archives
category_dir: categories
code_dir: downloads/code
i18n_dir: :lang
skip_render:

# Writing
new_post_name: :title.md # File name of new posts
default_layout: post
titlecase: false # Transform title into titlecase
external_link:
  enable: true # Open external links in new tab
  field: site # Apply to the whole site
  exclude: ''
filename_case: 0
render_drafts: false
post_asset_folder: false
relative_link: false
future: true
highlight:
  enable: true
  line_number: true
  auto_detect: false
  tab_replace: ''
  wrap: true
  hljs: false
prismjs:
  enable: false
  preprocess: true
  line_number: true
  tab_replace: ''

# Home page setting
# path: Root path for your blogs index page. (default = '')
# per_page: Posts displayed per page. (0 = disable pagination)
# order_by: Posts order. (Order by date descending by default)
index_generator:
  path: ''
  per_page: 10
  order_by: -date

# Category & Tag
default_category: uncategorized
category_map:
tag_map:

# Metadata elements
## https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta
meta_generator: true

# Date / Time format
## Hexo uses Moment.js to parse and display date
## You can customize the date format as defined in
## http://momentjs.com/docs/#/displaying/format/
date_format: YYYY-MM-DD
time_format: HH:mm:ss
## updated_option supports 'mtime', 'date', 'empty'
updated_option: 'mtime'

# Pagination
## Set per_page to 0 to disable pagination
per_page: 10
pagination_dir: page

# Include / Exclude file(s)
## include:/exclude: options only apply to the 'source/' folder
include:
exclude:
ignore:

# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: landscape

# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
  type: ''

Your theme _config.yml (Optional)

Hexo and Plugin version(npm ls --depth 0)

+-- hexo@5.4.0
+-- hexo-generator-archive@1.0.0
+-- hexo-generator-category@1.0.0
+-- hexo-generator-index@2.0.0
+-- hexo-generator-tag@1.0.0
+-- hexo-renderer-ejs@1.0.0
+-- hexo-renderer-marked@4.1.0
+-- hexo-renderer-stylus@2.0.1
+-- hexo-server@2.0.0
`-- hexo-theme-landscape@0.0.3

Your package.json package.json

{
  "name": "hexo-site",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "build": "hexo generate",
    "clean": "hexo clean",
    "deploy": "hexo deploy",
    "server": "hexo server"
  },
  "hexo": {
    "version": "5.4.0"
  },
  "dependencies": {
    "hexo": "^5.0.0",
    "hexo-generator-archive": "^1.0.0",
    "hexo-generator-category": "^1.0.0",
    "hexo-generator-index": "^2.0.0",
    "hexo-generator-tag": "^1.0.0",
    "hexo-renderer-ejs": "^1.0.0",
    "hexo-renderer-marked": "^4.0.0",
    "hexo-renderer-stylus": "^2.0.0",
    "hexo-server": "^2.0.0",
    "hexo-theme-landscape": "^0.0.3"
  }
}

Others

stevenjoezhang commented 2 years ago

These additional options are undefined for commonmark, so the behavior of markdown plugins can indeed be customized.

ref https://spec.commonmark.org/0.30/#fenced-code-blocks

yunnysunny commented 2 years ago

These additional options are undefined for commonmark, so the behavior of markdown plugins can indeed be customized.

ref https://spec.commonmark.org/0.30/#fenced-code-blocks

But the hexo's document says

Both Hexo Tag Plugin - Code Block and Tag Plugin - Backtick Code Block supports Line Highlight syntax (mark option). When mark option is given, Hexo will generate the corresponding HTML markup.

https://hexo.io/docs/syntax-highlight#preprocess

github-actions[bot] commented 2 years ago

This issue has been automatically marked as stale because lack of recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stevenjoezhang commented 1 year ago

I'll try to refactor code block and code highlighting: https://github.com/hexojs/hexo/pull/5095

TimonPeng commented 9 months ago

I'll try to refactor code block and code highlighting: #5095

It's implemented in Tag Plugin - Code Block https://github.com/hexojs/hexo/blob/master/lib/plugins/tag/code.js#L48

But the additional options in Tag Plugin - Backtick Code doesn't have any expected for match https://github.com/hexojs/hexo/blob/master/lib/plugins/filter/before_post_render/backtick_code_block.js#L4

D-Sketon commented 9 months ago

I have tried v7.0.0-rc1, the problem still exists

D-Sketon commented 9 months ago

https://hexo.io/docs/tag-plugins.html#Backtick-Code-Block

This is identical to using a code block, but instead uses three backticks to delimit the block. ``` [language] [title] [url] [link text] code snippet ```

[additional options] doesn't exist.😥

pilgrimlyieu commented 1 month ago

Any update?