paulo1205
(usa Ubuntu)
Enviado em 25/11/2014 - 18:44h
Prezados,
Abaixo eu misturo algumas sugestões com dúvidas.
Como eu participo sobretudo de comunidades do fórum voltadas a programação, acabo utilizando muito a
tag [code], tanto para habilitar
syntax highlighting quanto para permitir formatação com indentação e uso de strigs que, de outro modo, poderiam ser interpretadas pelo fórum como outras
tags de formatação (por exemplo:
[i], que costuma ser usado para indicar índice de
arrays dentro de laços de repetição em C, mas poderia ser interpretado pelo fórum como
tag de início de texto em itálicos).
Começo com uma dúvida: há como escolher a linguagem usada no
syntax highlighting? Hoje, sempre que uso
[code], a linguagem alvo é a de
scripts do shell. Num fórum de C ou de Perl, aquelas regras não fazem tanto sentido e acabam tento muito pouca utilidade além de permitir a indentação. Às vezes até atrapalha.
A implementação atual tem alguns
bugs. Um dos piores é interpretar a sequência “
\0”, que é usada em C, Perl, Java e outras linguagens para designar o caráter nulo (byte com valor zero), de modo especial, substituindo-a com textos na forma “{TEXTO}”, “{TEXTO2}”, “{TEXTO3}” etc., ou coisas parecidas. Tenho o palpite de que isso poderia ser reflexo de que a barra invertida seguida de algum número poder ser interpretada como expressão de referência pregressa em alguns tipos de expressões regulares, e provavelmente o
plugin que permite o
highlighting usa expressões regulares e não está sabendo tratar a ocorrência de tais sequências no meio do código.
Outro problema ocorre principalmente com código em C. Quando ocorre algo como
#include <stdio.h>
o texto compreendido entre os sinais de menor que ("<") e maior que (">"), que designa para o programa o nome de um arquivo de cabeçalhos que são parte do padrão, acaba sendo mal interpretado como se fosse uma
tag HTML de abertura de bloco. Nem sempre isso causa problema visível (ver mais abaixo), mas o
plugin (ou o próprio fórum, não sei) tenta compensar o suposto desequilíbrio de blocos inserindo uma inexistente
tag HTML de fechamento (por exemplo: “<
/stdio.h
>”), que fica visível no código fonte da página e também durante o carregamento da página, antes de o
plugin começar a funcionar.
Existem casos patológicos do problema acima. Se o nome do cabeçalho incluir o caráter barra ("/") (o que acontece quando se usam cabeçalhos como “sys/types.h”, “arpa/inet.h” ou “netinet/ip.h”, por exemplo), o
parser acha não apenas que se tem uma
tag HTML de abertura, mas que ela tem erro de sintaxe, e tenta "corrigi-la" com uma transformação que simplesmente detona o código em C. Por exemplo, algo como “
#include <sys/inet.h>” vira um absurdo “
#include <sys inet.h="" >” e, nesse caso, a suposta
tag de fechamento “<
/sys
>” fica visível também no corpo da postagem.
Gostaria de propor, portanto, a possibilidade de escolher a linguagem usada no
highlighting e também a melhoria de qualidade do
parser usado em cada linguagem.