hexo icon indicating copy to clipboard operation
hexo copied to clipboard

The Backtick Code Block does not support additional options

Open yunnysunny opened this issue 4 years ago • 9 comments

Check List

Please check followings before submitting a new issue.

  • [x] I have already read Docs page & Troubleshooting page
  • [x] I have already searched existing issues and they are not help to me
  • [x] I examined error or warning messages and it's difficult to solve
  • [x] Using the latest version of Hexo (run hexo version to check)
  • [x] Node.js is higher than minimum required version

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 avatar Nov 30 '21 08:11 yunnysunny

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)

+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
`-- [email protected]

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

yunnysunny avatar Nov 30 '21 08:11 yunnysunny

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

stevenjoezhang avatar Dec 04 '21 18:12 stevenjoezhang

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

yunnysunny avatar Dec 05 '21 12:12 yunnysunny

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.

github-actions[bot] avatar Feb 04 '22 00:02 github-actions[bot]

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

stevenjoezhang avatar Nov 22 '22 03:11 stevenjoezhang

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

TimonPeng avatar Sep 21 '23 04:09 TimonPeng

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

D-Sketon avatar Sep 21 '23 05:09 D-Sketon

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.😥

D-Sketon avatar Sep 21 '23 05:09 D-Sketon