Clipper On Line • Ver Tópico - Tutorial do Programmers Notepad
Página 1 de 12

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 20:48
por JoséQuintas
Vou configurar o programmers notepad do zero.
Aproveitar e colocar um tutorial.
Teoricamente é pegar e usar.
Mas como altero alguns defaults, mostrar o que altero.

Baixar a versão portátil em http://www.pnotepad.org/

Aqui descompactei em d:\tools\pnotepad

Como sempre chamava o QEDIT, usando Q, a forma de me obrigar a usá-lo na época, foi usar um Q.BAT

----- q.bat
start d:\tools\pnotepad\pn.exe %1 %2 %3 %4 %5 %6 %7 %8 %9


Mantenho até hoje.
Por causa desse BAT, que só sei indicar 9 parâmetros, limita a abrir somente 9 fontes por vez.
Se alguém souber como se indica o décimo parâmetro e seguintes, só avisar.
START no BAT é porque abre o editor e já libera o prompt de comando.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 20:49
por JoséQuintas
A tela default com um PRG aberto.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 20:54
por JoséQuintas
Se alterar a linguagem padrão pra Visual Basic, que tem alguns comandos parecidos com Clipper/Harbour, já dá pra ver um pouco de colorização de palavras chave no fonte.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 20:59
por JoséQuintas
Em tools, options, tudo que precisa pra configurar

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 21:02
por JoséQuintas
Primeira mudança.

pn1.png


Numeração de linhas
Já dá pra saber porque.

pn1.png

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 21:06
por JoséQuintas
Tamanho e cor de fonte padrão.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 21:25
por JoséQuintas
Se usar a configuração padrão, vale pra todas as linguagens de programação.
Se usar a configuração avançada, só vale pra linguagem de programação indicada.

Atenção a isso, porque pode ser mais complicado do que parece, dependendo do que fizer.
Tem a cor de fundo, cor de fonte, etc.
Acontece que dependendo de como configurar isso, pode valer pra tudo.
Cor de fundo escura por exemplo, é boa, mas se misturar com configurações pré-existentes de linguagens diferentes, pode não ficar visível nada em determinada linguagem.

O que faço normalmente é eliminar todas as outras, e definir apenas uma pra uso geral, pra facilitar.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 21:27
por JoséQuintas
No avançado também dá pra configurar as palavras chave, as que serão descatacas com alguma cor.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 21:29
por JoséQuintas
Em files é onde se define qual a extensão de arquivo pra cada linguagem.
Costumo marcar essas opções, pra eliminar espaços em branco inúteis, e ter uma linha final em branco.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 21:31
por JoséQuintas
Também dá pra configurar pro editor decidir a linguagem baseando-se no conteúdo do arquivo.
Como eu disse, prefiro uma configuração só pra tudo.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 21:39
por JoséQuintas
Também dá pra configurar ferramentas, para o fonte, ou para o projeto.
É apenas um editor de texto, mas pode ser transformado numa IDE.

Nas ferramentas, dá pra configurar uma captura de uma compilação, por exemplo.

No meu caso, pra compilar digito C <ENTER>
Nem olhei como configurar essas coisas no editor, mas o recurso está disponível.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 21:44
por JoséQuintas
Isto aqui é importante.
O default é ANSI, o que significa a mesma codepage padrão do Windows, PTBR.

Se usar no Harbour ou Clipper a codepage PTBR, é só usar.
Se usar a codepage US, default do Clipper e Harbour, nem sei se vai ser possível usar este editor.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 21:45
por JoséQuintas
A codepage, e o final de linha, podem ser configurados.
Mas ao abrir um arquivo, é reconhecido o padrão que foi utilizado, e permanece o mesmo, a não ser que altere aí.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 21:51
por JoséQuintas
Se quiser mexer na parte avançada da linguagem, o formato é XML, fica na pasta schemmes\, um pra cada linguagem.
Apenas como exemplo, a definição de comentários do VB, que usa aspas simples, equivalente ao // do Clipper/Harbour

      <comments line="'" blockStart="'" blockLine="'" blockEnd="" />


Com base nesses arquivos, dá pra criar algo mais avançado para o Harbour.

O editor aceita plugins, e na internet também já encontrei arquivos específicos pra Harbour/Flagship.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 21:56
por JoséQuintas
Um recurso comum em editores Windows é pesquisar em vários arquivos de uma vez.
Isso é bom quando se está mexendo em todo o sistema de uma vez.

A lista fica na parte de baixo, é só clicar e já abre o fonte posicionado na linha.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 22:05
por JoséQuintas
Aqui um recurso que já não é muito comum: o mesmo fonte aberto em duas janelas.
Dá pra trabalhar com blocos diferentes do mesmo fonte.
A vantagem é que são atualizados simultâneos - senão bastaria habilitar múltipla instância e abrir duas vezes o editor com o mesmo fonte.

Aqui já com cores diferentes das padrão.
Nota: Reduzi o tamanho da janela. Na tela normal a visão é muito maior, além de poder fazer isso na horizontal ou vertical.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 22:11
por JoséQuintas
Só retornando à parte de cores:

Pra facilitar a parte de cores, o mais prático é definir fundo branco ou preto.

É que se for outra cor, como o azul, além de escolher a cor, ela também terá que "combinar" com a cor de fundo.
Esse "combinar" não é questão de ficar bonito, é questão de ficar visível mesmo.
Tem combinação frente/fundo que torna difícil enxergar o texto.

E retornando a parte de usar:
Pra usar é só instalar e usar.
Toda configuração faz parte de "melhorar" o visual, ou deixar na preferência de cada um.
Talvez o "mostrar número de linhas" seja o único adicional interessante.

E se preferir ter o arquivo .BAK após uma alteração, marque nessa parte:
O lado ruim é algum programa confundir *.prg com *.prg.bak

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 22:32
por JoséQuintas
A título de curiosidade, abri alguns arquivos do Harbour.
Neste aqui, como dá pra ver no rodapé, identificou UTF8 e CR+LF

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 22:43
por JoséQuintas
Como já falei, ele tem a opção de projeto, e grupo de projetos.

pn1.png


Mas se pensar:

HBP já é o arquivo do projeto, não tem porque inventar alguma coisa extra.
HBP também pode ser um grupo de projetos

Meu HBP contém *.PRG, tudo que está na pasta faz parte do projeto.

Acho que não precisa nada além disso.

Criou um fonte lá dentro, pronto, já faz parte do projeto.
Abrir e salvar como, já utilizam a pasta default.

C <ENTER> já compila/linquedita
Trocar isso por clique num menu, clique num submenu, e clique em opção... é muito clique.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2015 22:52
por JoséQuintas
Aproveitando e a título de curiosidade, um hbp:

libjose.hbp

*.prg
-ohl
hl.rc
-llibjose

hbwin.hbc
hbct.hbc
hbhpdf.hbc
gtwvg.hbc
hbtip.hbc
hbmisc.hbc
hbziparc.hbc
hbzebra.hbc

-winuni
-m
-w3
-es2
-strip
-compr
-inc
-workdir=d:\temp
-jobs=1


O que tem de diferente:

libjose.hbp - isso aciona o subprojeto pra gerar essa lib

*.prg - todos os fontes da pasta

-llibjose - já inclui a lib (gerada ou existente)

o restante é praticamente padrão.
-winuni era do tempo do Windows 98. Qualquer dia pesquiso se ainda precisa disso.
-jobs=1 é porque prefiro compilar um fonte por vez. Senão confunde quando há erro de fontes diferentes.

Tutorial do Programmers Notepad

MensagemEnviado: 19 Jul 2015 00:24
por JoséQuintas
Mais um a título de curiosidade.
Encontrei uma configuração pra Harbour na internet.
Dá até pra configurar esquema de cores diferentes, conforme o tipo de palavra chave.
Por exemplo, poderiam ser cores diferentes pra comandos de GTs, ou HWGUI, MINIGUI, etc.

Tudo configurado via arquivo XML.

Pelo que li, os esquemas permitem herança.
Tipo... configura um para o Harbour, e depois usa herança, por exemplo pra fazer pra minigui e configurar a parte "não Harbour".

Vou até olhar de novo essa parte.
Lembro que antigamente o Programmers Notepad precisava de um "compilador" separado pra isso.
E salvar configuração era complicado, porque ficava em users/alguma coisa.
Agora parece que vale a pena brincar com isso.

Tutorial do Programmers Notepad

MensagemEnviado: 19 Jul 2015 22:01
por JoséQuintas
Mais uma configuração interessante: o espacejamento entre as linhas.
Caso as linhas estejam muito "grudadas", só aumentar o espacejamento.

Tutorial do Programmers Notepad

MensagemEnviado: 28 Jan 2016 09:44
por Kapiaba
obg. Sr. José Quintas, assim que possivel, vou estuda-lo, desculpe o incomodo. obg. abs.

Tutorial do Programmers Notepad

MensagemEnviado: 28 Jan 2016 10:29
por JoséQuintas
Ok.

O demorado não é acostumar com ele, o demorado é DESACOSTUMAR COM O ANTERIOR.

No DOS cheguei a usar IBM EDIT, IBM PE2, QEdit, Sidekick, Wordstar na opção N, e devo ter usado outros que já não lembro mais.
Eu só abandonei os editores do DOS depois de começar com este, mas mesmo assim, tive que dar o empurrão em mim mesmo, deixando o Qedit mais difícil de acessar.
Estava acostumado a digitar Q<ENTER>, então entrava o QEdit.
Alterei o Q.BAT pra entrar o programmers notepad, e aí foi..... rs

Recortar/copiar/colar é igual qualquer programa Windows, então nem precisa aprender nada novo.

O resto vai pegando com o tempo.

Tem muitos editores de texto Windows com esses mesmos recursos.
Ele é uma das muitas opções, mas acostumei com ele, e até agora tem atendido bem tudo.

Recursos interessantes:

- Code folding, que é, por exemplo, fechar um IF/ENDIF pra visualizar melhor o restante do fonte
(ele usa como referência a endentação, então fonte formatado é importante pra isso)
- Visualizar dois ou mais fontes ao mesmo tempo, dividindo a janela na horizontal ou vertical
- Desfazer alterações no fonte: mesmo que tenha salvo o fonte em disco, se continuar aberto, pode desfazer/refazer todas as alterações
- A pesquisa de alguma coisa em vários fontes de uma vez, podendo clicar em cada um dos resultados e já abrir o fonte correspondente.
- Ele detecta caso o fonte tenha sido alterado fora dele (se o fonte aberto for alterado por outro editor de texto fora dele), evitando perder alterações

E comparado ao DOS, uma vantagem extra é:
Pode deixar a tela na vertical, igual um tablet, e ter muito fonte na tela.

Tutorial do Programmers Notepad

MensagemEnviado: 28 Jan 2016 10:40
por Kapiaba
Obg. Sr. Jopsé Quintas, ainda uso um editor for DOS, igual ao Wordstar na opção N, sou viciado nele, mas está ficando obsoleto demais, não posso fazer um modulo maior que 9.500 linhas, que estoura a memória.

Como sempre, o senhor é um mestre.

Abs.

Tutorial do Programmers Notepad

MensagemEnviado: 28 Jan 2016 10:58
por JoséQuintas
9.500 linhas?
Tá precisando é revisar esse fonte, isso sim. rs

Apesar que tenho um parecido, com tudo que é cadastro padrão, com 9.637 linhas, espero que seja pra algo assim.
Ele abre instantâneo.

pnotepad.png


Agora repare neste: é um backup do MySQL com quase três milhões e meio de linhas. Esse já demora alguns segundos.

pnotepad2.png

Tutorial do Programmers Notepad

MensagemEnviado: 28 Jan 2016 11:51
por Kapiaba
Sim, 9.500 linhas, FUNCÕES auxiliares, eu não modularizo, deixo todas em um único .PRG, principalmente as Mensagem para os Usuários, por ex: FUNCOES.PRG, aqui coloco tudo que é fixo, que sofre pouca alteração.

E, em Fivewin for xharbour, a escrita é grande... Obg. abs.

Tutorial do Programmers Notepad

MensagemEnviado: 28 Jan 2016 16:45
por asimoes
Quintas,

Eu uso o Ultraedit, mas queria testar o programmers notepad, onde eu acho o arquivo de configuração para harbour?

Tutorial do Programmers Notepad

MensagemEnviado: 28 Jan 2016 17:03
por asimoes
Quintas,

Qual é o comando para mover um bloco de linhas para direita/esquerda

descobri, Alt+Shift

Tutorial do Programmers Notepad

MensagemEnviado: 28 Jan 2016 17:14
por asimoes
Agora falta saber como preencher uma coluna com caracter depois de selecionar com alt-shift

Tutorial do Programmers Notepad

