繁体   English   中英

如何配置 prettier 或 eslint 在 function 定义和其他块之后放置换行符?

[英]How to configure prettier or eslint to put a newline after function definitions and other blocks?

现在 prettier 给我这个:

function _project(x, k, dim: number = -1, eps: Float = -1.0) {
  if (eps < 0) {
    if (x.dtype == torch.float32) {
      eps = 4e-3
    } else {
      eps = 1e-5
    }
  }
  maxnorm = (1 - eps) / sabs(k) ** 0.5
  maxnorm = torch.where(k.lt(0), maxnorm, k.newFull([], 1e15))
  norm = x.norm({ dim: dim, keepdim: true, p: 2 }).clampMin(1e-15)
  cond = norm > maxnorm
  projected = (x / norm) * maxnorm
  return torch.where(cond, projected, x)
}
function lambdaX(
  x: TorchTensor,
  k: TorchTensor,
  keepdim = false,
  dim = -1,
) {
  return _lambdaX(x, k, { keepdim: keepdim, dim: dim })
}
function _lambdaX(
  x: TorchTensor,
  k: TorchTensor,
  keepdim: Bool = false,
  dim: number = -1,
) {
  return (
    2 /
    (1 + k * x.pow(2).sum({ dim: dim, keepdim: keepdim })).clampMin(
      1e-15,
    )
  )
}
function inner(
  x: TorchTensor,
  u: TorchTensor,
  v: TorchTensor,
  k,
  keepdim = false,
  dim = -1,
) {

有没有办法配置 prettier 或 eslint 在某些块之后放置一个空格,所以它更像这样:

function _project(x, k, dim: number = -1, eps: Float = -1.0) {
  if (eps < 0) {
    if (x.dtype == torch.float32) {
      eps = 4e-3
    } else {
      eps = 1e-5
    }
  }
  
  maxnorm = (1 - eps) / sabs(k) ** 0.5
  maxnorm = torch.where(k.lt(0), maxnorm, k.newFull([], 1e15))
  norm = x.norm({ dim: dim, keepdim: true, p: 2 }).clampMin(1e-15)
  cond = norm > maxnorm
  projected = (x / norm) * maxnorm

  return torch.where(cond, projected, x)
}

function lambdaX(
  x: TorchTensor,
  k: TorchTensor,
  keepdim = false,
  dim = -1,
) {
  return _lambdaX(x, k, { keepdim: keepdim, dim: dim })
}

function _lambdaX(
  x: TorchTensor,
  k: TorchTensor,
  keepdim: Bool = false,
  dim: number = -1,
) {
  return (
    2 /
    (1 + k * x.pow(2).sum({ dim: dim, keepdim: keepdim })).clampMin(
      1e-15,
    )
  )
}

function inner(
  x: TorchTensor,
  u: TorchTensor,
  v: TorchTensor,
  k,
  keepdim = false,
  dim = -1,
) {

我目前更漂亮的配置是:

{
  semi: false,
  parser: 'typescript',
  trailingComma: 'all',
  singleQuote: true,
  printWidth: 72,
  tabWidth: 2,
  useTabs: false,
  arrowParens: 'avoid',
  quoteProps: 'as-needed',
  bracketSpacing: true,
  proseWrap: 'always',
  endOfLine: 'lf',
  singleAttributePerLine: true,
  importOrder: [
    '^\\w(.*)$',
    '^@(.*)$',
    '~(.*)$',
    '\\..(.*)$',
    '\\.(.*)$',
  ],
  importOrderSeparation: true,
  importOrderSortSpecifiers: true,
}

我像这样以编程方式运行它:

const prettier = require('prettier')

function pretty(string) {
  return prettier.format(string, config)
}

您最接近这种“块之间的空间”风格的是什么?

我认为您正在寻找 ESlint padding-line-between-statements规则。 您甚至可以定义多个规则;

{
    "padding-line-between-statements": [
        "error",
        { "blankLine": "always", "prev": "function", "next": "function" },
        { "blankLine": "always", "prev": "function", "next": "block" },
        { "blankLine": "always", "prev": "block", "next": "function" },
        ...
    ]
}

文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM