2012-01-16 40 views
7

Trong chế độ Org, có thể có các liên kết và các liên kết mở hàng đầu. Như được liệt kê bởi http://orgmode.org/orgcard.txt trong chế độ Org-mode C-u C-c C-o hoặc mouse-3 buộc liên kết mở trong cửa sổ khác. Làm thế nào tôi có thể làm tương ứng cho khung hình, đó là, làm thế nào tôi có thể buộc một liên kết để mở trong khung khác?Làm cách nào để buộc chế độ Org mở liên kết trong một khung khác?

Những gì tôi muốn là cho C-c C-o làm việc theo mặc định nhưng C-u C-c C-o để buộc các liên kết sẽ được mở trong khung khác.

(Đối với sự khác biệt của các cửa sổ và khung nhìn thấy http://www.gnu.org/software/emacs/manual/html_node/emacs/Frames.html.)

Tôi đang chạy Org-mode 7,6 trong 23.3.1.

Trả lời

4

tôi chỉ thử nghiệm và bạn có thể lấy nó để làm việc bằng cách gói org-open-at-point trong a (let) làm chức năng tùy chỉnh.

Trong trường hợp này, tôi chỉ cần thêm tiền tố org-link-frame-setup hiện tại với số find-file-other-frame mong muốn của bạn để đảm bảo rằng nếu bạn sử dụng lệnh trên một loại liên kết khác, nó sẽ không thành công.

(defun zin/org-open-other-frame() 
    "Jump to bookmark in another frame. See `bookmark-jump' for more." 
    (interactive) 
    (let ((org-link-frame-setup (acons 'file 'find-file-other-frame org-link-frame-setup))) 
    (org-open-at-point))) 

tôi nghi ngờ bạn sẽ cần để ràng buộc nó vào một dãy phím khác hơn C-u C-c C-o, trừ khi Emacs sẽ cho phép bạn để ràng buộc nó vào chuỗi mà cụ thể.

+0

Điều đó hoạt động tốt. Vâng, nó đã ném một lỗi khi tôi cố gắng liên kết với chuỗi đó. Tôi đã sử dụng 'C-c 5 C-o'. Làm thế nào bạn sẽ tiến hành nếu bạn vẫn muốn trình tự ban đầu? Hijack chức năng 'C-c C-o' là ràng buộc và nói với nó rằng khi nó được gọi với đối số phổ quát nó nên làm' zin/org-open-other-frame'? –

+0

Vâng, nếu bạn liên kết nó với 'C-c 5 C-o', nó sẽ cung cấp cho bạn chức năng' khung hình khác 'của bạn mà không ảnh hưởng đến trình tự 'C-c C-o' bình thường. Bạn có thể sử dụng 'defadvice' để ánh xạ đối số chung cho' zin/org-open-other-frame' nhưng tôi biết đối số chung đã được sử dụng trong hàm. Có thể dễ dàng nhất để giữ 'C-c C-o' cho' mở-cửa sổ khác', 'C-c 5 C-o' cho' mở-khung-khác' và 'C-u C-c C-o' đối với' mở-với-emacs'. –

+0

Jonathan, Mã của bạn không hoạt động trong các emacs của tôi (24.2.1), nó cho biết: Định nghĩa chức năng của biểu tượng bị vô hiệu: acons Bạn có biết tôi có thể nhận được mã này ở đâu không? – yashaka

1

Hãy xem biến số org-link-frame-setup (M-x customize-variable RET org-link-frame-setup). Các docstring nên giải thích cách tiếp cận.

+0

Nếu tôi đặt bit 'tệp' của' org-link-frame-setup' thành 'find-file-other-frame' nó * luôn * (ví dụ: nếu tôi sử dụng' Cc Co' và 'Cu Cc Co ') mở tệp trong khung mới. Đây không phải là điều tôi muốn. Tôi muốn nó mở các liên kết trong một khung mới chỉ khi tôi buộc nó (làm 'C-u C-c C-o'), nếu không tôi muốn hành vi mặc định. –

+0

Hmmm, tôi không nghĩ rằng điều này là có thể ra khỏi hộp. Những gì bạn có thể làm như một số giải pháp nhanh chóng là tùy chỉnh 'org-file-apps' cho các loại tệp được đề cập và nhập một cái gì đó như' emacsclient -c% s' làm ứng dụng. Bằng cách này, 'C-c C-o' sẽ mở tệp trong một khung mới trong khi' C-u C-c C-o' sẽ mở tệp như được định nghĩa trong 'org-link-frame-setup' (ví dụ:trong một cửa sổ khác). Không hoàn toàn những gì bạn đang tìm kiếm nhưng có thể đủ gần? –

+0

Bạn có thể làm theo cách khác để 'C-c C-o' mở như được định nghĩa trong' org-link-frame-setup' nhưng 'C-u C-c C-o' mở trong một khung mới? Cách khác xung quanh sẽ là thú vị nếu mọi thứ khác thất bại. –

0

tôi chỉ thử nghiệm này trong emacs phi tùy chỉnh:

emacs -q 
GNU Emacs 24.0.92.1 (i386-mingw-nt5.1.2600) of 2011-11-30 on MARVIN 
Org-mode version 7.7 

Khi chạy C-c C-oC-u C-c C-o vào một liên kết tương tự như sau:

file:~/Dropbox/org/test.org::*Test 

tôi kết thúc với một khung phúc mới mở trong cả hai trường hợp. C-u C-u C-c C-o mở tệp test.org trong phiên không hoạt động của tôi. Khi thay đổi liên kết thành .../org/test.txt nó vẫn mở trong một khung mới, tuy nhiên nó không thể tạo tệp mới (tôi giả định rằng tôi không có .txt được kết hợp đúng cách vào cuối của tôi, điều này là có thể).

Thử nghiệm với [mailto:[email protected]][test-mail]] cũng dẫn đến khung mới theo mặc định.


Edit: Giá trị cho org-link-frame-setup là như sau (nó cũng là mặc định vì nó là từ emacs -q):

Its value is ((vm . vm-visit-folder-other-frame) 
(gnus . org-gnus-no-new-news) 
(file . find-file-other-window) 
(wl . wl-other-frame)) 
+0

Trong thiết lập của bạn , giá trị của biến 'org-link-frame-setup' là gì? Tôi đang chạy Org-mode 7.6 trong 23.3.1 –

+0

Thật lạ khi bạn nhận được kết quả của việc mở liên kết trong một khung mới khi biến được đặt thành 'find-file-other-window', chứ không phải' find-file-other-frame', cho 'file'. Có vẻ như với tôi rằng đó là một lỗi hoặc bạn có sự phân biệt khung cửa sổ sai. Khi thiết lập của tôi biến có cùng giá trị –

+0

@NN Tôi đã chỉnh sửa trong giá trị Có thể nó đã được thay đổi giữa 7,6 và 7,7. Tôi không có bất kỳ cài đặt của emacs23 để có thể kiểm tra nó theo cách đó, nhưng nó có thể là sự thay đổi xảy ra trong emacs và không ở chế độ org. –

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