Code Monkey home page Code Monkey logo

tds-vscode's Introduction

TOTVS Developer Studio para VSCode

GitHub license Version Installs Downloads Rating GitHub issues GitHub forks Visual Studio Marketplace Last Updated

All Contributors

A extensão do TOTVS Developer Studio for VS Code disponibiliza uma suíte de desenvolvimento para o ecossistema Protheus/Logix.

Utilizando os protocolos de comunicação LSP (Language Server Protocol) e DAP (Debug Adapter Protocol), ambos amplamente utilizados e extensíveis à outras IDEs de mercado, como Atom, Visual Studio, Eclipse, Eclipse Theia, Vim e Emacs.

Lista de IDEs com suporte ao LSP e ao DAP.

A extensão TDS-VSCode somente é suportada por S.O. de 64 bits.

Funcionalidades

SOBRE O USO DE CHAVES E TOKENS DE COMPILAÇÃO

As chaves de compilação ou tokens de compilação empregados na construção do Protheus/Logix e suas funcionalidades, são de uso restrito dos desenvolvedores de cada módulo.

Em caso de mau uso destas chaves ou tokens, por qualquer outra parte, que não a referida acima, a mesma irá se responsabilizar, direta ou regressivamente, única e exclusivamente, por todos os prejuízos, perdas, danos, indenizações, multas, condenações judiciais, arbitrais e administrativas e quaisquer outras despesas relacionadas ao mau uso, causados tanto à TOTVS quanto a terceiros, eximindo a TOTVS de toda e qualquer responsabilidade.

Interoperabilidade entre sistemas operacionais

Para melhor interoperabilidade do ecosistema Protheus (áreas de trabalho, smartClient, appServer e demais componentes) entre os sistemas operacionais suportados pelo TDS-VSCode e seus componentes, recomenda-se veementemente que pastas e arquivos não contenham caracteres especiais e/ou acentuados e sempre em mínusculas.

Leia Convenção para nomenclatura de File System em ambiente Linux.

Guia rápido

O VS Code pode apresentar problemas em suas funcionalidades em sistemas operacionais da linha Windows Server. Veja os requisitos para uso do VS Code em Requirements.

Nunca usei o VS Code: Recomendamos a leitura de:

Ao iniciar o VS Code com a extensão TDS-VSCode instalada, abra (ou crie) a pasta principal que contém (ou conterá) seus arquivos fontes e de recursos. Essa pasta é denominada genericamente de projeto.

No primeiro uso da extensão em um projeto, lhe será apresentada as Boas Vindas com configurações mínimas necessárias. Faça-as.

  • Acione o ícone da TOTVS na barra de atividades
  • Registre o servidor de trabalho na visão (Servidores)[docs/servers.md], acionando a ação +
  • (Conecte-se)[docs/servers.md] ao servidor recém registrado
  • Após a conexão, acione na barra de atividades o ícone do Explorer
  • Abra (ou crie) o arquivo para edição e faça o desenvolvimento necessário
  • (Compile)[docs/compilation.md] acionando o atalho ctrl+F9 ou o menu de contexto sobre o arquivo ou recurso
  • Corrija eventuais erros de compilação apresentados na visão Problems
  • (Execute/depure)[docs/debugging.md] o Smartclient configurado na página de Boas vindas ou direto no arquivo .vscode\launch.json

Para detalhes dos processos, acesse as ligações (links).
A visualização ou não das Boas Vindas pode ser efetuada em File | Preferences | Settings | Extensions | TOTVS | Welcome Page.

Saiba mais em

TOTVS - Extensão de desenvolvimento para VSCode (TEC) - Parte 1
TOTVS - Extensão de desenvolvimento para VSCode (TEC) - Parte 2
TOTVS - TDS-VSCode - Desenvolvimento colaborativo (TEC)

Acentuação e caracteres especiais nos códigos fontes

