Oi pessoal!
Vou tentar definir algumas caracteristicas do nosso possivel editor de texto.
1 - Em primeiro lugar, acho que devemos manter as teclas utilizadas pelos editores comerciais pra efeito de manter o padrao. Ou seja:
Shift + Tecla de Navegacao : seleciona
^C : copia
^X : recorta
^V : cola
^Z : desfaz
^N : novo documento
^O : abre arquivo
^S : salva arquivo
^P : imprime
... e outras que possam surgir no caminho
2 - O editor vai ser especifico para linguagens de programacao??? Se for, sugiro desde ja uma distincao básica para os seguintes tipos de texto que eu considero importantissimo que o editor consiga reconhecer e identificar por meio de uma cor diferenciada:
* Texto Normal
* Texto Selecionado
* Texto Com Erro de Sintaxe (parenteses/aspas nao
balanceados,etc)
* Texto Comentario
* Texto Palavra Chave/Reservada
* Texto Identificador (variaveis e constantes, tipos
declarados)
3 - O editor deve ter um dicionario que, de acordo com a linguagem de programacao que estiver sendo usada, identifique o que estiver sendo digitado. Por exemplo:
* definimos que "Texo Palavra Chave" deve aperecer
no video em azul para diferenciar do "Texto Normal" que aparece em verde.
* portanto, se estivermos programando em C, quando
digitarmos printf( ... )', este deve aparecer em azul. Para isso que servira
o dicionario, para nos dizer que printf é um comando, que deve aparecer
em azul, e se digitarmos prntf(...), que nao consta no dicionario, este
vai aparecer em verde como texto normal nos alertando que algo foi digitado
errado.
* o editor deve ser inteligente o suficiente para
identificar que quando se tem uma linha de texto do tipo:
void nova_funcao( void )
a palavra nova_funcao deve ser considerada como
"Texto Palavra Chave"
4 - Concordo com a ideia de que primeiramente, este editor deve ser
desenvolvido para console. Até vou arriscar ir um pouco mais alem,
vamos tentar utilizar somente C Ansi e tentar manter o editor compativel
Dos/Linux. O unico porem fica quanto a utilizacao de C ou C++. Como eu
nao tenho experiencia em nenhuma das duas, acredito que, na era da programacao
orientada a objeto, deveriamos cair de cabeca em C++. Até por
que, depois poderemos utilizar a mesma base para desenvolver um editor
em ambiente grafico utilizando java, tcl/tk, etc... (aproveitando a ideia
do Fabio Berbert)
5 - As seguintes pessoas serao aceitas no projeto:
* experts em C
* experts em sistemas operacionais
* experts em Cobol, Ada, Lisp, Clipper, Basic, ...
* iniciantes de qualquer categoria tambem serao
bem vindos. :)
porem a estes eu deixo um conselho, passem
no site do meu xara:
http://www.gustavo.net/programming/c__tutorials.shtml
e peguem algum tutorial C.
6 - O editor deve manter permanentemente um arquivo de backup que seja atualizado constantemente num periodo curto de tempo, para evitar que aconteca uma coisa muito comum em programacao: a perda das 500 linhas de codigo que voce levou 2hs para digitar e so se lembrou de salvar depois que acabou a luz.
7 - Suporte a mouse
8 - Sugiro partir da seguinte estrutura de menu:
Arquivo
Abrir
Novo
Salvar
Salvar Como
Sair
-----------
Lista dos ultimos arquivos
utilizados (pick list)
Editar
Cortar
Copiar
Colar
-----
Procurar
Substituir
Ir para linha
----------
Show Clippboard
Clear Clippboard
----------------
Compilar
Compilar
(configuravel)
Gerar Executavel
(configuravel)
Executar
(configuravel)
Utilitarios
Calculadora
(decimal/octal/hexa)
Tabela Ascii
Configuracao
Diretorios
Dicionario
9 - OUTROS:
*Vamos tornar linux-projetos@egroups.com nossa lista oficial?
*Comecei a bolar o diagrama de objetos, mas se alguem quiser ir fazendo
outro em paralelo nao tenho nada contra. Até por que, acho que irei
demorar um pouco para termina-lo.
*Deveriamos ter alguem responsavel pela compilacao das ideias e
colocacao delas em alguma pagina, pode ser Ribamar?
* Quanto ao compilador Clipper... trabalhei 5 anos com clipper e ufa!
vai dar servico, acho melhor amadurecer a ideia primeiro.
E' isso ai galera! Desculpa se eu me empolguei, mas o negocio e' chutar bola pra cima e ver aonde a gente vai conseguir pegar ela...
[]s
Gustavo
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Gustavo Jantsch - jantsch@bewnet.com.br