2012-01-16 68 views
7

在組織模式下,可以有鏈接和頂部打開的鏈接。如組織模式http://orgmode.org/orgcard.txt所示C-u C-c C-o鼠標-3強制鏈接在另一個窗口中打開。我該如何做相應的框架,也就是說,我怎樣才能強制鏈接在另一個框架中打開?如何強制組織模式在另一個框架中打開鏈接?

我想要的是C-C C-O按照默認的工作,但C-ùC-C C-O強制鏈接到另一個框架中打開。

(對於窗口和框架的區別見http://www.gnu.org/software/emacs/manual/html_node/emacs/Frames.html

我在23.3.1運行ORG-模式7.6。

回答

4

我只是測試,你可以得到它通過在包裝org-open-at-point工作一個(let)作爲一個自定義函數。

在這種情況下,我只是將當前的org-link-frame-setup加上您希望的find-file-other-frame作爲前綴,以確保如果您在其他鏈接類型上使用該命令,則不會失敗。

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

我懷疑你需要將它綁定到比C-u C-c C-o以外的鍵序列,除非Emacs會允許你把它特異性結合該序列。

+0

這工作正常。是的,當我嘗試綁定到該序列時,它會拋出一個錯誤。我用了'C-c 5 C-o'。如果你仍然想要原始序列,你將如何繼續?劫持函數'C-c C-o'被綁定並告訴它,當它被通用參數調用時,它應該執行'zin/org-open-other-frame'? – 2012-01-19 21:42:43

+0

那麼,如果你將它綁定到'C-c 5 C-o',它將爲你提供'open-other-frame'功能,而不會對正常的'C-c C-o'序列產生任何影響。您可以使用'defadvice'將通用參數映射到'zin/org-open-other-frame',但我知道函數中已經使用了通用參數。爲open-other-window保留'C-c C-o','open-other-frame'保留'C-c 5 C-o','open-with-emacs'保留'C-u C-c C-o'。 – 2012-01-19 22:19:01

+0

Jonathan, 您的代碼在我的emacs(24.2.1), 中無效:它的符號的函數定義爲void:acons 您知道我可以從哪裏得到這個acons? – yashaka 2013-08-05 05:36:56

1

看看變量org-link-frame-setupM-x customize-variable RET org-link-frame-setup)。文檔字符串應解釋該方法。

+0

如果我將'org-link-frame-setup'的'file'位設置爲'find-file-other-frame',它總是*(例如,如果我使用'Cc Co'和'Cu Cc Co ')以新的框架打開文件。這不是我想要的。我希望它只在我強制執行時纔會在新框架中打開鏈接(執行'C-u C-c C-o'),否則我需要默認行爲。 – 2012-01-16 15:33:40

+0

嗯,我認爲這是不可能的。作爲某種快速解決方法,您可以做的是爲有問題的文件類型自定義'org-file-apps',並將'emacsclient -c%s'作爲應用程序輸入。這樣,'C-c C-o'會在一個新的框架中打開文件,而'C-u C-c C-o'將按照org-link-frame-setup'中的定義打開它。在另一個窗口中)。不是你正在尋找的東西,但也許足夠接近? – 2012-01-16 17:04:30

+0

是否有可能使其成爲相反的方式,以便在'org-link-frame-setup'中定義的'C-c C-o'打開,但在新的框架中打開'C-u C-c C-o'?如果一切都失敗了,反過來會很有趣。 – 2012-01-16 17:33:54

0

我只是在一個非定製的emacs測試此:

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

當運行類似於以下的鏈接C-c C-oC-u C-c C-o

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

我結束了一個新的幀是在兩種情況下都開放。 C-u C-u C-c C-o在我的活動emacsclient會話中打開test.org文件。當更改鏈接到.../org/test.txt它仍然打開一個新的框架,但它無法創建新的文件(我假設我沒有.txt正確關聯在我的一端,這是可能的)。

使用[mailto:[email protected]][test-mail]]進行測試也會默認生成新幀。


編輯:爲org-link-frame-setup值如下(這也是默認的,因爲它是從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

在您的設置,變量'org-link-frame-setup'的值是什麼?我在23.3.1中運行Org-mode 7.6。 – 2012-01-16 17:31:28

+0

很奇怪,當變量變量在新框架中打開鏈接的結果時對'file'設置爲'find-file-other-window',而不是'find-file-other-frame'。在我看來,它是一個bug或者你的窗口框架區別錯誤。在我的設置中,變量具有相同的值 – 2012-01-16 17:54:14

+0

@NN我在值中編輯了它,它可能在7.6和7.7之間改變了,我沒有安裝emacs23可以這樣測試,但是這可能是變化發生在emacs而不是組織模式。 – 2012-01-16 17:55:20