MensagemEnviado: 29 Jan 2016 08:57
por Kapiaba
Existem muitas diferenças entre o xdev studio do Vailtom Renato e o programmers Notepad? hoje, vou ver se instalo para dar uma fuçada... Parece bem interessante.

Tutorial do Programmers Notepad

MensagemEnviado: 29 Jan 2016 09:31
por asimoes
Para eu usar como no ultraedit só falta saber:

Como preencher uma coluna com um caracter qualquer.
Find/replace in files

Definir um esquema para o harbour com as keyword de funções/comandos, não sei onde mexer.

No UE tem essas opções.

Tutorial do Programmers Notepad

MensagemEnviado: 10 Fev 2016 19:11
por JoséQuintas
Replace in files, que eu saiba não tem.
Find in files sim.

Tabalhar com colunas nunca procurei, mas usava isso no PE2.

Definir palavras chave, só olhar posts anteriores.

Tutorial do Programmers Notepad

MensagemEnviado: 10 Fev 2016 19:19
por JoséQuintas
Descobri como preenche a coluna, parece até piada

Depois de selecionar a coluna com alt-shift, só digitar a letra.... rs

Você descobriu o mais difícil... era só ter digitado uma letra... rs

Tutorial do Programmers Notepad

MensagemEnviado: 10 Fev 2016 19:53
por asimoes
Muito bom Quintas,

Eu baixei a versão portable, vai ser muito útil.

Tutorial do Programmers Notepad

MensagemEnviado: 10 Fev 2016 21:53
por JoséQuintas
Também serve pra mover coluna, mas é chatinho de usar.
É a mesma coisa marcando uma linha na vertical, e apertar o espaço.

Parece até um copiar/colar, pra todas as linhas de uma vez.
Selecionando a linha na vertical, igual uma coluna vazia, só teclar espaço, pra entrar o espaço no lugar.

E pra esquerda, como apagar colunas, mesmo estilo: marca o bloco vertical e provavelmente o DEL funciona, ou uma letra.

Agora o difícil vai ser lembrar disso quando precisar.... rs
O alt-shift.

Tutorial do Programmers Notepad

MensagemEnviado: 11 Fev 2016 07:58
por asimoes
Quintas,

Consegui ter as mesmas funcionalidades que eu uso no UE no PN, tudo agora é uma questão de adaptação.

Tutorial do Programmers Notepad

MensagemEnviado: 11 Fev 2016 09:33
por JoséQuintas
Tentei configurar o compilador Harbour, mas o formato de saída de erros não bate com nada disponível pra configuração.

compiler.png


Desse jeito é até pior que usar o prompt.

compiler2.png

Tutorial do Programmers Notepad

MensagemEnviado: 11 Fev 2016 10:22
por asimoes
Quintas,

Eu resolvi assim em commad eu executo a bat.

@echo off
set path=\hb32fork\bin
set hb_compiler=mingw
hbmk2 asalibmingw_fork.hbp -dharbourfork -jobs=1 -rebuild > COMPLOG.TXT 2>&1
IF NOT %ERRORLEVEL% == 0 GOTO ERRO ELSE GOTO FIM
:FIM
@echo Lib compilada.
GOTO END

:ERRO
start %windir%\System32\Notepad COMPLOG.TXT
GOTO END
:END

Screen Shot 02-11-16 at 11.22 AM.PNG
Screen Shot 02-11-16 at 11.22 AM.PNG (7.69 KiB) Visualizado 3356 vezes

Tutorial do Programmers Notepad

MensagemEnviado: 11 Fev 2016 11:52
por JoséQuintas
Se for pra capturar desse jeito, é o mesmo que mostrei, que já faz parte do pnotepad.
O que tentei configurar foi algo mais que isso, pra clicar no erro e ir direto no fonte.

Tutorial do Programmers Notepad

MensagemEnviado: 11 Fev 2016 11:56
por JoséQuintas
A única parte que faltou mostrar dessa configuração:

compilar.png


Nesta parte é o nome da ferramenta, e comando a ser utilizado.
Na outra parte é pra definir captura, e o que seria pra integrar melhor a parte de erros.
Pra conseguir usar o "clicar no erro e abrir o fonte."

Nota:
Aquela aba de console I/O é justamente pra capturar o resultado da compilação.
O "output parsing" seria o algo mais, o segredo pra clicar no erro e abrir o fonte.

Tutorial do Programmers Notepad

MensagemEnviado: 11 Fev 2016 13:24
por JoséQuintas
Acabo de fazer o contrário:

prompt.png


prompt2.png

Tutorial do Programmers Notepad

MensagemEnviado: 11 Fev 2016 13:27
por JoséQuintas
E já incrementei, basta um ALT-S

alts.png


Só falta agora descobrir como configurar a janela, talvez em propriedades de CMD.EXE

Tutorial do Programmers Notepad

MensagemEnviado: 22 Mai 2016 19:30
por asimoes
Quintas,

para incluir funções novas para destacar no pn como é feito, por exemplo hb_default, win_olecreateobject e outras??

Tutorial do Programmers Notepad

MensagemEnviado: 22 Mai 2016 21:45
por JoséQuintas

Tutorial do Programmers Notepad

MensagemEnviado: 01 Jun 2016 13:54
por janio
aSimoes,

Vc conseguiu configurar o Programmer NotePad para reconhecer os COMANDOS e FUNÇÕES do harbour a fim de destacar com cor diferente?

Janio

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 10:22
por asimoes
Olá Quintas,

Como fazemos para destacar os operadores .t. .f. .and. .or. no PN ?

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 10:45
por JoséQuintas
Não consegui, porque ele desconsidera os pontos.
Não dá pra destacar .AND., .NOT., .OR., .T., .F. .

Mas depois de olhar algumas telas de editor, notei o seguinte:
Como é normal até em propagandas, quando se destaca tudo, nada se destaca..... rs
No final, acaba sendo só pra ficar "bonitinho".

No final, acho que os mais importantes são:
- string: pra destacar se esquecer de fechar a string
- operadores: pra enxergar melhor parênteses, colchetes, etc.
- fonte bloqueado/comentado mais escurecido

Mesmo assim, deixei em outra cor os que fazem parte de #define
Não é automático, tem que cadastrar também.

editor.png


Peguei essa opção de separar keywords de um arquivo pra Harbour.
Acaba deixando 4 opções de keywords, cada uma de uma cor.

config.png


Aí cada um escolhe.
De repente HARBOUR de uma cor, MINIGUI de outra, funções particulares de outra...
No meu caso, achei interessante destacar #define de outra cor.

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 11:06
por JoséQuintas
Comentário a mais:

Apesar de alterar pela IDE, toda configuração fica em um XML.

 Pasta de d:\TOOLS\pnotepad\schemes

25/05/2016  09:26    <DIR>          .
25/05/2016  09:26    <DIR>          ..
08/04/2012  13:57             1.040 extmap.dat
05/02/2016  22:07             4.821 harbour.scheme
08/04/2012  13:57             3.170 master.scheme
19/07/2015  02:20             3.029 vb.scheme
               4 arquivo(s)         12.060 bytes
               2 pasta(s)   208.954.929.152 bytes disponíveis


De repente, via programa dá pra atualizar as palavras-chave nesse arquivo.
aberto no próprio programmers notepad:
Vou omitir alguns com ... pra ficar menor, e facilitar enxergar as divisões do XML

<?xml version="1.0" encoding="UTF-8"?>
<Scheme>
   <keyword-classes>
      <keyword-class name="harbour_commands">
            ! .t. .f. .not. .and. .or. := += -= == ? @
            accept alias all alternate announce append average begin box break
            ...
            valid wait when while with word wrap zap top bottom
      </keyword-class>
      <keyword-class name="harbour_functions">
         aadd abs achoice aclone acopy adel adir aeval afields afill
         ...
         val valtype version year
      </keyword-class>
      <keyword-class name="harbour_constants">
      </keyword-class>
      <keyword-class name="harbour_private">
         pdfclass frmmainclass frmcadclass appusername appempresanome appempresaapelido appcnmysql
         msgyesno wsave wrestore recappend reclock recunlock
      </keyword-class>
   </keyword-classes>
   <language name="harbour" title="Harbour" folding="true" foldcomments="true" foldcompact="true" foldpreproc="true">
      <lexer name="flagship"/>
         <comments line="*" blockStart="*" blockLine="" blockEnd="" />
         <comments line="//" blockStart="//" blockLine="//" blockEnd="" />
         <comments line="/*" blockStart="/*" blockLine="/*" blockEnd="*/" />
         <use-keywords>
            <keyword key="0" name="Harbour Commands" class="harbour_commands"/>
            <keyword key="1" name="Harbour Functions" class="harbour_functions"/>
            <keyword key="2" name="Harbour Constants" class="harbour_classes"/>
            <keyword key="3" name="Harbour Private" class="harbour_private"/>
         </use-keywords>
         <use-styles>
            <style name="Default" key="32"/>
             <style name="White space" key="0"/>
             <style name="Comment" key="1" class="comment"/>
             <style name="Comment Line" key="2" class="comment"/>
             <style name="Comment Doc" key="3" class="comment"/>
             <style name="Comment Line Doc" key="4" class="comment"/>
              <style name="Comment keyword" key="5" class="comment"/>
               <style name="Comment keyword error" key="6" class="comment"/>
               <style name="Keyword - Commands" key="7" class="keyword"/>
           <style name="keywords 2 - Functions" key="8" class="keyword"/>
           <style name="keywords 3 - Constants" key="9" class="keyword"/>
            <style name="keywords 4 - Private" key="10" class="keyword"/>
            <style name="Number" key="11" class="number"/>
            <style name="String" key="12" class="string"/>
            <style name="Preprocessor (directives)" key="13" class="preprocessor"/>
             <style name="Operator" key="14" class="operator"/>
             <style name="Identifier" key="15" class="identifier"/>
           <style name="Date" key="16"/>
           <style name="Error String" key="17" class="unclosedstring"/>
      </use-styles>
   </language>
</Scheme>


Cada conjunto recebe um Key="n", que vai identificar o grupo naquela seleção, e provavelmente indica a cor correspondente na configuração do PN.
Além do que tem aí, tem as que são adicionadas depois pela IDE.
Então o ideal é "descarregar" da IDE pra esse arquivo quando tiver muita alteração, melhor pra distribuir.
Tinha esquecido disso, aí não se vê nada do que se refere a #define, apesar de existir na ide.
Mas isso é só se for distribuir, no uso nem precisa mexer nisso.

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 11:09
por asimoes
Quintas,

Somente os operadores que não consegui destacar em um grupo mas não em problema, já consegui entender como adicionar funções do harbour para destacar no texto.

Screen Shot 06-04-16 at 11.06 AM.PNG

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 11:22
por JoséQuintas
Ah sim, os esquemas tem HERANÇA.

No final tem: configurações pré-definidas, configurações do usuário.

MASTER.SCHEMMA.XML -> o geral
HARBOUR.SCHEMMA.XML -> alterações pra linguagem
USERSETTINGS.XML -> alterações do usuário

Se tem configuração pessoal que quer deixar no Harbour, move de USER pra HARBOUR
Se tem configuração que quer deixar geral, move para MASTER

Se quiser criar diferente pra minigui/hwgui, etc. pode querer copiar de um pro outro pra facilitar.

E pode usar qualquer schemma existente como modelo, até mesmo pra ver se tem recurso a mais.

Isso vai longe... melhor ir usando, e quando sobrar tempo dá uma olhada (se lembrar... rs)

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 12:59
por asimoes
Modificar o arquivo harbour.scheme por fora bagunça toda configuração de cores.

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 13:09
por asimoes
Quintas,

Tem como você passar essa versão que você tem do pn?

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 13:41
por JoséQuintas
http://www.jpatecnologia.com.br/arquivos/pnotepad.zip

Apaguei o que não interessava.
Se quiser, pode baixar o original completo, e copiar os XMLs de configuração daí.

A configuração é dividida em duas partes:

pnotepad\schemes -> com os esquemas padrão, nesse zip tem também o harbour
pnotepad\settings -> com mudanças feitas pelo usuário, incluindo cores, adicionar keywords, etc.

Prefiro usar a configuração do Harbour pra tudo.

Até esqueci que dá pra pegar a lista de comandos/funções.

hbmk2 -find *


Assim já cadastra tudo de uma vez.
Depois disponibilizo aqui o harbour.scheme atualizado.

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 14:02
por asimoes
Quintas,

Estou testando este editor ConText parece ser bom, tem um arquivo de sintaxe para clipper 5.2, fiz ua cópia para harbour, precisa completar com as funções do harbour.

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 14:16
por JoséQuintas
Abri aqui o editor, mas só uma olhada rápida.

Só corrigindo:
A saída do hbmk2 -find * só tem funções.

O protótipo pra gerar a configuração, pode servir de idéia pra outros, nem que seja pra usar copiar/colar no final.

