Separar um traço (-), um traço (-) e um emdash (-)

16

Um traço (-), um traço (-) e um emdash (-) são diferentes, mas difíceis de distinguir. Isso causa problemas, por exemplo, ao escrever programas. Existe alguma maneira de diferenciá-los mais facilmente no emacs? Obrigado.

StackExchange for All
fonte
Você pode falar sobre um caso de uso desses traços que causam problemas ao escrever código? O único traço que encontrei ao ler e escrever código é o traço regular. Uso n-dash e m-dash apenas na documentação do modo organizacional usando --e ---.
Kaushal Modi
Portanto, o problema não está no código do emacs, mas em algo que você copiou de uma página da web. É provável que a pessoa que escreveu esse artigo o fez em org-modeonde --será renderizada como n-dash, a menos que esteja envolto em textual ou em forma de código semelhante =command --some-arg=.
Kaushal Modi
Eu acredito em alguns? todos? os sabores de remarcação também suportam o que é muito mais prevalente do que o modo organizacional para escrever blogs. Portanto, esse é um problema muito provável.
Kaushal Modi
1
Certamente, o primeiro é um hífen, não um traço.
TRiG 27/02

Respostas:

10

Aqui está um pouco divertido com carinhas Unicode. O traço visualmente se torna uma carinha sorridente. O traço visualmente se torna um rosto sorridente branco. Observe que algumas versões do Emacs podem não suportar os caracteres Unicode de rosto sorridente - é apenas uma demonstração - outros caracteres Unicode podem, é claro, ser escolhidos. Outros rostos podem ser usados, e o usuário é livre para compor seus próprios rostos.

(let ((glyph-en-dash (make-glyph-code ?\u263A 'font-lock-keyword-face))
      (glyph-em-dash (make-glyph-code ?\u263B 'font-lock-function-name-face)) )
  (when (not buffer-display-table)
    (setq buffer-display-table (make-display-table)))
  (aset buffer-display-table 8211 `[,glyph-en-dash])
  (aset buffer-display-table 8212 `[,glyph-em-dash]))

Aqui está um exemplo atualizado que concatena efetivamente o hífen-menos e adiciona cor - ou seja, o 8211 visual fica --com a font-lock-keyword-facecoloração as; e, o 8212 visual se torna ---com a font-lock-function-name-facecoloração.

(let ((glyph-en-dash (make-glyph-code ?\u002D 'font-lock-keyword-face))
      (glyph-em-dash (make-glyph-code ?\u002D 'font-lock-function-name-face)) )
  (when (not buffer-display-table)
    (setq buffer-display-table (make-display-table)))
  (aset buffer-display-table 8211 `[,glyph-en-dash ,glyph-en-dash])
  (aset buffer-display-table 8212 `[,glyph-em-dash ,glyph-em-dash ,glyph-em-dash]))
lista de leis
fonte
O en-dash pode ser renderizado como --e em-dash como ---com uma face distinta como vermelho forte, para que o usuário saiba que o emacs as processou de maneira diferente?
Kaushal Modi
2
@kaushalmodi - atualizei o exemplo para incluir 8211como --no font-lock-keyword-face; e o 8212como ---com o font-lock-function-name-face.
lawlist
9

Para citar os documentos:

C-x =executa o comando what-cursor-position, que é uma função Lisp compilada interativa simple.el.

É obrigado a C-x =.

(what-cursor-position &optional DETAIL)

Imprima informações na posição do cursor (na tela e no buffer). Descreva também o caractere após o ponto e forneça seu código de caractere em octal, decimal e hexadecimal.

Para um caractere multibyte não ASCII, também forneça sua codificação no sistema de codificação selecionado do buffer se o sistema de codificação codificar o caracter com segurança. Se o caractere estiver codificado em um byte, esse código será mostrado em hexadecimal. Se o caractere estiver codificado em mais de um byte, apenas "..." será mostrado.

Além disso, com o argumento prefix, mostre detalhes sobre esse caractere no buffer * Help *. Veja também o comando `description-char '.

A ênfase e a formatação são minhas.

Tente se lembrar destes códigos:

  • HYPHEN-MINUS 45
  • EN DASH 8211
  • EM DASH 8212

Mas se você os esquecer, poderá fazê-lo facilmente C-u C-x =, o que abrirá um buffer com informações extras, incluindo um name:campo.

PythonNut
fonte
1
qual é a diferença entre hífen, menos e hífen em termos de seus glifos?
StackExchange for All
HYPHEN-MINUSé o nome Unicode canônico do traço simples, que você geralmente pode digitar pressionando a tecla à esquerda da =tecla. É o traço "regular" usado em toda parte na programação.
PythonNut
quando é chamado traço e quando hífen?
StackExchange for All
@ Tim Para nós, são sinônimos. O corpo dos padrões Unicode o chama de hífen. Você chama isso de traço .... nenhum de vocês está errado.
PythonNut
4
@Tim. Na ortografia inglesa, hífens conectam coisas. Há um hífen em 23 , por exemplo. Traços separam as coisas. Eu não chamaria isso de traço.
TRiG 27/02
6

Use a biblioteca highlight-chars.elpara destacar os caracteres Unicode da maneira que desejar. Veja Caracteres em destaque no Wiki do Emacs.

Você pode usar o comando hc-highlight-charspara destacar caracteres de quatro maneiras:

  1. individualmente
  2. usando intervalos
  3. usando classes de caracteres (por exemplo [:digit:])
  4. usando conjuntos de caracteres (por exemplo, iso-8859-1ou lao)

hc-highlight-charssolicita que os caracteres sejam destacados em uma face específica e a face a ser usada para eles. (Com um prefixo arg, ele não destaca.)

Quando você for solicitado a destacar os caracteres, poderá usar C-x 8 RETpara escolher caracteres Unicode usando a conclusão.

Desenhou
fonte