Tivemos notificações de problemas de encode abrindo fontes antes salvos no TDS, isso ocorre porque o encode original do VSCode é UTF8 e o do TDS-VSCode é outro. Para garantir a compilação é necessário compatibilizar o encode da seguinte maneira:

  • No estado original o fonte será mostrado desta maneira:
    Encoding 1
  • Antes de editar/salvar qualquer fonte no VS-Code entre nas configurações (Ctrl + ,).
  • No campo de busca digite _encode_ e selecione Windows1252 ou Windows1251, se utilizar alfabeto cirílico.
  • Abra o fonte com o novo encode (reforçando que NÃO DEVE tê-lo salvo antes em UTF8)
    Encoding 3
  • Compile e/ou recompile o fonte e execute-o.
    Encoding 4

Por padrão, o TDS-VSCode já vem configurado para usar o encode Windows1252 (cp1252).

Desenvolvimento Colaborativo

  • Se deseja contribuir com o desenvolvimento do plugin, acesse Git Hub TDS-VSCODE, faça seu commit que iremos analisar!

Extensões recomendadas

  • Numbered Bookmarks

    Permite uso de bookmarks no estilo Delphi numerados de 1 a 9.

    Toggle

  • Protheus.DOC

    Suporte aos recursos e snippets de documentação TOTVS ProtheusDoc para VsCode.

    Protheus.DOC

Extensões com incompatibilidade

As extensões abaixo não devem ser utilizadas junto com o TDS-VS-Code porque podem causar mal funcionamento.

Caso você perceba que alguma outra extensão de terceiros está interferindo no TDS for VS-Code, favor abrir um chamado informando detalhes da extensão e o problema causado.

Suporte

Capturador de Logs

Caso tenha problemas com a ferramenta e deseja suporte da equipe de desenvolvimento da extensão, inicie uma ferramenta de coleta de logs para auxiliar no suporte. Essa ferramenta colhe informações como versões de ferramentas e extensões, sistema operacional, configuração de servidores e etc.

  • Para ativá-la, selecione pelo atalho CTRL + SHIFT + P, digite TOTVS: On Logger Capture. Nesse momento o capturador de log será iniciado.

  • Reproduza o problema e selecione a opção CTRL + SHIFT + P digite TOTVS: Off Logger Capture ou na Barra inferior clique sobre o texto Capturando logs.... O capturador será encerrado e um arquivo chamado tdsSupport.zip será gerado. Anexe esse arquivo ao chamado.

Logger

Resolução de problemas

Alguns problemas conhecidos e como resolvê-los.

Ocorrência Solução
Aplicação de pacotes de atualização (patches)
Servidores Lobo Guara, versão igual ou anterior a 19.3.0.5, podem apresentar mensagem de erro no processo de validação e mesmo assim aplicá-lo. Atualizar o servidor para a versão mais recente.

Se não conseguir resolvê-los, abra um chamado com o maior número de informações possíveis e inclua os logs gerados conforme instruído em TROUBLESHOOTING.

Melhorias

Se você sentiu a falta de alguma funcionalidade deixe sua idéia registrada. Ou se preferir colabore conosco e faça você mesmo. Veja como colaborar a seguir.

Desenvolvimento Colaborativo

Para contribuir com o desenvolvimento da extensão, acesse Git Hub TDS-VSCODE, faça um fork do projeto, crie um chamado "Pull Request" que iremos analisar!

TOTVS - TDS-VSCode - Desenvolvimento colaborativo

Mantenedor


TOTVS S.A.

🚧 🔌 📆

Colaboradores


Alan Cândido

💻 📖

lwtnb-wrk

💻 📖

DanielYampolschi

💻 📖

Matheus Sales

💻 📖

Mansano

💻 📖

Acacio Egas

💻

Daniel Otto Bolognani

💻

Leo Watanabe

💻 📖

Rogério Ribeiro da Cruz

💻

Robson William

⚠️

FELIPE CAIADO ALMEIDA

🐛

isaquerochak

🐛

Rodrigo Gonçalves

🐛

Rogério A. Morais

💻

alexmmartins

📖

Guilherme Bigois

📖

tds-vscode's People

Contributors

