AppCode 2019.1: Swift 5, iluminação de fundo aprimorada, navegação e preenchimento automático, expressões em movimento e muito mais

Olá pessoal!


Há uma semana, lançamos o AppCode 2019.1 - vamos falar sobre as mudanças nele. Sob o corte, um monte de novos, úteis, corrigidos e suplementados.


Splash



Swift


Swift 5


Todos os novos recursos do Swift 5 funcionam corretamente no AppCode 2019.1:


  • SE-0200 Literais de texto bruto
  • SE-0213 Inicialização literal por coerção
  • Chamadas dinâmicas SE-0216
  • SE-0224 Suporte ao operador 'less than' em condições de compilação
  • SE-0227 Caminho da chave de identidade
  • SE-0228 Corrigir ExpressibleByStringInterpolation
  • SE-0230 Achatar opcionais aninhados resultantes da try?

Renomear


Ocorreu um problema ao renomear métodos e métodos sobrecarregados da classe pai - mas agora ele não existe.


Navegação de definição


Parece que poderia ser mais simples e mais elementar para a transição para a definição de um método ou classe? Ação familiar padrão.


E tudo isso é verdade no Objective-C: o nome do tipo é separado ao inicializar o objeto, o próprio método inicializador é separado. Assim, se o cursor estiver no nome do tipo, prosseguiremos para a definição do tipo, se no inicializador, para a definição do inicializador. Mas em Swift, as coisas ficam mais complicadas. O inicializador foi mesclado com o nome do tipo e, se reproduzirmos o comportamento do Xcode, perderemos a capacidade de alternar para o inicializador. Se deixarmos o comportamento do AppCode 2018.3.x, quebramos o hábito do usuário ("como no Xcode", ou seja, a transição não para a definição do inicializador, mas para a definição do tipo). Por razões óbvias, os usuários não gostam disso.


Como resultado, desenvolvemos uma solução intermediária: afinal, a expressão que inicializa o objeto no Swift ainda consiste em duas partes. Tudo antes dos parênteses é um nome de tipo e tudo dentro é uma assinatura inicializadora. Portanto, se o cursor estiver no nome do tipo, prosseguiremos para a definição do tipo, se estiver entre parênteses - para a definição do inicializador:


Ir para declaração


Ambos os casos de uso são salvos, todos estão felizes.


Movendo expressões


Enquanto os usuários do Xcode selecionam com o mouse e copiam e colam, os usuários do AppCode posicionam o cursor na expressão e a movem completamente com um clique leve ⇧⌘↑ / :


Instrução Mover


Funciona para loops, funções, métodos, classes, condições, em geral, para quase tudo.


Literais multilinhas


Como transformar um literal de linha única em várias linhas? No AppCode, basta clicar em :


Cadeias de linhas múltiplas


Luz de fundo, preenchimento automático, análise de código e tudo-tudo-tudo


Quanto mais corretamente construímos a árvore de símbolos, usada para realçar, análise de código, navegação e outras funções IDE (mesmo para exibir variáveis ​​no depurador), melhor e mais corretamente o AppCode funcionará. Nesta versão, resolvemos vários problemas fundamentais que estragaram a vida dos usuários:


  • Começamos a construir símbolos de biblioteca para simuladores e dispositivos. Anteriormente, eles construíram apenas para o simulador.
  • Feito isso, eles começaram a determinar corretamente a plataforma atual (simulador / dispositivo) e a transferir corretamente o anotador de clang para o Objective-C e o SourceKit para o Swift. Por que isso é importante? Por exemplo, o SourceKit não exibirá erros e avisos se estiver incorreto passar a pasta com os produtos de montagem nos argumentos. Este problema deve desaparecer.
  • Começamos a processar corretamente o DerivedSources e todas as fontes geradas nesta pasta (Core Data, Intents).

Objective-C / C / C ++


Os colegas do CLion adicionaram estilos de nomeação de construção de código para C / C ++, e também os adquirimos para Objective-C ( Preferences | Editor | Code Style | C/C++/Objective-C | Naming Convention) :


Convenção de nomenclatura


Iniciar e depuração


O AppCode agora pode unir processos em execução não apenas no simulador, mas também no dispositivo ( ⇧⌘AAttach to process ):


Anexar ao processo


Foi adicionada a capacidade de selecionar o idioma e a região do aplicativo nas configurações de inicialização:


Idioma e região do aplicativo


Executar para o cursor pode ser chamado não apenas através de ⌥F9 , mas também clicando no número da linha no editor:


Silentciar variáveis


O recálculo de variáveis ​​durante a depuração agora pode ser desativado usando a ação Mute Variables no menu de contexto:


Silentciar variáveis


Temas para o IDE


Um leitor atento já percebeu que todas as capturas de tela do post foram feitas usando o novo tema Dark Purple :


Tema roxo escuro


Os temas do IDE agora podem ser executados por conta própria ; portanto, além de vários temas criados por nós, você já pode encontrar várias opções de design personalizado no repositório de plug-ins . E até 3 de maio, você pode não apenas criar seu próprio tema, mas também participar de um concurso recentemente anunciado por nós.


Lista de trechos de código visualizados / modificados recentemente


Existem várias etapas úteis para navegar para lugares abertos ou alterados recentemente no seu código:


  • Arquivos recentes ( ⌘E )
  • Comutador ( ⌃⇥ )
  • Ir para o último local de edição ( ⇧⌘⌫ )

É difícil superestimar a mudança para a última seção editada do código, especialmente ao editar um arquivo grande.


Agora também há uma lista de locais visualizados / alterados recentemente de Locais recentes ( ⇧⌘E ):


Locais recentes


Este é o lançamento. Escreva todas as perguntas, desejos e até relatórios de bugs aqui nos comentários - teremos o maior prazer em responder!


Equipe AppCode

Source: https://habr.com/ru/post/pt448462/


All Articles