strona główna

Archive for the 'Emacs' Category

Szablony w emacsie

Wednesday, May 25th, 2005

Za dużo czasu spędzam na wpisywaniu tej samej informacji w kilku różnych miejscach podczas pisania w C++.

Przykład: dodanie nowej klasy, nazywającej się - powiedzmy - NowaKlasa, do projektu to:

1\. utworzenie pliku nowa_klasa.h według wzoru:


/**
 * \file nowa_klasa.h
 * \brief FILLME
 * \author Marcin Kaszynski
 * \date 2005-05-25
 */

#ifndef _NOWA_KLASA_H_
#define _NOWA_KLASA_H_
namespace ns_obowiazujacy_w_danej_czesci_projektu
{
    class NowaKlasa
    {
    public:
        NowaKlasa();
        virtual ~NowaKlasa();
    protected:
    };
}

#endif // _NOWA_KLASA_H_

2\. utworzenie pliku nowa_klasa.cpp według wzoru:


#ifdef _HAVE_CONFIG_H_
#include "config.h"
#endif // _HAVE_CONFIG_H_

#include "nowa_klasa.h"

namespace ns_obowiazujacy_w_danej_czesci_projektu
{
    /*** NowaKlasa ***/

    NowaKlasa::NowaKlasa()
    {}

    NowaKlasa::~NowaKlasa()
    {}
}

Oba te pliki mogą zostać w całości wygenerowane na podstawie tylko tych informacji:

* nazwy NowaKlasa,
* nazwy przestrzeni nazw (namespace),
* imienia i nazwiska autora.

Z czego tylko nazwa klasy zmienia się zawsze. Nazwa namespace i dane o autorze mogłyby być definiowane przez plik konfiguracyjny umieszczony w katalogu, w którym mają być utworzone nowe pliki (lub którymś katalogu nadrzędnym) oraz wpisy w konfiguracji emacsa.

Przyglądałem się istniejącym pakietom typu skeletontempo, ale żaden z nich nie jest na tyle inteligentny.

Zapowiada się fajna wprawka z Elispa :)