Provavelmente cada um vai ter uma preferência pessoal.
Funções - saída do hbmk2
Comandos - Talvez de alguns arquivos CH, como std.ch, hbclass.ch
Defines - Talvez inkey.ch, e alguns outros
E o que sobrar... manualmente

Aceito sugestões sobre como obter as listas.
O Harbourdoc.com.br deve conter vários comandos

PROCEDURE Main

   LOCAL cXml := XmlPadrao()
   LOCAL cLstComando := ""
   LOCAL cLstFuncao  := ""
   LOCAL cLstDefine  := ""
   LOCAL cLstPessoal := ""

/*
   funções:  saídas de hbmk2 -find *    contendo "(" e ")"
   Comandos: ???
   defines:   arquivos ch ???
*/

   cXml := StrTran( cXml, "___TROCAR_POR_COMANDOS___", cLstComando )
   cXml := StrTran( cXml, "___TROCAR_POR_FUNCOES___",  cLstFuncao )
   cXml := StrTran( cXml, "___TROCAR_POR_DEFINE___",   cLstDefine )
   cXml := StrTran( cXml, "___TROCAR_POR_PESSOAL___",  cLstPessoal )
   hb_MemoWrit( "harbour.scheme", cXml )
   RETURN

STATIC FUNCTION XmlPadrao()

   LOCAL cXml := ""

   cXml += [<?xml version="1.0" encoding="UTF-8"?>]
   cXml += [<Scheme>]
   cXml += [   <keyword-classes>]
   cXml += [      <keyword-class name="harbour_commands">]
   cXml += [___TROCAR_POR_COMANDOS___]
   cXml += [      </keyword-class>]
   cXml += [      <keyword-class name="harbour_functions">]
   cXml += [___TROCAR_POR_FUNCOES___]
   cXml += [      </keyword-class>]
   cXml += [      <keyword-class name="harbour_constants">]
   cXml += [___TROCAR_POR_DEFINE___]
   cXml += [      </keyword-class>]
   cXml += [      <keyword-class name="harbour_private">]
   cXml += [___TROCAR_POR_PESSSOAL___]
   cXml += [      </keyword-class>]
   cXml += [   </keyword-classes>]
   cXml += [   <language name="harbour" title="Harbour" folding="true" foldcomments="true" foldcompact="true" foldpreproc="true">]
   cXml += [      <lexer name="flagship"/>]
   cXml += [      <comments line="*"  blockStart="*"  blockLine=""   blockEnd="" />]
   cXml += [      <comments line="//" blockStart="//" blockLine="//" blockEnd="" />]
   cXml += [      <comments line="/*" blockStart="/*" blockLine="/*" blockEnd="*/" />]
   cXml += [      <use-keywords>]
   cXml += [         <keyword key="0" name="Harbour Commands"  class="harbour_commands"/>]
   cXml += [         <keyword key="1" name="Harbour Functions" class="harbour_functions"/>]
   cXml += [         <keyword key="2" name="Harbour Constants" class="harbour_constants"/>]
   cXml += [         <keyword key="3" name="Harbour Private"   class="harbour_private"/>]
   cXml += [      </use-keywords>]
   cXml += [      <use-styles>]
   cXml += [         <style name="Default"                   key="32"/>]
   cXml += [         <style name="White space"               key="0"/>]
   cXml += [         <style name="Comment"                   key="1"  class="comment"/>]
   cXml += [         <style name="Comment Line"              key="2"  class="comment"/>]
   cXml += [         <style name="Comment Doc"               key="3"  class="comment"/>]
   cXml += [         <style name="Comment Line Doc"          key="4"  class="comment"/>]
   cXml += [         <style name="Comment keyword"           key="5"  class="comment"/>]
   cXml += [         <style name="Comment keyword error"     key="6"  class="comment"/>]
   cXml += [         <style name="Keyword - Commands"        key="7"  class="keyword"/>]
   cXml += [         <style name="keywords 2 - Functions"    key="8"  class="keyword"/>]
   cXml += [         <style name="keywords 3 - Constants"    key="9"  class="keyword"/>]
   cXml += [         <style name="keywords 4 - Private"      key="10" class="keyword"/>]
   cXml += [         <style name="Number"                    key="11" class="number"/>]
   cXml += [         <style name="String"                    key="12" class="string"/>]
   cXml += [         <style name="Preprocessor (directives)" key="13" class="preprocessor"/>]
   cXml += [         <style name="Operator"                  key="14" class="operator"/>]
   cXml += [         <style name="Identifier"                key="15" class="identifier"/>]
   cXml += [         <style name="Date"                      key="16"/>]
   cXml += [         <style name="Error String"              key="17" class="unclosedstring"/>]
   cXml += [      </use-styles>]
   cXml += [   </language>]
   cXml += [</Scheme>]
   RETURN cXml

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 15:01
por asimoes
Usando o context
Screen Shot 06-04-16 at 03.00 PM.PNG

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 15:15
por JoséQuintas
Em termos de visual está igual, porque tudo isso é configurado.
Não encontrei a opção de "find in files", somente "find in project files".
Uso isso, porque de vez em quando pesquiso em outro projeto, ou até nas pastas do Harbour.

Sobre obter a lista de funções, fiz assim:

PROCEDURE Main

   LOCAL cXml := XmlPadrao()
   LOCAL aLstComando := {}, aLstFuncao := {}, aLstDefine := {}, aLstPessoal := {}
   LOCAL oFile, cTxtLine, oNomeFuncao

   RUN ( "hbmk2 -find * > lixo.txt" )

   oFile := TFileRead():New( "lixo.txt" )
   oFile:Open()
   DO WHILE oFile:MoreToRead()
      cTxtLine := oFile:ReadLine()
      DO CASE
      CASE .NOT. "(" $ cTxtLine
      CASE Lower( "installed" ) $ Lower( cTxtLine )
      CASE ".hbc" $ cTxtLine
      OTHERWISE
         cTxtLine := Lower( StrTran( cTxtLine, "()", "" ) )
         AAdd( aLstFuncao, cTxtLine )
      ENDCASE
   ENDDO
   oFile:Close()
   fErase( "lixo.txt" )
   ASort( aLstFuncao )
   cTxtLine := ""
   FOR EACH oNomeFuncao IN aLstFuncao
      cTxtLine += oNomeFuncao + hb_eol()
   NEXT
   cXml := StrTran( cXml, "___TROCAR_POR_FUNCOES___",  cTxtLine )

   //cXml := StrTran( cXml, "___TROCAR_POR_COMANDOS___", cLstComando )
   //cXml := StrTran( cXml, "___TROCAR_POR_DEFINE___",   cLstDefine )
   //cXml := StrTran( cXml, "___TROCAR_POR_PESSOAL___",  cLstPessoal )
   hb_MemoWrit( "harbour.scheme", cXml )
   RETURN

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 16:01
por asimoes
Tenho um sistema (herdado de um colega) que está todo codificado com PT850, inclusive tem janelas desenhadas:

Visualizado com Ultraedit
UE.PNG
UE


Visualizado com Programmer´s Notepad
PN.PNG
PN


Para visualizar corretamente os caracteres nos editores, tenho que habilitar a fonte Terminal com 14 pontos.

No ultraedit deixa eu acentuar ã ç õ ú etc.

No Programmer´s Notepad os caracteres não saem corretos.
O que já está acentuado ele exibe normal, mas se fizer uma edição os caracteres não mostra corretamente

Acredito que seja a code page que não tem no PN

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 17:34
por JoséQuintas
O PN usa a codepage default do Windows, que é PT-BR.
Aqui eu uso PT_ISO no Harbour.
Vai tudo normal.

teste.png


O Harbour aceita fonte em UTF-8.
Não sei se ele faz toda conversão automaticamente pra qualquer codepage.

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 17:37
por JoséQuintas
Observe também o rodapé pra saber a codepage atual.
Ele mantém o que for detectado no arquivo original.

Mas em Ansi continua sendo codepage default.

teste.png

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 17:47
por JoséQuintas
Pra quem acha isso de codepage uma chatice no Harbour.....
Saibam que isso sempre existiu.

Vejam o que acontece ao usar o copiar/colar entre o VB6 da Microsoft, e o Skype da Microsoft:

tela.png

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 17:58
por JoséQuintas
imaginem isso em drivers de bancos de dados, nomes de MP3, textos diversos, comunicação entre programas, etc, etc, etc...

Acho que é nessas horas que a Microsoft decide remover alguma compatibilidade com versões anteriores.

E pra nomes de arquivo, ainda tinha aquela compatibilidade de 8 letras com DOS....
É muita coisa "por trás das câmeras" sendo tratada por tudo que é rotina.

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 18:06
por asimoes
Cada editor tem suas vantagens e limitações

No fonte que eu herdei por enquanto tenho que usar o UE porque ele permite acentuação como está definido no programa:

hb_LangSelect("PT")
hb_CDPSelect( "PT850" )

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 18:39
por JoséQuintas
O que altera com esses comandos?

Uso assim:

REQUEST HB_CodePage_PTISO
...
   Set( _SET_CODEPAGE, "PTISO" )


E na Harupdf:

WinAnsiEncoding.

Tutorial do Programmers Notepad

MensagemEnviado: 04 Jun 2016 19:55
por Claudio Soto
hb_LangSelect("PT")
Altera el idioma con el cual Harbour muestra los mensajes.

hb_CDPSelect( "PT850" )
Altera el código de página del conjunto de caracteres con el cual se realiza la entrada y salida de los datos en Harbour. En otras palabras define si los datos están en Unicode o ANSI portugués, español, europeo occidental, etc.

Tutorial do Programmers Notepad

MensagemEnviado: 05 Jun 2016 21:14
por JoséQuintas
Não entendi como usar, mas ao que parece, pegaria automaticamente os nomes de funções, classes, métodos, etc. direto do fonte.

http://www.pnotepad.org/docs/howto/tag_custom_languages/

Tutorial do Programmers Notepad

MensagemEnviado: 10 Jun 2016 18:29
por JoséQuintas
Uma coisa que fiz, que outros podem achar interessante:
Até pouco tempo atrás eu não usava SOFTSEEK junto com o SEEK, na prática nem sabia que isso podia ser feito.
Então corre o risco de deixar passar isso.

