Publicações com a etiqueta "dica"
Emacs: Ediff lado-a-lado e sem o irritante frame pop-up
Achei hoje sem querer, e de uma só vez, duas modificações no Ediff que sempre desejei mas que nunca busquei por uma solução:
;; buffers do Ediff lado-a-lado (setq ediff-split-window-function 'split-window-horizontally) ;; ao invés do frame pop-up do Ediff, uma elegante window (setq ediff-window-setup-function 'ediff-setup-windows-plain)
Para quem não sabe, Ediff é um modo do Emacs que fornece uma maneira conveniente de trabalhar com diffs, principalmente na hora de fazer merge, resolver conflitos e etc em códigos.
Quem precisa do Meld? :-)
Tornando shell scripts executáveis automaticamente com Emacs
Cansado de dar um chmod +x em seus scripts recém criados? O hook abaixo (para GNU Emacs) faz isso por você ao salvar um arquivo quando o mesmo possui um #! em seu início:
(add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p)
Compartilhar "clipboard" entre X e GNU Emacs
Configurando a varíavel x-select-enable-clipboard para não-nulo ativa o compartilhamento da seleção primária entre o Emacs e o clipboard (ou área de transferência, como queira) do X.
Esta opção é ativa por padrão no Windows.
(setq x-select-enable-clipboard t)
Dicas de Emacs
O GNU Emacs faz parte do meu dia-dia e, como este blog anda pouco movimentado, de agora em diante tentarei publicar ao menos uma dica por semana a respeito do mesmo.
O Emacs é extremamente flexível e extensível, o que o torna um dos mais poderosos editores de texto que se tem notícia até hoje. A produtividade que pode-se obter com ele para qualquer atividade relacionada a edição de texto (desde desenvolvimento de software à organização pessoal e e-mails) é impressionante.
A primeira release do Emacs foi em 1977 e existe muita gente que o utiliza há mais de 3 décadas. Comecei a utilizar Emacs há mais de cinco anos e seria impossível trocá-lo por outra coisa. Simplesmente não consigo obter a mesma produtividade em outro editor de textos atualmente.
Nem todo software poderá agradá-lo 100%, no Emacs isso é facilmente contornável personalizando-o à sua maneira. Meu arquivo de configuração (que agora na verdade são divididos em vários) possui muita coisa interessante que gostaria de compartilhar com vocês através deste blog.
Então, bom proveito!
Extensões essenciais para Mozilla Firefox
Sou um antigo usuário do Epiphany (navegador oficial do projeto GNOME) e era feliz, mas hoje em dia eu estou utilizando o Mozilla Firefox devido as suas várias extensões (addons) para desenvolvimento web.
Poderia até utilizar os dois navegadores (e utilizava) sendo o Firefox apenas para desenvolvimento, mas é muito mais agradável manter todo seu histórico, marcadores e tudo mais em um único navegador porque, queira ou não, você acaba utilizando os dois para navegação.
Porém nem tudo são flores! Considero a usabilidade do Epiphany superior e voltar ao Firefox não foi fácil, principalmente - acredite - devido a duas extensões do Epiphany relacionado às abas.
Felizmente há um tempo atrás eu encontrei duas extensões equivalentes para o Firefox, são elas:
A primeira faz com que toda nova aba seja inserida logo após a aba em que você está, mantendo uma maior organização de suas abas. Uma mão na roda para quem mantém muitas abas abertas e recorrentemente precisa percorrer uma longa lista de abas para encontrar as novas que, por padrão, são abertas no final.
Já a segunda extensão mantém o histórico da aba do link de origem, ou seja, se você abre um link em uma outra aba, todo o histórico da aba onde continha o link vai junto.
Sua vida muda depois de ativar essas duas extensões! Aproveito também para listar outras extensões úteis para seu dia-a-dia:
E como não poderia faltar, segue as extensões que uso para desenvolvimento web que todo já deve conhecer:
- Firebug
- Firecookie
- YSlow
- Web Developer
- ColorZilla
No mais, fico no aguardo de uma versão estável do Epiphany com a engine WebKit.
Pré-inicializando formulários de um FormWizard
Se você precisa pré-inicializar dados de formulários num FormWizard do Django, você consegue da seguinte forma:
my_wizard = MyWizard(
[StepOneForm, StepTwoForm],
initial={
1: {field_x: data, field_y: data, ...},
2: {field_x: data, field_y: data, ...},
...
}
)
Certo? Ok, mas e se eu quiser inserir estes dados dinamicamente, de acordo com o usuário logado no site?
A forma que eu encontrei de fazer isso foi sobrescrevendo alguns métodos da classe FormWizard. Veja um exemplo:
from django.contrib.formtools.wizard import FormWizard
class MyWizard(FormWizard):
def parse_params(self, request, *args, **kwargs):
self.user_data = {
'first_name' = request.user.first_name,
'last_name' = request.user.last_name
}
def get_form(self, step, data=None):
if step == 1:
return self.form_list[1](data, prefix=self.prefix_for_step(1),
initial=self.user_data)
else:
super(MyWizard, self).get_form(step, data)
...
Não conhece o form wizard do Django? Leia mais a respeito na documentação oficial do utilitário.