2012-11-25 14 views
9

org-mode có cơ chế Capture-Refile-Archive. Tôi thường sử dụng nó để ghi chép và ghi lại. Tôi cũng muốn sử dụng nó để xây dựng vốn từ vựng của riêng mình. Ví dụ, khi tôi gặp một số từ mới trong khi đọc một số văn bản tiếng Anh, tôi chỉ cần gõ C-c c v e để ghi lại từ đó vào tập tin từ vựng của tôi Word-List-EN.org. Tôi cũng muốn các từ đó được phân loại thành các Chữ cái, ví dụ: cashew sẽ được ghi vào mục nhập /C/CA. Tôi muốn nhập C-c c v E để ghi lại các từ Esperanto của tôi vào một số tệp như vortaro.org. Làm thế nào để cấu hình org-capture-templates để thực hiện điều này? Tôi đọc thông tin org và vẫn không có đầu mối. Hướng dẫn sử dụng nói rằng tôi có thể sử dụng một cái gì đó như (function function-finding-location). Nhưng tôi phải xác định function-finding-location của riêng tôi. Hope elisp masters có thể giúp tôi!Làm cách nào để sử dụng cơ chế "bắt giữ lại" chế độ org để xây dựng vốn từ vựng của riêng tôi?

+0

Nên '/ C/CA' là tiêu đề của cây hay bạn có nghĩa là dấu gạch chéo để biểu thị một cấp dưới? – pmr

+1

Vấn đề chính tôi thấy là: 'org-capture' quyết định vị trí khi bạn gọi nó. Điều đó có nghĩa là bạn không thể chọn vị trí tại thời điểm đó bởi vì bạn sẽ không chèn từ đó (có ý nghĩa, không?). Vì vậy, bạn có lẽ nên có một refile tùy chỉnh thay vì chụp. Chỉ cần gửi từ đã chụp của bạn vào đúng tập tin ('english.org') và sau đó sử dụng tùy chỉnh của bạn refile. – pmr

+0

Có,/C/CA có nghĩa là lớp con thứ hai, một mục 'CA' trong' C'. – Vivodo

Trả lời

1

Tôi gặp phải các vấn đề lớn khi bắt giữ tổ chức cho một cái gì đó tương tự, nhưng org-ghi nhớ hoạt động tốt. Dưới đây là emacs bit có liên quan của tôi:

(require 'org-install) 
(setq org-directory "~/.orgfiles/") 
(setq org-default-notes-file (expand-file-name "~/.orgfiles/notes.org")) 
(setq remember-annotation-functions '(org-remember-annotation)) 
(setq remember-handler-functions '(org-remember-handler)) 
(add-hook 'remember-mode-hook 'org-remember-apply-template) 
(setq org-agenda-files '("~/.orgfiles")) 
(global-set-key "\C-cl" 'org-store-link) 
(global-set-key "\C-cc" 'org-remember) 
(global-set-key "\C-ca" 'org-agenda) 
(global-set-key "\C-cb" 'org-iswitchb) 
(setq org-remember-templates 
     '(("Todo" ?t "* TODO %^{Brief Description} %^g\n%? Added: %U" "~/.orgfiles/TODO.org" "Tasks") 
    ("Idea" ?i "* %^{Brief Description} %^g\n%? Added: %U" "~/.orgfiles/Idea.org" "Ideas") 
    ("Study" ?s "* %^{Brief Description} %^g\n%? Added: %U" "~/.orgfiles/Study.org" "Study") 
    ("Receipt" ?r "** %^{Brief Description} %U %^g\n%?" "~/.orgfiles/Receipt.org") 
    ) 
) 
4

Tôi nghĩ PMR là đúng về thực tế rằng các chức năng cho việc lựa chọn một địa điểm tập tin như là một phần của một mẫu xảy ra quá sớm cho các nhu cầu của bạn.

Một cách để tích hợp với quy trình làm việc lưu trữ chụp org là sử dụng hệ thống mẫu chụp org chuẩn để gửi từ mới của bạn vào bộ đệm vocab sau đó sử dụng hàm elisp tùy chỉnh làm móc, có thể vào org-capture-before- finalize-hook, để đưa định nghĩa mới vào đúng vị trí.

Tôi đã viết lên hàm sau làm mẫu nhắc nhở một từ và định nghĩa và chèn nó vào bộ đệm org ở đúng vị trí. Nếu nó phù hợp với nhu cầu của bạn, bạn có thể liên kết điều này với một khóa của sự lựa chọn của bạn, hoặc sử dụng nó như là một điểm khởi đầu cho phương pháp móc.

;; 
;; remove extra spaces between stars and the headline text 
;; 
(defun tidy-headlines() 
    (interactive) 
    (save-excursion 
    (goto-char (point-min)) 
    (while (re-search-forward "^\\*+\\([[:space:]][[:space:]]+\\)" (point-max) t) 
     (replace-match " " nil nil nil 1)))) 

;; 
;; function for storing things in vocab files like cashew /C/CA/Cashew 
;; 
(defun insert-vocab-word (vocab-word definition) 
    "prompts for a word then opens a vocab file and puts the word in place" 
    (interactive "sWord: \nsDefinition: ") 
    (find-file "~/org/vocab.org") 
    (tidy-headlines) 
    (goto-char (point-min)) 
    (let* ((first-char (upcase (substring vocab-word 0 1))) 
     (first-two-chars (upcase (substring vocab-word 0 2)))) 
    (while (and (re-search-forward "^\\* " (point-max) t) 
       (string< (buffer-substring-no-properties (point) (+ 1 (point))) first-char))) 
    (if (string= (buffer-substring-no-properties (point) (+ 1 (point))) first-char) 
     (let* ((end-of-subtree (save-excursion (org-end-of-subtree) (point)))) 
      (while (and (re-search-forward "^\\*\\* " end-of-subtree t) 
        (string< (buffer-substring-no-properties (point) (+ 2 (point))) first-two-chars))) 
      (if (string= (buffer-substring-no-properties (point) (+ 2 (point))) first-two-chars) 
       (let* ((end-of-subtree2 (save-excursion (org-end-of-subtree) (point)))) 
       (while (and (re-search-forward "^\\*\\*\\* " end-of-subtree2 t) 
          (string< (word-at-point) vocab-word))) 
       (if (string< vocab-word (word-at-point)) 
        (progn 
         (beginning-of-line) 
         (org-insert-heading t)) 
        (org-insert-heading-after-current)) 
       (insert vocab-word) 
       (org-insert-subheading t) 
       (insert definition)) 
      (progn 
       (if (string< first-two-chars (buffer-substring-no-properties (point) (+ 2 (point)))) 
        (progn 
        (beginning-of-line) 
        (org-insert-heading t)) 
       (org-insert-heading-after-current)) 
       (insert first-two-chars) 
       (org-insert-subheading t) 
       (insert vocab-word) 
       (org-insert-subheading t) 
       (insert definition)))) 
     (progn 
     (org-insert-heading-after-current) 
     (insert first-char) 
     (org-insert-subheading t) 
     (insert first-two-chars) 
     (org-insert-subheading t) 
     (insert vocab-word) 
     (org-insert-subheading t) 
     (insert definition))))) 
+0

Có vẻ như 'vocab.org' không nên trống ở nơi đầu tiên. – Dror

Các vấn đề liên quan