パッケージ(header2.el)の内容をどのように変更しますか?


7

自動ファイルヘッダーパッケージを見つけ、MELPAで応援し、インストールしました。プロジェクト開発において、ファイルヘッダーが非常に役立つことがわかりました。私はいつも、誰がどこに、何回そこにいたかを知っています。ほとんどの場合、私は彼らが何をしたかを知っています。更新カウントと最終更新日は、使用するファイルの適切なバージョンを決定するのに非常に役立ちます。

わからないことが一つあります。

たとえば、header2MELPAからインストールした後、dot-emacsで宣言します。

;; To have Emacs update file headers automatically whenever you save a
;; file, put this in your init file (~/.emacs):

(autoload 'auto-update-file-header "header2")
(add-hook 'write-file-hooks 'auto-update-file-header)

;; To have Emacs add a file header whenever you create a new file in
;; some mode, put this in your init file (~/.emacs):

(autoload 'auto-make-header "header2")
(add-hook 'emacs-lisp-mode-hook 'auto-make-header)
(add-hook 'c-mode-common-hook   'auto-make-header)

したがって、Emacsで新しいファイルを作成する場合、たとえばfoobar.elなどです。ヘッダーが表示されます。また、ファイルを書き込むと自動的に更新されます。では、テキストLast-Updated:をに変更したいとしますFoo-Last-Updated

そのLast-Updatedため、パッケージからgrepを実行し、header2すべての出現箇所をに置き換えましたFoo-Last-Updated。念のため、Emacsを再起動しました。Last-Updated代わりにまだ表示されますFoo-Last-Updated

ヘッダーの内容を変更するための提案はありますか?マニュアルには何も見つかりませんでした。


パッケージの内容を変更する必要はありません。パッケージを要求した後で、必要なものを再定義できます。PCにアクセスしたら、例を回答に投稿します。同じフォルダー内の.elcファイルを更新していないため、古いものをまだロードしています。パッケージの.elcファイルを削除すると、.elファイルでの編集が有効になります。
Kaushal Modi 2015

@kaushalmodiご提案ありがとうございます。コンパイルした* .elcファイルを削除しました。そして、Emacsを再起動しました。これまでのところ何も変更されていません...別の提案?
ReneFroger

新しいファイルで試しましたか?すでにヘッダーがある古いものを使用している場合、変更が既存のヘッダーの更新に失敗するかどうか疑問に思います。
ダン

回答:


4

header2ヘッダーのカスタマイズ

のドキュメントからheader2.el

個々のヘッダー要素を定義します。これらは、サイト固有のヘッダーを構築するために使用される構成要素です。このファイルまたはファイルに独自の関数を追加できます.emacs。変数make-header-hookは、実際に呼び出される関数を指定します。

ヘッダーを好みに合わせてカスタマイズする方法の例を次に示します。

(require 'header2)

(defsubst my/header-timestamp ()
  "Insert field for timestamp"
  (insert header-prefix-string  "Time-stamp: <>\n"))

(defsubst my/header-projectname ()
  "Insert Project Name"
  (insert header-prefix-string "Project    : "
          (when (featurep 'projectile)
            (replace-regexp-in-string "/proj/\\(.*?\\)/.*"
                                      "\\1"
                                      (projectile-project-root)))
          "\n"))

(defsubst my/header-description ()
  "Insert \"Description: \" line."
  (insert header-prefix-string "Description: \n"))

(defsubst my/header-dash-line ()
  "Insert dashed line"
  (insert header-prefix-string)
  (insert-char ?- fill-column)
  (insert "\n"))

(setq make-header-hook '(my/header-timestamp
                         header-blank
                         my/header-dash-line
                         my/header-projectname
                         header-file-name
                         header-author
                         my/header-description
                         my/header-dash-line))

(add-hook 'emacs-lisp-mode-hook #'auto-make-header)

パッケージを直接変更する

一般に、これはお勧めできません。パッケージマネージャーを使用してパッケージを更新する場合、パッケージの更新時に編集内容が失われるためです。

emacsのバージョン24.4以降、パッケージのロードを開始する前の非常に最初に、以下をemacs initに追加できます。これにより、常に最新のファイルがロードされます(.elファイルでも.elcファイルでも)。

(setq load-prefer-newer t)

ただし、それがない場合は、デフォルトで.elcファイルがロードされます(存在する場合は.elは無視されます)。

ただし、パッケージの.elファイルを直接編集しないようにしてください。

より詳しい情報


あなたの非常に明確な説明をありがとう、それは今明らかです。あなたの例で変更を適用します。そして、もうパッケージを編集しようとはしません。
ReneFroger 2015

カスタムヘッダーのコンテンツをに変更しました。これにより、Last changed : on 30-04-2015 Version : 2 のデフォルトの動作をオーバーライドできます。これによりheader2、最後に変更されたバージョンとバージョンのコンテンツが置き換えられますか?
ReneFroger 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.