Làm thế nào để thay đổi nội dung của một gói (header2.el)?


7

Tôi tìm thấy gói Tiêu đề tệp tự động , tôi đã cổ vũ và cài đặt nó với MELPA. Tôi đã tìm thấy các tiêu đề tập tin là rất có giá trị trong phát triển dự án. Tôi luôn biết ai đã ở đó và bao nhiêu lần họ ở đó. Thông thường, tôi cũng biết những gì họ đã làm. Số lượng cập nhật và ngày sửa đổi cuối cùng rất hữu ích trong việc xác định phiên bản phù hợp của tệp sẽ sử dụng.

Có một điều mà tôi không thể tìm ra.

Ví dụ: sau khi cài đặt header2từ MELPA, hãy khai báo nó trong dot-emacs của bạn:

;; 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)

Vì vậy, khi bạn tạo một tệp mới trong Emacs, ví dụ foobar.el. Bạn thấy một tiêu đề. Và nó sẽ tự động cập nhật khi bạn viết tập tin. Được rồi, giả sử tôi muốn thay đổi văn bản Last-Updated:thành Foo-Last-Updated.

Vì vậy, tôi đã thực hiện một grep trên Last-Updatedgói header2và thay thế tất cả các lần xuất hiện với Foo-Last-Updated. Tôi đã khởi động lại Emacs để chắc chắn. Và vẫn còn Last-Updatedhiển thị thay thế Foo-Last-Updated.

Bất kỳ đề nghị, để thay đổi nội dung tiêu đề? Tôi không tìm thấy gì trong hướng dẫn.


Bạn không cần phải sửa đổi nội dung gói. Bạn có thể xác định lại những thứ bạn muốn sau khi yêu cầu gói. Tôi sẽ đăng ví dụ của mình trong câu trả lời khi tôi vào PC. Nó vẫn đang tải những thứ cũ vì bạn chưa cập nhật tệp .elc trong cùng một thư mục. Xóa các tệp .elc cho gói và sau đó các chỉnh sửa của bạn trong tệp .el sẽ có hiệu lực.
Kaushal Modi

@kaushalmodi cảm ơn lời đề nghị của bạn. Tôi đã xóa các tập tin * .elc đã biên dịch. Và khởi động lại Emacs. Không có gì thay đổi cho đến nay ... một đề nghị khác?
ReneFroger

Bạn đã thử nó trên một tập tin hoàn toàn mới? Nếu bạn đang sử dụng một cái cũ đã có tiêu đề, tôi sẽ tự hỏi liệu thay đổi của bạn không cập nhật tiêu đề đã tồn tại trước đó.
Dan

Câu trả lời:


4

Tùy chỉnh header2tiêu đề

Từ các tài liệu trong header2.el:

Xác định các yếu tố tiêu đề cá nhân. Đây là các khối xây dựng được sử dụng để xây dựng một tiêu đề cụ thể của trang web. Bạn có thể thêm các chức năng của riêng mình trong tệp này hoặc trong .emacstệp của bạn . Biến make-header-hookchỉ định các hàm sẽ thực sự được gọi.

Dưới đây là một ví dụ về cách tùy chỉnh tiêu đề theo ý thích của bạn:

(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)

Sửa đổi các gói trực tiếp

Nói chung, điều này không được khuyến khích vì nếu bạn muốn cập nhật các gói bằng trình quản lý gói thì các chỉnh sửa của bạn sẽ bị mất khi gói cập nhật.

Bắt đầu từ phiên bản 24.4 của emacs, bạn có thể thêm phần bên dưới vào init emacs của mình ngay từ đầu trước khi bạn bắt đầu tải các gói. Điều đó sẽ đảm bảo rằng luôn tải tệp mới nhất (có thể là tệp .el hoặc .elc).

(setq load-prefer-newer t)

Nhưng nếu bạn không có điều đó, theo mặc định, tệp .elc sẽ được tải nếu có (và .el bị bỏ qua).

Nhưng một lần nữa, cố gắng không chỉnh sửa các tập tin gói .el trực tiếp.

Thêm thông tin


Cảm ơn bạn đã giải thích rất rõ ràng, bây giờ nó rõ ràng. Tôi sẽ áp dụng những thay đổi bằng ví dụ của bạn. Và tôi sẽ không cố gắng chỉnh sửa gói nữa.
ReneFroger

Tôi đã thay đổi nội dung của tiêu đề tùy chỉnh của mình thành Last changed : on 30-04-2015 Version : 2 Làm cách nào tôi có thể ghi đè hành vi mặc định của header2, rằng anh ta thay thế nội dung từ phiên bản và phiên bản thay đổi cuối cùng?
ReneFroger
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.