`use-pack` with: config để đặt biến


9

Tôi đang cố gắng sử dụng use-packageđể thiết lập org-modekhởi tạo của mình . Tôi có những điều sau đây trong ~/.emacstập tin của mình :

(use-package org-mode
  :mode "\\.org$"
  :ensure org
  :config
  (progn
    (setq org-log-done 'time)
    (setq org-confirm-babel-evaluate nil)
    (setq org-export-babel-evaluate nil)
    (setq org-html-validation-link nil)
    ;; ... more stuff
  )
)

Không ai trong số các :configcông cụ khởi tạo đó đang được chạy, mặc dù. Tôi có tên gói sai hay cái gì đó? Tôi có một chút nhầm lẫn về tên gói so với tên ELPA so với lệnh gọi ....


Hãy nhìn vào org.elvà bạn sẽ thấy đến cuối : (provide 'org). Biểu tượng đó ( org) là những gì bạn sẽ sử dụng để tải gói, như trong : (require 'org). Đó cuối cùng là những gì use-packageđang làm, chỉ với một số thứ hữu ích xung quanh nó. Một gói nhất định có thể xác định nhiều chế độ để tên gói và chế độ không phải lúc nào cũng giống nhau. Đây thực sự là vấn đề tương tự như câu hỏi khác về việc html-modeđược xác định bởi sgml-modegói.
glucas

"Câu hỏi khác" @glucas đề cập: emacs.stackexchange.com/q/10394/8899
Ken Williams

Câu trả lời:


18

Dưới đây sẽ làm việc. Để rõ ràng, tôi đang sử dụng :ensure org-plus-contriblàm sai lệch một chút so với ví dụ trong câu hỏi của bạn.

(use-package org
  :mode (("\\.org$" . org-mode))
  :ensure org-plus-contrib
  :config
  (progn
    ;; config stuff
    ))

Dưới đây là một số lưu ý giải thích cho ở trên:

  • (use-package FEATURE-NAME
    • FEATURE-NAMElà những gì đi trong (provide ..)dòng của một gói. Đối với org-mode, dòng đó là (provide 'org).
  • :mode ((FILE-REGEXP . MAJOR-MODE))
    • FILE-REGEXPlà biểu thức chính quy mà bạn muốn bật chế độ chính cụ thể. Bạn có thấy đúng: "\\.org$".
    • MAJOR-MODElà tên của chế độ chính mà bạn muốn bật (bao gồm cả -modephần của tên chế độ chính). Trong trường hợp này, tên chế độ chính là org-mode.
    • Phong cách :mode (FILE-REGEXP)mà bạn đã sử dụng sẽ chỉ hoạt động nếu FEATURE-NAMEMAJOR-MODEgiống hệt nhau. Ví dụ : cperl-mode.
  • :ensure PACKAGE-NAME
    • PACKAGE-NAMElà những gì tôi thấy được liệt kê trong danh sách gói ( M-x package-list-packages). Để rõ ràng, trong giải pháp của tôi ở trên, chúng tôi đang cài đặt gói org-plus-contrib1 . Điều này là để chứng minh tên tính năng, chế độ chính và tên gói thực tế không nhất thiết phải giống nhau. Và tôi cũng thích cài đặt nó thay vì đơn giản org-modevì bạn cũng nhận được tất cả các contrib/gói quà tặng! :)

1 Bạn sẽ cần thêm (add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)vào cấu hình emacs của mình để cài đặt org-plus-contrib. Xem trang cài đặt chế độ org chính thức để biết thêm thông tin.


Ghi chú

Cách tốt nhất để làm cho use-packageđoạn mã trên hoạt động là trước tiên lưu nó vào cấu hình emacs của bạn, sau đó xóa các phiên bản đã cài đặt Trình quản lý gói trước orgđó và sau đó khởi động lại emacs.


Cảm ơn - Tôi vẫn gặp sự cố với một khía cạnh, việc hỗ trợ R của org hoạt động bằng cách sử dụng org-babel-do-load-languagestrong ngữ cảnh này, nó sẽ báo lỗi Error (use-package): org :config: Invalid function: org-babel-header-args-safe-fn. Các ngôn ngữ khác (ví dụ shhoặc perlhoặc emacs-lisp) dường như hoạt động tốt.
Ken Williams

Điều đó có vẻ như một vấn đề không liên quan. Bạn đang sử dụng macro đó như dự định? Bạn có thể tìm hiểu thêm về nó bằng cách làm C-h f org-babel-header-args-safe-fn. Ngoài ra, bạn không có đoạn mã đó trong câu hỏi của bạn. Vì vậy, thật khó để đoán những gì đang xảy ra.
Kaushal Modi

Có vẻ như đây là vấn đề: mail-archive.com/emacs-orgmode@gnu.org/msg98818.html . Không chắc làm thế nào để giải quyết nó. Cấu hình đầy đủ của tôi ở đây: gist.github.com/kenahoo/8bca2ecc5cbe6e48a91c và nhận xét (R . t)dòng dừng lỗi. Vì vậy, yeah, vấn đề không liên quan tôi nghĩ. Có thể cần phải mở một câu hỏi khác ...
Ken Williams

Có vẻ như chế độ org của tôi đã bị hỏng với bản cập nhật mới nhất. Đã sửa lỗi đó bằng cách emacs -Qbắt đầu dọn dẹp, tải cẩn thận 'packagecấu hình của tôi , gỡ cài đặt orgorg-plus-contribsau đó cài đặt lại chúng. Vấn đề được giải thích ở đây: emacs.stackexchange.com/a/13576/8899
Ken Williams

À, xin lỗi về điều đó. Có lẽ việc cài đặt đã org-plus-contriblàm rối tung quá trình cài đặt org của bạn và cuối cùng bạn đã có một phiên bản kết hợp. btw, bạn cần cài đặt org-plus-contrib. Bạn không cần phải cài đặt orggói riêng biệt quá.
Kaushal Modi

4

Với lời cảnh báo mà tôi chưa từng sử dụng use-packagetrước đây, tôi tin rằng bạn muốn orghơn là org-mode. Tôi dựa trên thực tế rằng, trên Emacs của tôi, (package-installed-p 'org-mode)trả về con số không trong khi (package-installed-p 'org)không.

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.