acacioegas avatar alexmmartins avatar bigois avatar brodao-zz avatar brodao2 avatar caiadofelipe avatar danielbolognani avatar danielyampolschi avatar htm-joaquim avatar isaquerochak avatar leowww avatar lwtnb-wrk avatar matheus-sales avatar ramorais avatar ricardomansano avatar robsonwilliam avatar rogeriorc avatar totvsarg-alejandromedina avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tds-vscode's Issues

Barra invoca intelisense

Ao digitar o caractere "/" dentro de uma função, o intelisense é invocado sugerindo a ultima função usada dele. Não sei se isso é intencional, mas acaba atrapalhando um pouco ao comentar linhas quando a configuração está para invocar o intelisense após um caractere digitado.

bug barra

Salvar senha do ambiente

Gostaria de sugerir a criação de uma opção para salvar o usuário e a senha do ambiente como já existe no TDS baseado no eclipse atualmente.

Abas exibidas, porém sem variáveis

Na extensão advpl-vscode quando o Visual Studio Code está em modo de depuração, são exibidas apenas as abas (local, private, static) que contém variáveis, contudo nesta extensão não.

O fato da exibição das abas sem variáveis gera a ilusão que dentre das mesmas contém variáveis.

Este comportamento é comum a extensão acima citada e ao TOTVS Developer Studio.

Segue um vídeo ilustrando a solicitação: ISSUE_22.zip

Dados do arquivo de chave de compilação não são recarregados

Criei um arquivo .aut com os dados da minha chave de compilação e tentei carregá-lo no plugin, porém devido a alteração do ID para compatibilidade com mac/linux, minha chave estava inválida.
Assim, gerei uma nova chave de compilação com o novo ID e alterei o mesmo arquivo com os novos dados, porém como esse arquivo já tinha sido carregado uma vez no plugin, ao selecionar o mesmo arquivo novamente, o plugin não recarregava os dados. Para solucionar isso tive que selecionar um outro arquivo aleatório e depois selecionar novamente meu arquivo com os novos dados.

Localização do strings para espanhol