Só pra chamar MINHA atenção, coloquei o SOFTSEEK na lista de constantes (#define) para efeito de cor.
Achei interessante, então repassando - está em VERMELHO

softseek.png

Tutorial do Programmers Notepad

MensagemEnviado: 12 Jun 2016 23:51
por JoséQuintas
Tentei configurar a parte de tags mas não consegui.

Em pnotepad\ctags, encontra-se um arquivo com este conteúdo:

--langdef=properties
--langmap=properties:.ini,python:+.pyw
--regex-properties=/^\[(.*)\]/\1/s,Section/


um que encontrei na internet:

--langdef=Clipper
--langmap=Clipper:.prg
--regex-clipper=/^FUNCTION[ \t]*([a-zA-Z0-9_]+)/\1/f,function/
--regex-clipper=/^PROCEDURE[ \t]*([a-zA-Z0-9_]+)/\1/p,procedure/


http://www.zeusedit.com/phpBB3/viewtopic.php?t=3367

Se alguém tiver alguma idéia de como acertar isso.

A intenção é o editor já puxar automaticamente declaração de funções, procedures, classes, métodos, etc. pra criar uma referência rápida/atalhos.

Tutorial do Programmers Notepad

MensagemEnviado: 02 Jul 2016 23:29
por microvolution
Boa noite professores!
Eu usava um NOTEPAD ++ baixado com uma versão da HMG (não sei qual mais) que já vinha a opção de linguagem HARBOUR.
Mas, em março/2016, perdi tudo aqui com um HD que da noite para o dia pifou.
Demorei 3 meses, mas, consegui recuperar pelo menos os fontes.
Então, baixei a HMG 3.4.2 e o NOTEPAD++ que veio é a versão em português: v5.9.2 (unicode) build time: JUN/4/2011 - 21:42:34.
Está bem diferente as configurações que foram apresentadas desde o início deste tópico. Mas, consegui encontrar com facilidade a aba LINGUAGEM que não VISUAL BASIC e sim VB (entendo que é a mesma).
Mas, senhores, como faço para salvar e configurar ou instalar a opção de linguagem: HARBOUR, HMG, etc?
Grato!
E, parabéns pelo tópico!

Tutorial do Programmers Notepad

MensagemEnviado: 27 Abr 2017 08:55
por asimoes
Não sou "expert" em P.N. eu uso Ultraedit, mas queria ter uma alternativa que é o P.N.

Temos fontes (legado clipper) no trabalho que foram editados em oem (qedit) e tem janela desenhada exe:
Essa imagem foi capturada no ultraedit usando fonte terminal 14 pontos, eu consegui abrir esse fonte no P.N. usando a fonte terminal com 14 pontos, mas na edição os caracteres não saem acentuados, tem haver com codepage ? não achei essa configuração.
No ultraedit
Screen Shot 04-27-17 at 08.49 AM.PNG

No P.N.
Screen Shot 04-27-17 at 08.54 AM.PNG

Screen Shot 04-27-17 at 08.57 AM.PNG

Tutorial do Programmers Notepad

MensagemEnviado: 27 Abr 2017 11:51
por JoséQuintas
O Programmers Notepad usa a mesma codepage do Windows, que geralmente usamos, português-Brasil.
Ele não tem opção de alternativas de Ansi.

pnotepad.png


Acho até estranho os outros caracteres aparecerem direito.

Tutorial do Programmers Notepad

MensagemEnviado: 28 Abr 2017 14:53
por asimoes
off topic: Comprei o Ultraedit portable posso instalar em até 3 pendrives.

Tá muito bom:

Screen Shot 04-28-17 at 02.51 PM.PNG

Tutorial do Programmers Notepad

MensagemEnviado: 30 Abr 2017 17:20
por JoséQuintas
Vai parecer piada, mas é sério.....
Pedi ajuda pro Programmers Notepad, e ele só me falou pra ler o manual de novo....
E finalmente começou a sair alguma coisa...
É sério isso... tá até registrado....

https://github.com/simonsteele/pn/issues/157

Agora olhem:
Lista de funções, métodos e até #defines
Ainda ajustando

pnotepad.png


Faltavam essas seções, que estão no arquivo do meio.
Antes eu tinha deixado como "properties", mas é uma para cada nome da configuração.

Tutorial do Programmers Notepad

MensagemEnviado: 30 Abr 2017 19:30
por JoséQuintas
Agora com variável, mas só deu certo se não tiver espaços em branco antes da declaração.
Tentei criar um projeto pelo PN, mas a lista continua sendo por fonte.

Aliás... isso de variável é mais curiosidade, porque de nada adiantaria a lista de variáveis locais.
Talvez seja interessante pra MEMVAR, PUBLIC e PRIVATE.

Como atualmente a maioria dos editores de texto trabalham com ctags, é só verificar como fazer isso.

pnotepad.png

Tutorial do Programmers Notepad

MensagemEnviado: 01 Mai 2017 05:08
por JoséQuintas
Foi o máximo que deu.
Está mostrando:
- classes
- constantes (#define)
- function
- métodos
- procedures
- variavéis memvar definidas no topo

Agora quem tiver experiência no regex e puder ajudar a definir regras...
Falta: ajustar regex pra maiúscula/minúscula e espaços em branco no início, pra funcionar os demais.
E talvez dê pra alterar as regras, e pegar logo a linha completa, o que mostraria os parâmetros necessários pras funções/métodos

pnotepad.png

Tutorial do Programmers Notepad

MensagemEnviado: 02 Mai 2017 20:40
por JoséQuintas
Aleluia !!!!
Tive que dividir pra poder postar.

Porque se contentar com lista de funções, se dá pra pegar #define, funções, procedures, classes, métodos de classe, variáveis de classe, e tudo que inventar..... rs
E ao clicar em algo, vai direto no fonte aonde aquilo foi definido.

ctags.png

Tutorial do Programmers Notepad

MensagemEnviado: 03 Mai 2017 02:19
por JoséQuintas
Esqueci de mencionar:

Continua precisando de ajuda na definição do regex

Pra MEMVAR, PRIVATE e PUBLIC, precisaria extrair a lista inteira, e só está pegando a primeira variável.

Maiúscula e minúscula consigo acertar....

Tutorial do Programmers Notepad

MensagemEnviado: 03 Mai 2017 02:51
por JoséQuintas
E o limite é a imaginação..... rs

agora o xtranslate, acabei usando o nome disponível macro

xtranslate.png

Tutorial do Programmers Notepad

MensagemEnviado: 03 Mai 2017 09:20
por JoséQuintas
Agora me surpreendeu: não fiz nada pra isso. tá virando uma IDE, até com ajuda de sintaxe.
SENSACIONAL


syntax.png

Tutorial do Programmers Notepad

MensagemEnviado: 03 Mai 2017 18:18
por asimoes
Quintas,

Este caso como fica na configuração?

METHOD SisDP:ConfirmaPagamentoLoteOP()

Tutorial do Programmers Notepad

MensagemEnviado: 03 Mai 2017 19:06
por asimoes
Quintas,

Tem como você postar como ficaram os arquivos additionalLanguages.conf e additionalSupportedSchemes.ini

Tutorial do Programmers Notepad

MensagemEnviado: 03 Mai 2017 20:19
por JoséQuintas
Conforme formos definindo, vai dar pra atualizar aqui:

https://github.com/JoseQuintas/pnharbour

Mas numa explicação de como funciona no pnotepad:

No additionalSupportedSchemes.ini tem duas partes.
A primeira é fixa, é uma tabela interna do pnotepad.

0 Unknown
1 Function
2 Procedure
3 Class
4 Macro
5 Enum
6 Filename
7 EnumName
8 Member
...


a segunda parte define um nome de seção, onde a cada letra é atribuída um número da lista acima.
Essas letras é que vão entrar na configuração depois.
O nome da seção coloquei como harbour, mas pelo manual poderiam ser outros nomes e várias seções.

[harbour]
a=2
b=1
c=3
d=15
e=18
f=13
g=24
h=20
i=4


Esta é a parte de expressões regulares, que busca o que interessa
Fica em additionalLanguages.conf:

--langdef=harbour
--langmap=harbour:.prg.ch
--regex-harbour=/^[Pp][Rr][Oo][Cc][Ee][Dd][Uu][Rr][Ee] [\t]*([a-zA-Z0-9_]+)/\1/a/
--regex-harbour=/^[Ss][Tt][Aa][Tt][It][Cc] [Pp][Rr][Oo][Cc][Ee][Dd][Uu][Rr][Ee] [\t]*([a-zA-Z0-9_]+)/\1/a/
--regex-harbour=/^[Ff][Uu][Nn][Cc][Tt][Ii][Oo][Nn] [\t]*([a-zA-Z0-9_]+)/\1/b/
--regex-harbour=/^[Ss][Tt][Aa][Tt][Ii][Cc] [Ff][Uu][Nn][Cc][Tt][Ii][Oo][Nn] [\t]*([a-zA-Z0-9_]+)/\1/b/
--regex-harbour=/^[Cc][Rr][Ee][Aa][Tt][Ee] [Cc][Ll][Aa][Ss][Ss] [\t]*([a-zA-Z0-9_]+)/\1/c/
--regex-harbour=/^[Mm][Ee][Tt][Hh][Oo][Dd] [\t]*([a-zA-Z0-9_]+)/\1/d/
--regex-harbour=/^[Mm][Ee][Ss][Ss][Aa][Gg][Ee] [\t]*([a-zA-Z0-9_]+)/\1/d/
--regex-harbour=/[Mm][Ee][Mm][Vv][Aa][Rr] [\t]*([a-zA-Z0-9_]+)/\1/f/
--regex-harbour=/[Pp][Uu][Bn][Ll][Ii][Cc] [\t]*([a-zA-Z0-9_]+)/\1/f/
--regex-harbour=/[Pp][Rr][Ii][Vv][Aa][Tt][Ee] [\t]*([a-zA-Z0-9_]+)/\1/f/
--regex-harbour=/\#[Dd][Ee][Ff][Ii][Nn][Ee] [\t]*([a-zA-Z0-9_]+)/\1/h/
--regex-harbour=/[Vv][Aa][Rr](.*?)[Ii][Nn][Ii][Tt]/\1/e/
--regex-harbour=/[Dd][Aa][Tt][Aa](.*?)[Ii][Nn][Ii][Tt]/\1/e/
--regex-harbour=/\#[Xx][Tt][Rr][Aa][Nn][Ss][Ll][Aa][Tt][Ee] [\t]*([a-zA-Z0-9_]+)/\1/i/


Não sei isso com detalhes, alguns foram chutes, mas dá pra explicar "mais ou menos".
A maioria copiei do fórum fivewin.

--regex-harbour=/^[Pp][Rr][Oo][Cc][Ee][Dd][Uu][Rr][Ee] [\t]*([a-zA-Z0-9_]+)/\1/a/


Esse vai pesquisar PROCEDURE, onde cada letra pode ser maiúscula ou minúscula.
A última letra /a/ significa que isso vai para aquela tabela A do outro arquivo de configuracão, que por sua vez é atribuído pra PROCEDURE.
A primeira letra ^ significa que vai procurar no início da linha

--regex-harbour=/[Vv][Aa][Rr](.*?)[Ii][Nn][Ii][Tt]/\1/e/


Esse foi um dos últimos. Vai pesquisar VAR ????? INIT, e usar a letra E, que no outro arquivo de configuração é atribuído para PROPERTY.

Uma coisa que deveria funcionar, mas não deu muito certo, está no manual do PN, seria colocar ao invés de apenas a letra /a/, colocar letra e seção /a,harbour/
Isso permitiria uma variedade maior de letras. Poderíamos usar a letra V pra variável numa seção [programa] e a mesma letra V pra propriedades numa seção [classe]
Como não deu certo, chutei sem definição de seção.... rs... no manual do PN dizia ser possível

Isso das expressões regulares, é feito por Exuberant CTags, tem o ctags.exe na pasta do Programmers Notepad.
Esse mesmo recurso é usado por muitos outros editores de texto.

Acredito que sejam as mesmas expressões que dá pra usar na função hb_RegEx() do Harbour.
É padrão, mas é pra quem conhece....rs

Pesquisei um pouco, mas a maioria veio do fivewin, não sei explicar com detalhes essas expressões regulares.
Pra mim parece complicado entender, exceto pequenas partes.
Não sei porque tem parêntesis em tudo, pelo que sei, só precisaria em Function() e Method(), mas veio do fórum fivewin assim, funciona, então deixei assim.

Quem quiser se aventurar nessas expressões regulares, descobrir mais detalhes, e quiser compartilhar....
vai valer pra tudo que é editor de texto, não fica preso a Programmers Notepad.

Detalhe: infelizmente é separado por fonte, não tem uma lista geral.
Curiosidade: tem uma alteração enviada para Exuberant CTags adicionando Harbour diretamente no fonte, o que dispensaria qualquer configuração extra, mas está pendente há anos.

Tutorial do Programmers Notepad

MensagemEnviado: 03 Mai 2017 21:36
por asimoes
Quintas,

fuça aqui fuça lá, cheguei a isso:

--regex-harbour=/^LOCAL [\t]*([a-zA-Z0-9_[:punct:][:blank:]]+)/\1/h/

Faz o teste, acho que precisa de uns ajustes

Screen Shot 05-03-17 at 09.38 PM.PNG

Tutorial do Programmers Notepad

MensagemEnviado: 03 Mai 2017 22:08
por JoséQuintas
É.... pegou a linha inteira, sem separar.
Deve ter opção de colocar em ordem alfabética e eliminar repetidos, ainda não procurei..

Depois de um teste rápido na HBIDE pra compilar um projeto e não dar certo......
Voltei ao pnotepad, e não vai acreditar, preciso amadurecer a idéia mas....

Que tal clicar na mensagem de erro, e já ir direto na linha do fonte, igual uma IDE ???

pnotepadcompile.png

Tutorial do Programmers Notepad

MensagemEnviado: 03 Mai 2017 23:12
por JoséQuintas
Achei alguma coisa, existe a possibilidade pelo menos:
Dá pra combinar duas expressões regulares.
Então a primeira seria a que fez, e a segunda seria pra separar a lista obtida pela primeira.

Já nos outros casos, que também usaria nesse, de eliminar repetidas, seria esse \1 que já tem.
teria que transformar duas linhas (ou mais) em uma so, juntando resultados e eliminando duplicados.

Como antes não tínhamos nada, o avanço foi grande.
Com certeza alguém do Harbour vai saber complementar os detalhes que faltam.

Talvez variável local não compense, porque vai misturar de várias funções do fonte.
Já variável pública sim, static também, e talvez private.

Esqueci das statics.... rs

Tutorial do Programmers Notepad

MensagemEnviado: 03 Mai 2017 23:23
por JoséQuintas
Variável static complica.

STATIC var
STATIC PROCEDURE
STATIC FUCTION

Se filtrar somente pela palavra STATIC, considera os nomes PROCEDURE e FUNCTION como sendo variáveis.
Isso precisaria de ajuda também.

Dá pra ir longe com essa brincadeira.... rs

Tutorial do Programmers Notepad

MensagemEnviado: 03 Mai 2017 23:28
por asimoes
Isso é um curso de programação só sobre regex

x-harbour=/^(LOCAL|Local) [\t]*([a-zA-Z0-9_,[:space:]]+)/\1/h/

Tem essa também aparece:

LOCAL
LOCAL
LOCAL
....
Local

Não aparece o nome da variável, bola na trave!

nesse caso usei o caracter | para o (ou) lógico para LOCAL ou Local que também poderia ser LOCAL|Local|local

Tutorial do Programmers Notepad

MensagemEnviado: 04 Mai 2017 11:03
por JoséQuintas
Isso é um curso de programação só sobre regex


Tem o RegEx no Harbour, MySql, Java, etc.
Parece algo comum, mas é realmente um curso a parte.

Isso de maiúscula/minúscula, assim já pega tudo:

[Ll][Oo][Cc][Aa][Ll]

ou

LOCAL|[Ll]ocal

Variável local vou deixar de fora, ou colocar em outro grupo.
Num fonte com muitas rotinas, vai misturar as variáveis das rotinas.

Só faltaria uma opção de considerar todos os fontes juntos, pra completar.

Tutorial do Programmers Notepad

MensagemEnviado: 04 Mai 2017 11:18
por JoséQuintas
A parte de compilação, mais fácil que nas IDEs de Harbour..... rs

Bom... aqui meu projeto é a pasta dos fontes.
Apenas chama HBMK2 passando *.HBP, que seria considerar que o projeto está na pasta.

Melhor acrescentar nos parâmetros -ge1 pra não ter que mexer em cada HBP - isso deixa o formato de saída de erros no padrão necessário.

É até interessante: se compila fora do editor, compila dentro do editor, porque não configura e nem desconfigura nada.

compile1.png


compile2.png


Qualquer coisa, dá pra configurar mais "tools", pra mais opções.

Tutorial do Programmers Notepad

MensagemEnviado: 04 Mai 2017 11:28
por JoséQuintas
Uia....
Mais um recurso...
Encima da palavra, aciona o help.

pnhelp.png

Tutorial do Programmers Notepad

MensagemEnviado: 04 Mai 2017 11:40
por JoséQuintas
A maioria dos editores de texto tem esses recursos.
Agora o Harbour tem muitas IDEs pra usar, é so escolher.

Ah sim, usando a saída dos HBX, dá pra facilitar configurar não só pra Harbour, mas também pra minigui, hwgui, etc.

Há anos usando Programmers Notepad, e só agora descobri como usar esses recursos....

Vai saber o que mais existe de recurso nos editores de texto atuais.....

Tutorial do Programmers Notepad

MensagemEnviado: 04 Mai 2017 12:21
por asimoes
Quanto ao REGEX não consegui sucesso.

Tutorial do Programmers Notepad

MensagemEnviado: 04 Mai 2017 12:24
por JoséQuintas
Procurei no google, mas é difícil achar exemplo prático.
Talvez mostrando o que já conseguimos, possamos ter ajuda para mais coisas.

Tutorial do Programmers Notepad

MensagemEnviado: 04 Mai 2017 12:44
por asimoes
Achei essa informação em um forum do ultraedit

Soa similar ao PN

--langdef=Clipper
--langmap=Clipper:.prg.PRG
--regex-clipper=/^FUNCTION[ \t]*([a-zA-Z0-9_]+)/\1/f,function/
--regex-clipper=/^PROCEDURE[ \t]*([a-zA-Z0-9_]+)/\1/p,procedure/
--regex-clipper=/^STATIC FUNCTION[ \t]*([a-zA-Z0-9_]+)/\1/f,static function/
--regex-clipper=/^LOCAL[ \t]*([a-zA-Z0-9_]+)/\1/f,LOCAL/
--regex-clipper=/^[ \t]*(Public|Private)[ \t]+([a-zA-Z0-9_]+)[ \t]+As[ \t]+/\2/v,variable/i
--regex-clipper=/^[ \t]*(LOCAL)[ \t]+([a-zA-Z0-9_]+)[ \t]+As[ \t]+/\2/v,variable/i

Tutorial do Programmers Notepad

MensagemEnviado: 04 Mai 2017 13:10
por JoséQuintas
Desenterrei agora.... rs

https://harbour.github.io/the-oasis/zeusv215.htm

Da época do Clipper, 1996, ctags já aparecia, nesse editor Zeus.

Peguei para UltraEdit mesmo, vindo do fórum fivewin,

http://forums.fivetechsupport.com/viewtopic.php?f=19&t=28219

--langdef=Harbour 
--langmap=Harbour:.prg.ch

--regex-Harbour=/^FUNCTION [\t]*([a-zA-Z0-9_]+)/\1/f,function/
--regex-Harbour=/^[Ff]unction [\t]*([a-zA-Z0-9_]+)/\1/f,function/

--regex-Harbour=/^FUNC [\t]*([a-zA-Z0-9_]+)/\1/f,function/
--regex-Harbour=/^[Ff]unc [\t]*([a-zA-Z0-9_]+)/\1/f,function/

--regex-Harbour=/^PROCEDURE [\t]*([a-zA-Z0-9_]+)/\1/p,procedure/
--regex-Harbour=/^[Pp]rocedure [\t]*([a-zA-Z0-9_]+)/\1/p,procedure/

--regex-Harbour=/^PROC [\t]*([a-zA-Z0-9_]+)/\1/p,procedure/
--regex-Harbour=/^[Pp]roc [\t]*([a-zA-Z0-9_]+)/\1/p,procedure/

--regex-Harbour=/^#DEFINE [\t]*([a-zA-Z0-9_]+)/\1/d,define/
--regex-Harbour=/^#[Dd]efine [\t]*([a-zA-Z0-9_]+)/\1/d,define/

--regex-Harbour=/CLASS [\t]*([a-zA-Z0-9_]+)/\1/c,class/
--regex-Harbour=/[Cc]lass [\t]*([a-zA-Z0-9_]+)/\1/c,class/

--regex-Harbour=/DATA [\t]*([a-zA-Z0-9_]+)/\1/m,data/
--regex-Harbour=/[Dd]ata [\t]*([a-zA-Z0-9_]+)/\1/m,data/

--regex-Harbour=/METHOD [\t]*([a-zA-Z0-9_]+)/\1/m,method/
--regex-Harbour=/[Mm]ethod [\t]*([a-zA-Z0-9_]+)/\1/m,method/

--regex-Harbour=/MESSAGE [\t]*([a-zA-Z0-9_]+)/\1/m,method/
--regex-Harbour=/[Mm]essage [\t]*([a-zA-Z0-9_]+)/\1/m,method/
 

Tutorial do Programmers Notepad

MensagemEnviado: 04 Mai 2017 16:43
por JoséQuintas
Achei um testador on-line

A explicação da fórmula está à direita, encima
No texto mostra em azul e verde, conforme a parte da fórmula
E à direta, embaixo, o resultado.

A fórmula funcionou no teste, mas não no pnotepad.

ctagx.png

Tutorial do Programmers Notepad

MensagemEnviado: 13 Mai 2017 18:09
por JoséQuintas
Mais um recurso que comentaram em outro tópico: blocos de fonte
É definir um apelido, pode definir um atalho, e preencher com o que quiser.

pn.png


Em Plain Text tem a tabela ASCII inteira
E parece que dá pra dividir por "assunto", já que tem esse título ASCII Characteres.

pn2.png


E dá pra criar scripts, acrescentar ferramentas, etc.
Tem que fazer um curso pra aproveitar tanto recurso.... rs

pn3.png


E eu diria que nem é dos mais completos, mas dá pra brincar muito com ele.
Com certeza outros editores tem muito mais recursos, principalmente os pagos.
É apenas uma opção de editor de texto, dentre muitas que existem, e que deixa os antigos editores DOS/Clipper ultrapassados.

Tutorial do Programmers Notepad

MensagemEnviado: 17 Mai 2017 13:00
por JoséQuintas
Uia....

pnotepad.png


A variável cUserScope aparece várias vezes na lista de variáveis.
Isso é porque coloquei MEMVAR em cada módulo.
Mas posso colocar um único no início do PRG e fica resolvido.
O recurso recém descoberto já ajudou a "enxugar" um pouco o fonte, porque declarando no início posso eliminar 5 declarações de MEMVAR.

Apenas fiz uso da informação que estava na frente do meu nariz.... rs

Temos recursos no compilador, no editor de textos, etc. Usando os recursos, temos ajuda sempre.

Tutorial do Programmers Notepad

MensagemEnviado: 17 Mai 2017 14:21
por JoséQuintas
O barato é doido.... rs

Deve ter um jeito de agrupar tudo numa só, mas na falta de saber isso, vai uma por uma.
De 1 a 10 variáveis na lista do MEMVAR, PRIVATE ou PUBLIC

--langdef=harbour
--langmap=harbour:.prg.ch
--regex-harbour=/\b[Pp][Rr][Oo][Cc][Ee][Dd][Uu][Rr][Ee]\b [\t]*([a-zA-Z0-9_]+)/\1/a,procedure/
--regex-harbour=/\b[Ss][Tt][Aa][Tt][It][Cc] [Pp][Rr][Oo][Cc][Ee][Dd][Uu][Rr][Ee]\b [\t]*([a-zA-Z0-9_]+)/\1/a,procedure/
--regex-harbour=/\b[Ff][Uu][Nn][Cc][Tt][Ii][Oo][Nn]\b [\t]*([a-zA-Z0-9_]+)/\1/b,function/
--regex-harbour=/\b[Ss][Tt][Aa][Tt][Ii][Cc] [Ff][Uu][Nn][Cc][Tt][Ii][Oo][Nn]\b [\t]*([a-zA-Z0-9_]+)/\1/b,function/
--regex-harbour=/\b[Cc][Rr][Ee][Aa][Tt][Ee] [Cc][Ll][Aa][Ss][Ss]\b [\t]*([a-zA-Z0-9_]+)/\1/c,class/
--regex-harbour=/\b[Mm][Ee][Tt][Hh][Oo][Dd]\b [\t]*([a-zA-Z0-9_]+)/\1/d,method/
--regex-harbour=/^[Mm][Ee][Ss][Ss][Aa][Gg][Ee] [\t]*([a-zA-Z0-9_]+)/\1/d,method/
--regex-harbour=/\b[Pp][Uu][Bn][Ll][Ii][Cc]\b [\t]*([a-zA-Z0-9_]+)/\1/f,variable/
--regex-harbour=/\b[Pp][Rr][Ii][Vv][Aa][Tt][Ee]\b [\t]*([a-zA-Z0-9_]+)/\1/f,variable/
--regex-harbour=/\b\#[Dd][Ee][Ff][Ii][Nn][Ee]\b [\t]*([a-zA-Z0-9_]+)/\1/h,constant/
--regex-harbour=/\b[Vv][Aa][Rr]\b(.*?)[Ii][Nn][Ii][Tt]/\1/e,property,class property/
--regex-harbour=/\b[Dd][Aa][Tt][Aa]\b(.*?)\b[Ii][Nn][Ii][Tt]\b/\1/e,property,class property/
--regex-harbour=/\b\#[Xx][Tt][Rr][Aa][Nn][Ss][Ll][Aa][Tt][Ee]\b [\t]*([a-zA-Z0-9_]+)/\1/i,macro/
--regex-harbour=/\-\>[\t]*([a-zA-Z0-9_]+)/\1/j,field/
--regex-harbour=/[\t]*([a-zA-Z0-9_]+)\-\>/\1/k,table/

--regex-harbour=/\b[Mm][Ee][Mm][Vv][Aa][Rr]\b [\t]*([a-zA-Z0-9_]+)/\1/l,none,memvar/
--regex-harbour=/\b[Mm][Ee][Mm][Vv][Aa][Rr]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\2/l,none,memvar/
--regex-harbour=/\b[Pp][Uu][Bn][Ll][Ii][Cc]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\2/f,variable/
--regex-harbour=/\b[Pp][Rr][Ii][Vv][Aa][Tt][Ee]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\2/f,variable/

--regex-harbour=/\b[Mm][Ee][Mm][Vv][Aa][Rr]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\3/l,none,memvar/
--regex-harbour=/\b[Pp][Uu][Bn][Ll][Ii][Cc]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\3/f,variable/
--regex-harbour=/\b[Pp][Rr][Ii][Vv][Aa][Tt][Ee]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\3/f,variable/

--regex-harbour=/\b[Mm][Ee][Mm][Vv][Aa][Rr]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\4/l,none,memvar/
--regex-harbour=/\b[Pp][Uu][Bn][Ll][Ii][Cc]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\4/f,variable/
--regex-harbour=/\b[Pp][Rr][Ii][Vv][Aa][Tt][Ee]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\4/f,variable/

--regex-harbour=/\b[Mm][Ee][Mm][Vv][Aa][Rr]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\5/l,none,memvar/
--regex-harbour=/\b[Pp][Uu][Bn][Ll][Ii][Cc]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\5/f,variable/
--regex-harbour=/\b[Pp][Rr][Ii][Vv][Aa][Tt][Ee]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\5/f,variable/

--regex-harbour=/\b[Mm][Ee][Mm][Vv][Aa][Rr]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\6/l,none,memvar/
--regex-harbour=/\b[Pp][Uu][Bn][Ll][Ii][Cc]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\6/f,variable/
--regex-harbour=/\b[Pp][Rr][Ii][Vv][Aa][Tt][Ee]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\6/f,variable/

--regex-harbour=/\b[Mm][Ee][Mm][Vv][Aa][Rr]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\7/l,none,memvar/
--regex-harbour=/\b[Pp][Uu][Bn][Ll][Ii][Cc]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\7/f,variable/
--regex-harbour=/\b[Pp][Rr][Ii][Vv][Aa][Tt][Ee]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\7/f,variable/

--regex-harbour=/\b[Mm][Ee][Mm][Vv][Aa][Rr]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\8/l,none,memvar/
--regex-harbour=/\b[Pp][Uu][Bn][Ll][Ii][Cc]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\8/f,variable/
--regex-harbour=/\b[Pp][Rr][Ii][Vv][Aa][Tt][Ee]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\8/f,variable/

--regex-harbour=/\b[Mm][Ee][Mm][Vv][Aa][Rr]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\9/l,none,memvar/
--regex-harbour=/\b[Pp][Uu][Bn][Ll][Ii][Cc]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\9/f,variable/
--regex-harbour=/\b[Pp][Rr][Ii][Vv][Aa][Tt][Ee]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\9/f,variable/

--regex-harbour=/\b[Mm][Ee][Mm][Vv][Aa][Rr]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\10/l,none,memvar/
--regex-harbour=/\b[Pp][Uu][Bn][Ll][Ii][Cc]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\10/f,variable/
--regex-harbour=/\b[Pp][Rr][Ii][Vv][Aa][Tt][Ee]\b [\t]*([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+), \b([a-zA-Z0-9_]+)/\10/f,variable/


pnotepad2.png

Tutorial do Programmers Notepad

MensagemEnviado: 17 Mai 2017 14:31
por JoséQuintas
Tá sendo meio no chute, olhando o que está a frente do nariz... rs
Mostrou os elementos capturados, e o número sequencial da captura.
Coloquei no pnotepad a configuração, e o número sequencial.

pnotepad3.png

Tutorial do Programmers Notepad

MensagemEnviado: 17 Mai 2017 16:26
por JoséQuintas
E já que é pra enfeitar.... rs
Cores e palavras chave em separado pra cada LIB.

pnlib1.png


pnlib2.png

Tutorial do Programmers Notepad

MensagemEnviado: 18 Mai 2017 01:26
por JoséQuintas
Alterei tudo
o último parâmetro /i na expressão indica pra ignorar maiúscula/minúscula, então deixou a configuração mais limpa.

Só não deu certo mesmo alias e field: cliente->codigo

Aqui o mapa geral, incluindo o que não funcionou, mas que aparentemente está correto.

pnotepad.png


Tentando explicar:

na pesquisa tem /formula/\posição/letra/ignora
formula -> a expressão regular
posição -> porque pode detectar mais de uma palavra, conforme mostrado no teste de baixo
letra -> a letra que será usada no PN
ignora -> se vai ignorar maiúscula/minúscula

depois na outra configuração tem:
letra=tipo

letra -> a letra atribuída na outra configuração
tipo -> a que corresponde a letra, na outra tabela (função,procedure,etc.)

Todas seguiram esse mesmo padrão, todas funcionaram menos as duas últimas.
As expressões estão corretas (até usei copiar/colar), e lá também está correto - ou quase - quando ia postar notei que faltaram as barras finais e corrigi, mas continuou não funcionando.

E o intellisense funciona pra método também, acho que justamente por isso tem a tabela de correspondência. Não confundir isso com o auto-completar.

pnotepad2.png

Tutorial do Programmers Notepad

MensagemEnviado: 18 Mai 2017 01:31
por JoséQuintas
Só pra deixar claro, que serve de mini-help.

pnotepad3.png


Também tem o auto-completar, mas esse mini-help é demais.
Infelizmente só trabalha com o fonte em edição, ou não descobri como deixar isso disponível entre fontes.

Tutorial do Programmers Notepad

MensagemEnviado: 18 Mai 2017 13:58
por JoséQuintas
Agora com lista de arquivos e campos, mas não encontrei como eliminar duplicados.

field.png


Pra tudo, inclusive isto, não se trata apenas de uma lista, ao clicar posiciona na linha de onde saiu isso.

Tutorial do Programmers Notepad

MensagemEnviado: 21 Mai 2017 17:31
por JoséQuintas
Só atualizando o post geral, depois de descobertas ao longo do tempo:

Baixar o PNotepad, e pra ficar melhor ainda, vai baixar um add-on também

pnotepad1.png


Nos add-ons, é o scheme pra flagship, um xbase pra servir de base pra configurações adicionais.

pnotepad2.png


Pode já usar assim que já fica interessante. Mas pode melhorar.
Dê uma olhada no arquivo baixado.
É ele que vai permitir configurações.
Pode alterar pra Harbour.
Note o LEXER, que é o verificador de sintaxe, ele tá mais próximo do Harbour para "algo mais".

pnotepad3.png


E dê olhada em outros scheme, tem vários que podem servir de exemplo.
Por exemplo, hoje descobri que tem o lugar correto pra colocar #define, que não é em keywords... rs

pnotepad4.png


E por último, dá pra melhorar mais configurando "ctags".

pnotepad5.png


É ir usando e ajustando conforme o gosto pessoal.

Dá pra melhorar mais ainda.... rs
Estou tentando entender o troço.

Por exemplo, como o núcleo é o Scintilla, praticamente comum a muitos editores de texto, tem a configuração de API pra Harbour, que olhando este exemplo de pascal parece fácil:

https://github.com/downpoured/scite-files/blob/master/files/files/api_files/pascal.api

O SCTE, é um editor de textos totalmente funcional, criado só pra demonstrar as funcionalidades do Scintilla.
No final, Scintilla é o que a maioria dos editores de texto usam.
Não se trata mais de escolher um editor de textos, mas apenas de escolher uma interface gráfica.... rs

Então, se a hbide usa isso... tá igual a todos os editores de texto, trata-se apenas de adicionar os recursos disponíveis em outros editores.

Inclusive postaram um fonte exemplo tempos atrás em fivewin que também faz uso do Scintilla.

Por isso tem tanto editor de texto no mercado.... rs

Tutorial do Programmers Notepad

MensagemEnviado: 21 Mai 2017 17:45
por JoséQuintas
A parte que falei pra melhorar mais ainda é sobre isto, nesse arquivo de Pascal:

pnotepad6.png


É que isso vai servir como o "mini-help", intelisense, ou sei lá qual o nome, para todo o Harbour, e não apenas pra funções existentes no fonte em edição.

E mais que isso: pode servir pra configurar pra HMG, HWGUI, e outras LIBs gráficas.

Acho que pras LIbs externas nem a HBIDE tem, por enquanto..... rs

Tutorial do Programmers Notepad

MensagemEnviado: 22 Mai 2017 09:45
por rubens
Bom dia...

É que isso vai servir como o "mini-help", intelisense, ou sei lá qual o nome,

É exatamente isso que tem na xDev que por enquanto para mim faz toda diferença...
Tem arquivo com este mini-help onde você digita as iniciais da função e pressiona Ctrl+Spacebar e ele mostra a listagem das funções que começam com o que foi digitado mostrando o escopo... Além de padronizar a digitação, evita erros de sintaxe e nesse arquivo além das funções harbour( mesmo que defazados) você pode inserir novos itens na listagem...

Rubens

Tutorial do Programmers Notepad

MensagemEnviado: 22 Mai 2017 10:51
por JoséQuintas
Eureka!

pnotepad.png

Tutorial do Programmers Notepad

MensagemEnviado: 26 Mai 2017 16:58
por JoséQuintas
Acabei mexendo no notepad++ outro dia, não sei se era porque o usuário não sabia...
Pra dividir em janelas, é num menu gigante, uma opção CLONAR.
Só achei estranho o modo de fazer isso no notepad++

No Programmers Notepad, em Windows (Janelas), escolhemos sobre janelas.
- Tile é dividir a janela, com arquivos diferentes
- Split é dividir a janela, com o mesmo arquivo
Nos dois casos, opção horizontal e vertical
Nos dois casos não limita a duas janelas, vamos dividindo e subdividindo como quiser.

pnotepad.png

Tutorial do Programmers Notepad

MensagemEnviado: 29 Mai 2017 00:42
por JoséQuintas
Unindo o útil ao agradável.
Pegando um jeito a mais no GitHub, com imagens no readme.

Configurações e imagens do PNotepad

- Colorização conforme palavras chave
- Auto-completar
- intelli-sense
- Ctags pra detectar classes, procedures, functions, propriedades, métodos, variáveis
- Tools - compilação com clique na mensagem de erro
- Tools - help do Harbour
- Arquivos de configuração

https://github.com/JoseQuintas/pnharbour

É só abrir o link, e ir descendo a página pra ver as imagens.

Tutorial do Programmers Notepad

MensagemEnviado: 29 Mai 2017 17:20
por JoséQuintas

Tutorial do Programmers Notepad

MensagemEnviado: 03 Jun 2017 10:50
por asimoes
Quintas,

Você não explicou como faz a compilação no PN, ele executa uma bat ?

Ops, falha minha já foi explicado.

Tutorial do Programmers Notepad

MensagemEnviado: 03 Jun 2017 11:22
por asimoes
Se quiser rodar o executável após a compilação

*.hbp -ge1 -rebuild -run

Tutorial do Programmers Notepad

MensagemEnviado: 21 Jun 2017 09:15
por JoséQuintas
Só ficou uma coisa pra resolver, que não sei como: se ativar a api Harbour, desativa a api pra ctags...

Convém destacar umas coisas importantes do Programmers Notepad, não exclusivas dele:

scilexer.dll do projeto scintilla http://www.scintilla.org/, tem até um editor de textos apenas como exemplo dos recursos, o SCITE

ctags.exe, Exuberant ctags, http://ctags.sourceforge.net/

Esses mesmos arquivos são usados por notepad++ e muitos outros, acho que até a HBIDE.

Parece até que no final só se trata do editor de textos aproveitar os recursos existentes.

No final é mais uma daquelas coisas onde não existe o "este é melhor", trata-se de "me sinto mais a vontade com este"....

Sobre a pendência a resolver, é que ao definir harbour.api, perde-se a vantagem sobre o que foi detectado por ctags, existente no fonte.

https://www.youtube.com/watch?v=Xy29iRKfkLM&feature=youtu.be

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2017 22:42
por JoséQuintas
Mais um recurso: text clips.

Dá pra criar grupos de texto
Ao clicar no título, vém o texto que foi definido.

É em formato XML pra configurar.... mas fazer o que....

A imagem é do arquivo de configuração, já aparecendo na janela de "text clips".

À primeira vista, parece que não tem atalho, é no clique mesmo.

Clips=nome do conjunto clip=nome do texto

textclips.png

Tutorial do Programmers Notepad

MensagemEnviado: 18 Jul 2017 23:00
por JoséQuintas
Corrigindo a informação: tem atalho sim, e não precisa editar direto pelo XML.

textclips2.png


E também, pra quem gosta de janelas....
- explorador de arquivos
- detecção das tags
- text clips
- janela de projeto
- scripts (pra programar tarefas)
- lista de arquivos abertos

E pensar que ele não é atualizado há muito tempo...

Tutorial do Programmers Notepad

MensagemEnviado: 23 Out 2017 10:39
por aedurocha
Bom dia a Todos

José Quintas, li todo o post, baixei o pnharbour do github, executei as orientações do arquivo readme.md
e não consegui o recurso autocompletar. o que falta fazer para funcionar?
O editor que estou usando atualmente é o xedit e fiquei contente com o resultado apresentado por vc no Programmers Notepad.
É uma ajuda muito grande, utilizar este editor com os recursos que vc conseguiu configurar , mas não tive sucesso.
Onde devo colocar os arquivos :
usersettings.xml
usertools.xml
Desculpe-me a falta de conhecimento é que não tenho intimidade alguma com esse editor, mas gostaria de poder usar com os recursos que vc configurou.
Desde já agradeço qualquer ajuda

Tutorial do Programmers Notepad

MensagemEnviado: 23 Out 2017 11:32
por JoséQuintas
Ele usa o que ele chama de herança: vai pegando a definição padrão, e conforme encontra arquivos, estes arquivos vão modificando.

- schemmes\ seriam as configurações pré-definidas pra linguagem de programação
- settings\ seriam as configurações do usuário, que pode querer modificar o padrão pré-definido, aqui vão o usersettings.xml e usertools.xml

Lembre-se que muita configuração é pelo menu tools/options, não precisa ir diretamente no XML, inclusive pra ativar/desativar auto-complete e pra quantas letras ativar
Dá até pra acrescentar palavras chave pra colorir/autocompletar

O detalhe que não resolvi é o seguinte:
- Se usar pra C/C++, ele já pega do fonte as funções pra mostrar sintaxe e auto-completar - isto é bem melhor do que o auto-completar
- Se usar a pré-definição pra api do Harbour (harbour.api), ele só faz isso pras funções definidas no arquivo

tem as instruções lá:

https://github.com/JoseQuintas/pnharbour

copy harbour.* to pn\schemes copy additional* to pn\ctags copy JoseQuintas.xml to pn\presets
On tools-option-files, set to Harbour .prg, .ch, .hbp, .hbc, .hbm To select my color configuration, on tools-option-Styles, select JoseQuintas and click on LOAD button


copiar harbour.* para pasta pn\schemes, additional.* para pn\ctags, josequintas.xml para pn\presets
Em tools-option-files, indicar Harbour pra .prg,.ch,.hbp,.hbc,.hbm.
E se quiser usar meu esquema de cores, em tools-options-styles, selecionar josequintas e clicar no botão LOAD.

Tutorial do Programmers Notepad

MensagemEnviado: 23 Out 2017 16:43
por aedurocha
Mais uma vez obrigado pela atenção.

copy harbour.* to pn\schemes
copy additional* to pn\ctags
copy JoseQuintas.xml to pn\presets

os arquivos acima já copiei para c:\Arquivos de Programas\Programmer's Notepad\schemes, c:\Arquivos de Programas\Programmer's Notepad\ctags e c:\Arquivos de Programas\Programmer's Notepad\presets respectivamente.
a dúvida continua.

Onde devo colocar estes arquivos que vem no pnharbour.zip ?
usersettings.xml
usertools.xml

Tutorial do Programmers Notepad

MensagemEnviado: 23 Out 2017 17:17
por JoséQuintas
realmente faltou colocar lá sobre esses.
é no pn\settings

Tutorial do Programmers Notepad

MensagemEnviado: 01 Dez 2017 22:35
por microvolution
boa noite!
vc já tem uma versão totalmente configurada ao longo desses anos pra nos disponiblizar?

Tutorial do Programmers Notepad

MensagemEnviado: 01 Dez 2017 23:05
por JoséQuintas

Tutorial do Programmers Notepad

MensagemEnviado: 02 Dez 2017 09:54
por Mario Mesquita
Bom dia a todos.

Rapaz, que sensacional! Ainda estou preso no xDev Studio, que é muito bom, mas não tem o UTF-8 para compilar no 3.4 Unicode. Aí o Notepad++ não dava a estrutura do programa, funções, etc.

Esse marca até as variáveis. Quintas, parabéns! Vendo vcs fazendo essas coisas me mostram que ainda tenho que comer muito feijão, rs. Se eu for a metade dos que vcs são, tá ótimo!

Abraços e bom fim de semana,
Mario.

Tutorial do Programmers Notepad

MensagemEnviado: 02 Dez 2017 10:41
por microvolution
muito bom mesmo professor JQuintas!
baixei agora vou tentar instalar...
ah!
pra instalar é só seguir as imagens em anexo pra configurar?

Tutorial do Programmers Notepad

MensagemEnviado: 02 Dez 2017 12:57
por Mario Mesquita
Alô, vcs.

Até agora, só não gostei de uma coisa, mas deve dar pra resolver: Quando vc fecha o PN e reabre, abre vazio, não memoriza os programas abertos da última sessão. Tem como configurar isso? Pq nos outros é automático...

Sds,
Mario.

Tutorial do Programmers Notepad

MensagemEnviado: 02 Dez 2017 17:20
por microvolution
Mario Mesquita escreveu:Quando vc fecha o PN e reabre
já o NotePad++ tem essa funcionalidade e eu gosto muito!

Tutorial do Programmers Notepad

MensagemEnviado: 02 Dez 2017 19:18
por JoséQuintas
Como diz no tutorial, fica tudo em TOOLS/OPTIONS.

pnotepad.png


Tradução do texto:
"Lembrar arquivos abertos"

Pode ser interessante olhar no site se tem tradução pra PTBR, talvez tenha.

Tutorial do Programmers Notepad

MensagemEnviado: 02 Dez 2017 19:52
por JoséQuintas
Até tem, mas não achei pra PTBR.
É o mesmo formato usado no Harbour.

mais ou menos isto:

msgID"english message"
msg"mensagem em portugues"

https://github.com/simonsteele/pn/tree/master/pnwtl/translations

Não gosto de programa traduzido.
E depois de mais de 30 anos só vendo editor e manuais em inglês, já não faz diferença.

traduzir download, upload, webservice, codepage..... rs

Ah é... como deu pra ver, o Programmers Notepad é Open Source, em c++, não sei se C.NET.
Não é muita vantagem, pra quem não souber mexer, como eu.... rs

Tutorial do Programmers Notepad

MensagemEnviado: 02 Dez 2017 20:57
por JoséQuintas
Uia, aperfeiçoei... rs
Acrescentei -q0 assim, as mensagens do hbmk2 ficam mais limitadas a erros mesmo.
E colocando a janela "output" embaixo, fica parecendo a IDE do Visual Studio.... rs

pnotepad.png


Acho que não precisa dizer que reduzi pra postar.
Aqui a imagem da tela inteira, reduzida em 4 vezes, a imagem do post é essa.... cortada mas sem redução.

notepad2.png

Tutorial do Programmers Notepad

MensagemEnviado: 02 Dez 2017 21:01
por microvolution
JoséQuintas escreveu:https://github.com/JoseQuintas/pnharbour
prezado Quintas, nesta pasta não contém um executável ou instalador?

Tutorial do Programmers Notepad

MensagemEnviado: 02 Dez 2017 21:05
por JoséQuintas
Google, programmers notepad
Portable Edition é melhor pras configurações ficarem na própria pasta do PN.

http://www.pnotepad.org/

Tutorial do Programmers Notepad

MensagemEnviado: 02 Dez 2017 21:16
por JoséQuintas
É estranho dizer isso, mas não me aprofundei no uso do PNotepad.
Eu não uso metade do que mostrei aqui.

E não é por falta de espaço na tela.... rs

Tem também trechos de fonte que podem ser configurados, é o "text clip".
Não me perguntem, é bisbilhotar as opções pra ver como acionar e usar.

pnotepad.png

Tutorial do Programmers Notepad

MensagemEnviado: 02 Dez 2017 21:20
por microvolution
JoséQuintas escreveu:http://www.pnotepad.org/
sim...
já havia percebido isso e baixado a última versão: portable-pn2421440
Agora, outra dúvida...
baixei suas pastas também.
Então JQuintas, pego todo o conteúdo seu e copio pra dentro da pasta raíz da instalação original portable-pn2421440?
Outra coisa, aqui mesmo no início - acho q página 2 deste tópico, de uma hora pra outra seu PN que estava em Visual Basic (acho q é no PlainText) mudou pra harbour...
no meu não existe harbour... o q fazer? :%

Tutorial do Programmers Notepad

MensagemEnviado: 02 Dez 2017 21:31
por microvolution
outra coisa... vc tem JQuintas uma lista completa dos "keywords"?

Tutorial do Programmers Notepad

MensagemEnviado: 03 Dez 2017 01:07
por JoséQuintas
É baixar a versão portátil do programmers notepad.
Depois no github mostra pra onde copiar os arquivos adicionais.
Não são pra raiz, uma parte é pra pasta schemmes, e outra pra settings, se não me engano.

Nos menus do PNotepad dá pra fazer a configuração manualmente.
Mas manualmente, ou pelos arquivos do github, são:

\ctags - configurações para a janela ctags, que extrai informações do fonte (*.conf e *.ini)
\presets - configurações de cores (*.xml)
\schemes - configurações de API (*.api) ou schemmas de cores (*.schemma)
\settings - configurações de usuário em arquivos .XML e .INI. e .cscheme que são os anteriores compilados
\config.xml - não mexer

Isso é para o caso de querer brincar mais nas configurações.
É tudo formato XML.

Tutorial do Programmers Notepad

MensagemEnviado: 05 Dez 2017 10:29
por Mario Mesquita
Bom dia a todos.

Quintas, consegui o lance de abrir com a última sessão pela configuração. Valeu.

Ele tem um jeitão de Bloco de Notas, menos esperto que o xDev, aparentemente. Mas a gente acostuma, como você, já usei vários editores de programa e nem preciso de muita coisa.

Grato pela ajuda e pelo trabalho sensacional.

Sds,
Mario.

Tutorial do Programmers Notepad

MensagemEnviado: 06 Dez 2017 09:35
por microvolution
olá pessoal bom dia!
testei aqui o PN e percebo que toda vez que fecho e abro-o novamente tenho que no "Plain Text" e escolher HARBOUR. Tem alguma configuração que eu faço pra isso não mais ser desconfigurado?

Tutorial do Programmers Notepad

MensagemEnviado: 06 Dez 2017 09:56
por JoséQuintas
Como eu já comentei, TUDO no programmers notepad fica em TOOLS, OPTIONS

Uma das opções é associar extensão de arquivo a um esquema.
Outra é pra associar o esquema default para novas extensões.

pnotepad.png


Convém também pesquisar as opções existentes.
Se ninguém olhar o que está disponível, ninguém vai descobrir nada novo.

Tutorial do Programmers Notepad

MensagemEnviado: 06 Dez 2017 10:14
por microvolution
JQuintas no outro tópico Tutorial NotePad++ vc respondeu a uma dúvida da seguinte forma↓:
para acentuação em TEXTBOX, LABELS, GRIDs, etc, Temos:
- A codepage do Windows
- A codepage do console
- A codepage do programa fonte, antes de entrar no editor de texto
- A codepage do editor de texto
- A codepage do aplicativo Harbour
- A codepage da LIB gráfica que pode ou não ser igual à do Harbour

Ao testar agora o PN e colocar os caracteres "ç ã ê " etc... veja no que deu por favor (usando o ANSI)
ERRO-acentuação.png

muita gente nem gosta de me responder, pois pra a maioria minhas perguntas são "tolas" ou de "gente q não estuda"...
gente me perdoem é o meu grau de dificuldade. já até relatei sobre isso num outro tópico... se eu soubesse não estaria aqui "enchendo o sxcx" de todos...
PS: compilando com IDE/HMG 3.4.4.

Tutorial do Programmers Notepad

MensagemEnviado: 06 Dez 2017 10:21
por JoséQuintas
Até mesmo configurar cores ou comandos/funções

pnote6.png


pnote7.png

Tutorial do Programmers Notepad

MensagemEnviado: 06 Dez 2017 10:23
por JoséQuintas
Ou erro de abrir/fechar parêntesis, abrir/fechar aspas, etc.

pnote8.png

Tutorial do Programmers Notepad

MensagemEnviado: 06 Dez 2017 10:25
por JoséQuintas
Ou configurar ferramentas adicionais.
Tudo no mesmo lugar.
Não tem como dizer que não encontrou alguma coisa.... rs

pnote9.png

Tutorial do Programmers Notepad

MensagemEnviado: 06 Dez 2017 10:35
por JoséQuintas
- A codepage do Windows
- A codepage do console
- A codepage do programa fonte, antes de entrar no editor de texto
- A codepage do editor de texto
- A codepage do aplicativo Harbour
- A codepage da LIB gráfica que pode ou não ser igual à do Harbour


A última:

- A codepage da LIB gráfica que pode ou não ser igual à do Harbour


Quando se usa uma LIB gráfica.... tudo pode acontecer....

Uia... a LIB tem variável própria pra codepage

   PUBLIC _HMG_InitCodepage := SET (_SET_CODEPAGE)


Agora é perguntar pra quem mexe com a LIB, ou no fórum da LIB.
Se ela pega a configuração ANTES de configurar o Harbour.... então ela deve ter inventado algum comando de configuração de codepage....

Vai ver por isso o pessoal prefere o XHarbour... as LIBs não respeitam a configuração do Harbour...

Tutorial do Programmers Notepad

MensagemEnviado: 06 Dez 2017 10:56
por JoséQuintas
E se estiver usando pra Unicode...

#ifdef COMPILE_HMG_UNICODE
   SET CODEPAGE TO UNICODE
#endif


E aí entra o que eu comento várias vezes, e que chega a ser irritante:

Eu não uso XHarbour, eu não uso HMG, eu não uso HMG Extended, eu não uso HWGUI, eu não uso OOHG.
Se quem usa não sabe... não sou eu que vou saber...

Cadê alguém reclamando com essas LIBs sobre não respeitar o Harbour ?
É outra linguagem de programação? Precisa suporte próprio? Que merd.....
Pior ainda... nem se importam com Harbour, estão jogando Harbour no lixo....

Tutorial do Programmers Notepad

MensagemEnviado: 07 Dez 2017 22:14
por microvolution
JoséQuintas escreveu:Cadê alguém reclamando com essas LIBs sobre não respeitar o Harbour ?
É outra linguagem de programação? Precisa suporte próprio? Que merd.....
Pior ainda... nem se importam com Harbour, estão jogando Harbour no lixo....

:'(
Inacreditável... :%
se o sr. JQuintas que é um excelente professor, colaborador, etc está dizendo "uma coisa dessas", quanto mais a mim que ainda estou de fraudas...
*-)

Tutorial do Programmers Notepad

MensagemEnviado: 07 Dez 2017 22:22
por microvolution
"Plain Text" e escolher HARBOUR.

Isso aqui toda vez que abro o PN ele não abre o PlainText direto em harbour, tenho que fazer manualmente todas as vez...
alguém sabe a configuração que faz com que seja padrão ele já abrir e considerar como HARBOUR a linguagem no PLAINTEXT ?

Tutorial do Programmers Notepad

MensagemEnviado: 07 Dez 2017 22:31
por microvolution
ah! lembrei-me de uma coisa q estava "guardada aqui na minha caixola":
as funções:
HB_AnsiToOem("texto")
HB_OemToAnsi("texto")
...
funcionou direitinho agora.
Mas, atenção, o teste deu certo sob as seguintes condições (minha máquina):
- PN em ANSI
- IDE/HMG 3.4.4
- modo console e gráfico juntos

Não sei se funciona bem em outras libs e noutras configurações pessoais.

Vejam a imagem com:
HB_AnsiToOem()
HB_OemToAnsi()
oem ansi.png

Tutorial do Programmers Notepad

MensagemEnviado: 08 Dez 2017 07:27
por JoséQuintas
modo console e gráfico juntos


?

Olhando o samples/applications/super, que é brasileiro:

   SET codepage to portuguese
   SET language to portuguese

Tutorial do Programmers Notepad

MensagemEnviado: 08 Dez 2017 13:11
por microvolution
JoséQuintas escreveu:console e gráfico
isso mesmo prezado professor.

Meu sistema q aos poucos vai se transformando de 16 bits (100% clipper) pra uma série de libs gráficas do harbour juntos.

- No menu principal tem console e gtwg (foi até vc mesmo quem me ensinou);
- numa outra tela, tem gui gtwvw;
- agora estou criando essa tela que postei acima em 100% gui... nela q a acentuação está errada.
coloquei assim o ANSI no meu GRID_:
 define GRID grid_1
                           row 50
                           col 08
                           WIDTH 440
                           HEIGHT 350
                           HEADERS {HB_AnsiToOem('Código'),HB_AnsiToOem('Descrição do Produto'),'Gr','Qte','Vr.Unit.','Total'}
                           WIDTHS {100,240,30,50,100,120}
                           ColumnCONTROLS { {'TEXTBOX','NUMERIC', '999999999999'} , 'TEXTBOX' , 'TEXTBOX' , 'TEXTBOX' , 'TEXTBOX' , 'TEXTBOX' }
                           DYNAMICFORECOLOR { fColor , fColor , fColor , fColor , fColor , fColor }
end GRID

e assim no meu TEXTBOX:
@ 10 , 600 LABEL Label_4 ;
AUTOSIZE ;
VALUE HB_AnsiToOem('Data do Orçamento: ')

Tutorial do Programmers Notepad

MensagemEnviado: 08 Dez 2017 13:33
por JoséQuintas
Teste a outra opção, pra não ter que converter nada.
Teste também chamar a INIT() depois de definir a codepage.

Tá fazendo console + HMG ou HMG + console ?
Main() é GTWVG ou HMG ?

Tutorial do Programmers Notepad

MensagemEnviado: 09 Dez 2017 00:23
por rochinha
Amiguinhos,

microvolution
Isso aqui toda vez que abro o PN ele não abre o PlainText direto em harbour, tenho que fazer manualmente todas as vez...
alguém sabe a configuração que faz com que seja padrão ele já abrir e considerar como HARBOUR a linguagem no PLAINTEXT ?


Por acaso o combo que aparece na barra de ferramentas está com PlainText? Escolha Harbour e feche o PN, provavelmente não está salvando esta configuração.

Tutorial do Programmers Notepad

MensagemEnviado: 09 Dez 2017 08:09
por JoséQuintas
O PN tem o recurso de detectar conforme a extensão do arquivo, ou algum texto no início do fonte.
Se não for extensão conhecida, vai para o default, que também tem como configurar.

No final, tanto faz o que aparece no editor, cada arquivo aberto vai receber o tratamento conforme a configuração.

Tá tudo em TOOLS / OPTIONS (vai no posto Ipiranga.... rs)

pnfile1.png


pnfiles2.png

Tutorial do Programmers Notepad

MensagemEnviado: 09 Dez 2017 11:27
por microvolution
não deu certo. continua abrindo conforme explicação do Quintas, que abre de acordo com o que se tem no início... no meu caso tá aparecendo com C/C++

Agora vou fazer um "chute" aqui e quem sabe "sai gooool"... rsrs
Vou programar o PN para abrir como administrador (win 10/64).

Tutorial do Programmers Notepad

MensagemEnviado: 09 Dez 2017 17:08
por JoséQuintas
é pra um PRG novo, é isso?

Abre em branco, como Plain Text.
Já salva como PRG, e já vai adotar o formato Harbour.
Depois é só continuar editando.

O meu, logo que eu abro:

pnotepad.png


TUDO que precisa configurar está em TOOLS, OPTIONS
Vai olhando um por um.

Provavelmente baixou as configurações lá do GITHUB, e não salvou no lugar correto.
Ou talvez eu não tenha enviado isso, porque cada um ajusta alguns detalhes como quer, por exemplo EU NÃO USO BACKUP, e tem lá nas configurações pra criar .BAK.

Tutorial do Programmers Notepad

MensagemEnviado: 07 Jul 2018 23:00
por JoséQuintas
Desta vez não precisei fabricar erros, é com fontes de terceiros.
A configuração de compilar que criei foi básica, usa algum HBP da pasta do arquivo sendo editado.

pnotepad.png


Só clicar na mensagem de erro e vai direto pra linha do fonte, seja ele qual for, aberto ou não.
Essa não serve pra XHarbour, ele não tem a opção de compilar com mensagens de erro amigáveis (-ge1).

Tutorial do Programmers Notepad

MensagemEnviado: 07 Jul 2018 23:12
por JoséQuintas
A título de curiosidade... como fica isso na tela.
Tirei foto, senão captura fica gigante... rs
Não tem IDE, a gente fabrica uma, espaço de sobra pra ferramentas... rs

tela4k.jpg

Tutorial do Programmers Notepad

MensagemEnviado: 08 Jul 2018 12:42
por JoséQuintas
Só voltando ao assunto do PNotepad e compilar....
Esqueci de alterar a pasta de trabalho, o %d indicaria a pasta do fonte atual.

Outra coisa que parece que ninguém quer enxergar:
Bastou usar o HBMK2 pra ter uma IDE, o HBMK2 tem 1001 utilidades.

Tutorial do Programmers Notepad

MensagemEnviado: 10 Jul 2018 03:38
por JoséQuintas
Esta foi phoda... com PH.... rs
Queria facilitar a formatação de fonte em edição....
Configurei meu formatador no Programmers Notepad e pronto.

Formatação de fonte Harbour, HMG, HWGUI, OOHG, direto no Programmers Notepad, na opção que chamei Format PRG.

pnotepad2.png


pnotepad.png

Tutorial do Programmers Notepad

MensagemEnviado: 10 Jul 2018 03:47
por JoséQuintas
Lógico, tive que ajustar o prgformat... da LIB josequintas em drafts... pra fazer só do fonte indicado.

formatprg.png

Tutorial do Programmers Notepad

MensagemEnviado: 14 Jul 2018 20:35
por JoséQuintas
Pequeno vídeo da formatação e compilação em ação.

https://youtu.be/pTA1yEnUIX4

Tutorial do Programmers Notepad

MensagemEnviado: 27 Jul 2018 23:53
por JoséQuintas
Sei lá... já que IDE com muitas opções parece interessante...
Vamos acrescentar teste de XML...

testxml.png

Tutorial do Programmers Notepad

MensagemEnviado: 24 Mai 2019 18:20
por JoséQuintas
Tem mais uma que não mencionei, mas é perigosa.....
Fontes diferentes de projetos diferentes.

Aqui posicionado no fonte da lib josequintas e compilando

pnote1.png


Aqui posicionado no fonte do JPA e compilando

pnote2.png


Como eu configurei pra executar na pasta do fonte em edição.... compila o projeto que estiver posicionado

O recurso de poder configurar utilitários acabou permitindo isso.

Nota: pode confundir, mas as pastas são estas:
d:\cdrom\fontes\integra
d:\cdrom\fontes\integra\josequintas
d:\cdrom\fontes\integra\sefazclass

Deixava como d:\cdrom pra destacar o que gravar em CD/Backup e nunca mais mexi nisso.

Tutorial do Programmers Notepad

MensagemEnviado: 31 Mai 2019 22:15
por Moralles
Boa noite. O notepad, ou algum outro editor de programas tem recurso de ao estar codificando um programa em Clipper mostrar na tela a estrutura de um dbf, como no EP do Gaspro ?. Grato.

Tutorial do Programmers Notepad

MensagemEnviado: 01 Jun 2019 11:23
por JoséQuintas
Moralles escreveu: editor de programas tem recurso de ao estar codificando um programa em Clipper mostrar na tela a estrutura de um dbf,


Se for pensar direito....
Quer um editor de texto que mostre a estrutura do dbf em outra janela....
Um programa em Harbour.... não é outra janela????

Mas dá pra configurar ferramentas no editor de textos, só acrescentar uma de estrutura, até mesmo pra desviar pra um txt

Tutorial do Programmers Notepad

MensagemEnviado: 16 Dez 2020 03:42
por JoséQuintas
Quebra um bom galho.....
Um erro que cometi durante o vídeo já corrigi depois.
Coloquei #ifdef ao invés de #endif.
O curioso é que não deu erro na compilação....


Tutorial do Programmers Notepad

MensagemEnviado: 16 Dez 2020 04:18
por alxsts
Olá!

Estes videos inseridos no fórum através da tag youtube não tem disponível a opção de exibição em tela cheia, tornando muito difícil assistir. Acho que o Toledo precisa habilitar esta opção, segundo o suporte do Google:



Se o modo de tela cheia não estiver funcionando
Se você estiver assistindo um vídeo do YouTube em outro site e o modo de tela cheia não funcionar, pode ser que o proprietário do site tenha desativado essa opção.

Neste caso, é melhor colocar o link do vídeo direto, com a tag url ao invés da tag youtube.

Tutorial do Programmers Notepad

MensagemEnviado: 16 Dez 2020 06:24
por JoséQuintas
encima do vídeo, clique da direita e copiar url.
depois só colar no navegador.

youtube.png


https://www.youtube.com/watch?v=5vp_n8PevCg&feature=youtu.be

Tutorial do Programmers Notepad

MensagemEnviado: 16 Dez 2020 13:23
por JoséQuintas
Só comentário adicional:

O crédito também é do Harbour, por ter a opção -ge1, que gera a mensagem de erro no padrão da linguagem C, e por isso o Programmers Notepad conseguiu capturar e retirar nome de fonte e número de linha.

E aproveitando: Como dá pra perceber, o HBMK2 está pronto pra ser usado por uma IDE, tem a grande maioria de recursos necessários, incluindo.... programas multi-idiomas, o que seria ótimo pras LIBs e pros exemplos das LIBs.
Além de pesquisar em arquivos de manuais em formato json, e outras coisas mais. Ao invés de inventar IDEs que trabalham diferente... só usar o projeto do hbmk2, e as configurações do hbmk2.
Esse vídeo é um pequeno exemplo sobre isso, bastou o HBMK2 no editor de textos, e já começou a parecer uma IDE.

Tutorial do Programmers Notepad

MensagemEnviado: 16 Dez 2020 14:04
por JoséQuintas
Ia me esquecendo....

pnotepad.png


Agora dá pra acionar o controle de versão direto pelo Programmers Notepad.

É curioso isso: um recurso tão simples, de adicionar o nome de uma ferramenta, uma linha de comando, e alguns detalhes simples, e acaba sendo um negócio poderoso.
De repente adicionar visualizador de DBF, HEIDISQL, e outras coisas mais.

Vixe... se adicionar o hbmk2 gerando e executando hrb.... acaba ficando parecido com a IDE do vb6...