Bom día, tenho já completado a localização do strings para o idioma espanhol (https://github.com/AleksSyntek/tds-vscode), mais acho que não é visualizada corretamente por alguma configuração já que tem tudo ok em apariéncia pero após do reinicio do VSCode é a extensão segue com maioria do strings no inglés é algum otro em espanhol é/ou portugués.
Álguem pode indicarme onde devo avaliar que as configurações feitas esten certas?
Obrigado pela possivel resposta.

Intellisense retornando em caixa alta

Ao utilizar o Intellisense do plugin, as palavras são retornadas sempre em caixa alta, não respeitando as boas práticas do AdvPl, onde para função temos a primeira letra em caixa alta e o restante em caixa baixa.

Breakpoint condicional derruba conexão do smartclient

bom dia,

Estou fazendo um debug e ao habilitar um breakpoint com uma expressão (SD3->D3_COD='024196001') o vs code derruba a conexão com smatclient, e não exibe nenhuma mensagem no console.
No appserver.log, ele está mostrando essas mensagens:
Thread 22964

Exception code: C0000005 ACCESS_VIOLATION

Fault address: 00D07EA0 01:00906EA0 E:\TOTVS12\Microsiga\Protheus\bin\appserver_x32\AppServer.exe

Stack Trace:

Address Frame

00D07EA0 00000000
Unable to locate source line number

00C87300 00000000
Unable to locate source line number

00442B38 00000000
Unable to locate source line number

0114F2E9 00000000
unqlite_compile_file+18D309
Unable to locate source line number

76EFE84C 00000000
NtSetInformationFile+C
Unable to locate source line number

76EFE84C 00000000
NtSetInformationFile+C
Unable to locate source line number

742E34B9 00000000
SetFilePointer+79
Unable to locate source line number

76EFE63C 00000000
NtWriteFile+C
Unable to locate source line number

742D93D9 00000000
WriteFile+79
Unable to locate source line number

00C149A3 00000000
Unable to locate source line number

76EFE73C 00000000
ZwAllocateVirtualMemory+C
Unable to locate source line number

742E3791 00000000
VirtualAlloc+41
Unable to locate source line number

00443B9A 00000000
Unable to locate source line number

0044FD21 00000000
Unable to locate source line number

Chave de compilação necessita de um arquivo .aut

Não é possível validar uma chave de compilação sem fornecer um arquivo .aut.
Uma vez que o arquivo apenas contém esses dados e ao ser carregado os preenche na interface do plugin, acredito que apenas preencher os dados deveria ser suficiente para validar uma chave, sem a necessidade de sempre haver o arquivo .aut.

Habilitar a opção de ativar ou não os componentes

Não sei se é impressão minha, mas o plugin carrega muita coisa que acaba ficando pesado o vscode, por exemplo, o plugin do killer carregava apenas o necessário, com isso era muito rápido desenvolver.

Por exemplo as caixas de notificações, poderia ter uma opção para desabilitar, o auto complete, as msgs do log tá trazendo varias informações mas na maioria das vezes apenas interessa saber se foi compilado ou não.

Mas parabéns pela iniciativa!!!

Exibir tabelas e conteúdos

Na extensão advpl-vscode temos a opção de exibir as tabelas (advpl.debug_showTables: mostra as tabelas abertas), porém esta opção não está disponível na extensão tds-vscode.

Seria possível implementar? Pois a verificação do estado das tabelas é de grande valia no momento da depuração dos fontes (principalmente no uso de pontos de entrada).

Segue um vídeo em anexo ilustrando a solicitação: ISSUE_20.zip

Debug EAI

Boa tarde prezados,

Configurei o visual code conforme os videos feitos pelo Ricardo Mansano

https://www.youtube.com/watch?v=MwIu01Ztfvg
https://www.youtube.com/watch?v=Cz4N0XWCXHY

E o debug ocorre normalmente para uma rotinas de contas a receber. Mas quando tento debugar via recebimento de mensagem, especificamente no FINI070LST.prw ele simplesmente não é efetivo.

Mas via TDS o debug é realizado com sucesso.

gostaria de entender onde estou errando.

Obrigado.
contato: [email protected]
[email protected]

Adicionar servidores no monitor

Boa tarde! Permitir que o Server seja adicionado no Monitor sem a necessidade de ter que cadastrar ele, assim como ocorre no TDS hoje, onde ele adiciona ao monitoramento escolhendo essa opção.

Encoding sugerido

Pessoal, na documentação está sendo informado que o encoding sugerido deve ser o ISO-8859-16, até então eu estava utilizando o Windows-1252 que é o mesmo utilizado no TDS no Eclipse. Ao alterar para o encoding sugerido, os arquivos ficaram com problema nos caracteres especiais e com isso acabei voltando para o Windows-1252.
Dessa forma, o correto não seria sugerir o uso do encoding Windows-1252?

Mostrar apenas os fontes que foram compilados

Boa tarde!
Seria possível para quando for compilado uma pasta, ou o projeto por completo, mostrar no output um resumo com apenas os fontes que foram compilado, imagina que nesta pastas tem 20 fontes e foram alterados apenas 4, quando compilamos ele mostra a mensagem para os 20 fontes 16 com skiped e os 4 como compilados. Mas para verificar se esses 4 foram compilados fica difícil de ver no output.
Isso seria possível?

Conteúdos strings não são apresentadas como sendo tipo string

Ao verificar uma variável no watch, ou no mouse hover no debug, ou no debug console as variáveis do tipo caracter são apresentadas sem aspas, o que faz que elas possam ser apresentadas de forma incorreta.

image

No exemplo acima a variável cPercent é do tipo caracter, mas é apresentada como numérica.

Aplicar Patch com múltiplos arquivos

Melhoria na aplicação de patch:
1-Na tela de aplicação de Patch permitir a seleção de vários
2-Garantir a aplicação na mesma ordem que foram selecionados, pra que o desenvolvedor possa definir a ordem de precedência

Executar querys semelhante ao TDS (Eclipse)

Permitir executar querys em tempo de debug semelhante ao TDS na versão eclipse. Desta forma ganhariamos produtividade e agilidade no processo de correção e/ou melhorias no desenvolvimento.

O Intelisense nao contempla as classes do advpl.

Acredito que essa questão deva estar no roadmap do plugin, mas como não encontrei este roadmap, deixo aqui a sugestão de que sejam adicionadas as classes e seus métodos/propriedades ao intelisense do plugin.

Aplicação de patch não detecta rpo em uso

Ao fazer uma compilação em um rpo em uso, a extensão gera um erro e aborta a execução da compilação, porém ao aplicar um patch em um rpo em uso, não ocorre o mesmo comportamento. O processo fica como se estivesse pendente e nunca encerra.

Compilação do Projeto

Bom dia.

Não existe a opção de compilar o Projeto? .PRJ, Somente o Folder?

Quando compilo o folder, ele literalmente compila todos os fontes. Não da skip nos fontes que estão com a mesma versão.
Temos em média mais de 1000 fontes customizados, está demorando em torno de 15 minutos para compilar todos os fontes.

Indentação de código

Ao utilizar o TDS baseado no eclipse é possível realizar a indentação dos códigos através de um comando existente nele o qual podemos customizar qualquer tecla de atalho para executa-lo, na extensão feita para o vscode eu não encontrei uma forma de fazer a indentação do código, esta funcionalidade já existe ou já está planejada?

MacOS

Boa tarde,

Funciona com o MacOS ? Na hora de configurar o caminho do smartclient não está me oferecendo essa possibilidade.

grato,

Chave de compilação vencida

Após vencer a chave de compilação não é possível compilar nem User Function, o único jeito foi abrir a tela de chave de compilação e clicar em "Clean Key".

extensão .prg

Bom dia

temos fontes .prg e não esta reconhecendo no vscode com o plugin da totvs

Watch

Ao incluir uma variável no watch durante o debug, em muitos momentos o watch trava não atualizando o valor da variável como impossibilitando que seja incluso ou excluso os conteúdos.

Iniciar conectado no ambiente anterior

Na extensão advpl-vscode quando o Visual Studio Code é aberto, ela já mantem o último ambiente conectado como ativo, não tendo a necessidade de informar ambiente, usuário e senha novamente.

Seria possível implementar esse recurso? Pois o mesmo agilizava o início da depuração.

Segue um vídeo ilustrando a solicitação: ISSUE_21.zip

Lentidão ao encerrar o debug

Prezados,

Ao encerrar o debug no meio da execução quando o breakpoint está ativo, a IDE demora a encerrar o processo.

No antigo plugin era imediato.

Chave de compilação com ID do TDS

Gerei minha chave de compilação conforme o ID exibido no TDS, e só depois da chave gerada eu vi na documentação a seguinte mensagem:
"A partir de 17/05/2019 todas as chaves devem ser regeradas utilizando o ID exibido no nosso plugin do VSCode. Isse se faz necessário para suporte de Linux e MAC."

Entendo a regra, mas não faço utilizo ambiente Windows para desenvolvimento.
No ambiente Windows ele não poderia continuar aceitando a chave como era gerada anteriormente?

Depurador percorre sempre a declaração das variáveis estáticas.

Depurador percorre sempre a declaração das variáveis estáticas antes de cair na função chamada pelo vscode, mesmo que não haja nenhum breakpoint nestas declarações estáticas e mesmo que a opção de multi thread esteja desabilitada. Acredito que isso aconteça porque uma thread separada faz a declaração dessas variáveis e outra thread inicia o programa chamado pelo vscode, pois ao apertar F5 na declaração das estáticas, o depurador pula para a execução correta chamada pelo vscode.

Lista dos ambientes ao conectar no AppServer

Boa tarde,

Função semelhante ao TDS.
Na primeira conexão com o appserver, listar os ambientes disponíveis no appserver e salvar no jSon environments.
Atualmente é digitado no campo ou adicionado manualmente através do servers.json
"environments": [
"PROD",
"PROD_COMP",
"PROD_COMP2",
"PROD_DESENV"
],

Intelisense omite variáveis e funções locais

As sugestões do intelisense do plugin estão sobrescrevendo as sugestões de variáveis e funções locais, fazendo com que elas nunca sejam sugeridas. Estas sugestões costumam ser automáticas quando o plugin utilizado não tem intelisense, como o antigo plugin do advpl para vscode.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.