|
| 1 | +# -*- coding: utf-8; -*- |
1 | 2 | #+TITLE: elisp
|
2 | 3 | #+AUTHOR: DarkSun
|
3 | 4 | #+OPTIONS: ^:{}
|
@@ -6891,13 +6892,68 @@ Tabulated List Mode继承至Special mode,且同时被多个子mode继承,例如P
|
6891 | 6892 |
|
6892 | 6893 | 若参数REMEMBER-POS为非nil,则该函数在刷新buffer前会记住当前行的ID,并在刷新后自动定位到该ID行
|
6893 | 6894 |
|
| 6895 | ++ (tabulated-list-print-entry id cols) |
| 6896 | + |
| 6897 | + 在光标处插入新entry,entry信息由ID和COLS决定 |
| 6898 | + |
| 6899 | + 其中ID是一个用于标示entry的lisp对象,而COLS为一个由各列信息组成的vector |
| 6900 | + |
| 6901 | ++ (tabulated-list-print-col n col-desc x) ?? |
| 6902 | + |
| 6903 | + 为光标处entry插入一个特定的entry列 |
| 6904 | + |
| 6905 | + 其中N为列编号,COL-DESC为列描述,X为光标处的列编号 |
| 6906 | + |
| 6907 | + 该函数在插入后,返回列编号 |
| 6908 | + |
| 6909 | +** 其他函数 |
| 6910 | ++ (tabulated-list-get-id &optional POS) |
| 6911 | + |
| 6912 | + 返回POS位置entry的ID. POS默认为光标当前位置 |
| 6913 | + |
| 6914 | ++ (tabulated-list-get-entry &optional POS) |
| 6915 | + |
| 6916 | + 返回POS位置entry的信息. 返回的格式为一个由列信息组成的vector |
| 6917 | + |
| 6918 | + POS默认为光标当前位置 |
| 6919 | + |
| 6920 | ++ (tabulated-list-delete-entry) |
| 6921 | + |
| 6922 | + 删除光标所在位置的entry. 并返回一个(ID COLS...)的列表来暂时被删除entry的信息. |
| 6923 | + |
| 6924 | + *该函数同时会将光标移动到entry的最开头位置* |
| 6925 | + |
| 6926 | + *该函数只会更改buffer内容,而不会更改`tabulated-list-entries'的值* |
| 6927 | + |
| 6928 | ++ (tabulated-list-set-col COL DESC &optional CHANGE-ENTRY-DATA) |
| 6929 | + |
| 6930 | + 更改当前位置的entry中第COL列的内容为DESC |
| 6931 | + |
| 6932 | + COL可以是列的位置,也可以是列的名称. |
| 6933 | + |
| 6934 | + CHANGE-ENTRY-DATA指示了是否同时更改`tabulated-list-entries'的值 |
| 6935 | + |
| 6936 | ++ (tabulated-list-put-tag tag &optional advance) |
| 6937 | + |
| 6938 | + 将TAG放入当前entry的padding区域 |
| 6939 | + |
| 6940 | + TAG为字符串,且大小不能大于`tabulated-list-padding'的值 |
| 6941 | + |
| 6942 | + 若ADVANCE为非nil,则光标同时移动到下一行 |
| 6943 | + |
| 6944 | ++ tabulated-list-padding |
| 6945 | + |
| 6946 | + 每个entry前预留于padding的字符个数 |
6894 | 6947 |
|
6895 | 6948 |
|
6896 | 6949 |
|
6897 | 6950 |
|
6898 | 6951 |
|
6899 | 6952 | * Desktop Save Mode
|
6900 | 6953 |
|
| 6954 | +* Emacs Display |
| 6955 | +** The Display Property |
| 6956 | +** Images |
6901 | 6957 | * Number相关函数
|
6902 | 6958 | * 判断是否为自然数(0+正整数)
|
6903 | 6959 |
|
@@ -8470,27 +8526,169 @@ buffer-string to get the whole buffer content.
|
8470 | 8526 | (save-excursion
|
8471 | 8527 | reset body
|
8472 | 8528 | )
|
8473 |
| -* 窗口 |
| 8529 | +* Window |
| 8530 | +** 基本概念 |
| 8531 | +*** live window |
| 8532 | + |
| 8533 | +有buffer显示的window被称为live window, 可以通过 ~(window-livep object)~ 来判断 |
| 8534 | + |
| 8535 | +*** valid window |
| 8536 | +valid window可能是live window或internal window. 要注意它与live window的区别. |
| 8537 | +一个valid window可能被删除,则变成invalid window,但它仍可能被其他lisp对象所引用. |
| 8538 | +并且一个被删除的window可能通过恢复之前报错的window configuration变回valid window |
| 8539 | + |
| 8540 | +使用 ~(window-valid-p object)~ 来判断是否为valid window |
| 8541 | + |
| 8542 | +*** selected-window |
| 8543 | + |
| 8544 | +任何时候,不管有多少个frame,只有唯一一个selected window |
| 8545 | + |
| 8546 | +一般来说,selected window的buffer就是"current buffer",但有一种情况例外,就是使用 ~set-buffer~ 之后. |
| 8547 | + |
| 8548 | +** window与frame的关系 |
| 8549 | + |
| 8550 | +一个window只可能属于一个frame. |
| 8551 | + |
| 8552 | ++ (window-frame &optional window) |
| 8553 | + |
| 8554 | + 该函数获取指定window所属的frame |
| 8555 | + |
| 8556 | ++ (window-list &optional frame minibuffer window) |
| 8557 | + |
| 8558 | + 该函数获取指定frame的所有 *live window* 列表. |
| 8559 | + |
| 8560 | + MINIBUFFER参数指定了返回的live window列表是否包含minibuffer window. |
| 8561 | + |
| 8562 | + - t :: 包含minbuffer window |
| 8563 | + |
| 8564 | + - nil :: 当minibuffer被激活时才包含 |
| 8565 | + |
| 8566 | + - 其他 :: 不包含 |
| 8567 | + |
| 8568 | + WINDOW参数指定了live window列表中的第一个window,它应该是指定frame中的一个live window. |
| 8569 | + |
| 8570 | + 若未指定WINDOW参数,则selected window作为列表的第一个window |
| 8571 | + |
| 8572 | + |
| 8573 | +window在每个frame中都是以window tree的形式被组织起来的. |
| 8574 | +#+BEGIN_EXAMPLE |
| 8575 | + ______________________________________ |
| 8576 | + | ______ ____________________________ | |
| 8577 | + || || __________________________ || |
| 8578 | + || ||| ||| |
| 8579 | + || ||| ||| |
| 8580 | + || ||| ||| |
| 8581 | + || |||____________W4____________||| |
| 8582 | + || || __________________________ || |
| 8583 | + || ||| ||| |
| 8584 | + || ||| ||| |
| 8585 | + || |||____________W5____________||| |
| 8586 | + ||__W2__||_____________W3_____________ | |
| 8587 | + |__________________W1__________________| |
| 8588 | +#+END_EXAMPLE |
| 8589 | + |
| 8590 | +每个window tree的叶节点都是live window组成的. |
| 8591 | +window tree的中间节点则是由internal window组成,即哪些不显示buffer的window |
| 8592 | +internal window存在的目的是为了组织live window之间的关系. |
| 8593 | +window tree的root节点被称为root window. 它可以是live window也可以是internal window |
| 8594 | + |
| 8595 | +*一般来说,window tree并不包含minibuffer window,除非整个frame只有这个minibuffer window* |
| 8596 | + |
| 8597 | +当分割一个window后,分割出来的两个live window中有一个 *就是之前被分割的那个window对象*. |
| 8598 | +emacs会新建两个window对象:一个是分割出来的另一个live window,还有一个是internel window作为分割出两个live window的父window |
| 8599 | + |
| 8600 | +每个internal window最少具有两个子窗口,若某internal window的子窗口数降为1,则Emacs自动删除该internal window. |
| 8601 | + |
| 8602 | + |
8474 | 8603 | ** 获得窗口对象
|
8475 |
| - * 得到当前光标所在的窗口对象 |
| 8604 | + |
| 8605 | ++ (frame-root-window &optional frame-or-window) |
| 8606 | + |
| 8607 | + 该函数返回FRAME-OR-WINDOW的root window |
| 8608 | + |
| 8609 | + 参数FRAME-OR-WINDOW若为nil则表示返回当前选中frame的root window |
| 8610 | + |
| 8611 | ++ (window-parent &optional window) |
| 8612 | + |
| 8613 | + WINDOW的父window, 默认为选中窗口的父window |
| 8614 | + |
| 8615 | ++ (window-top-child &optional window) |
| 8616 | + |
| 8617 | + 返回指定WINDOW的最上方的子window |
| 8618 | + |
| 8619 | + 当然WINDOW必须是是internal window且其子窗口应是垂直组合的,否则该函数返回nil |
| 8620 | + |
| 8621 | ++ (window-left-child *optional window) |
| 8622 | + |
| 8623 | + 返回指定WINDOW的最左方的子window |
| 8624 | + |
| 8625 | + 当然WINDOW必须是是internal window且其子窗口应是水平组合的,否则该函数返回nil |
| 8626 | + |
| 8627 | ++ (window-child window) |
| 8628 | + |
| 8629 | + 该函数返回指定WINDOW的第一个子window. |
| 8630 | + |
| 8631 | + 该函数自动判断WINDOW中子window的排列方式,并返回最上方会最左方的子window |
| 8632 | + |
| 8633 | + WINDOW必须是internal window,否则返回nil |
| 8634 | + |
| 8635 | ++ (window-combined-p &optional window horizontal) |
| 8636 | + |
| 8637 | + 判断WINDOW是否与其他WINDOW垂直/水平排列. |
| 8638 | + |
| 8639 | + 参数HORIZONTAL为nil表示判断是否垂直排列,否则判断是否水平排列 |
| 8640 | + |
| 8641 | ++ (window-next-sibling &optional window) |
| 8642 | + |
| 8643 | + 返回WINDOW的下一个兄弟window |
| 8644 | + |
| 8645 | ++ (window-prev-sibling &optional window) |
| 8646 | + |
| 8647 | + 返回WINDOW的上一个兄弟window |
| 8648 | + |
| 8649 | ++ (frame-first-window &optional frame-or-window) |
| 8650 | + |
| 8651 | + 返回指定FRAME中的最最上方的live window |
| 8652 | + |
| 8653 | ++ (window-in-direction direction &optional window ignore sign wrap mini) |
| 8654 | + |
| 8655 | + 返回与WINDOW在DIRECATION方向上相邻的live window |
| 8656 | + |
| 8657 | + 参数DIRECTION可能是above,below,left,right |
| 8658 | + |
| 8659 | + 参数WINDOW必须是live window,且默认为选中的window |
| 8660 | + |
| 8661 | + 一般情况下, *该函数会跳过那些参数`no-other-window'为非nil的window*,但若参数IGNORE为非nil,则该函数不跳过 |
| 8662 | + |
| 8663 | + If the optional argument sign is a negative number, it means to use the right or bottom edge ofwindowas reference position instead ofwindow-point. If sign is a positive number, it means to use the left or top edge ofwindowas reference position. |
| 8664 | + |
| 8665 | + 参数WRAP若为非nil,则表示允许越过frame边界,例如最右边的右边调到了最左边. |
| 8666 | + |
| 8667 | + 参数mini指定了什么情况下返回minibuffer window,且若WRAP为非nil,则该函数只有在minibuffer被激活状态才返回minibuffer window |
| 8668 | + |
| 8669 | ++ (window-tree &optional frame) |
| 8670 | + |
| 8671 | + 返回指定frame的window-tree |
| 8672 | + |
| 8673 | ++ 得到当前光标所在的窗口对象 |
8476 | 8674 |
|
8477 | 8675 | selected-window
|
8478 |
| - * 得到当前frame里的所有窗口 |
| 8676 | ++ 得到当前frame里的所有窗口 |
8479 | 8677 |
|
8480 | 8678 | window-list
|
8481 |
| - * window-lists里排在某个window之后/之前的窗口对象 |
| 8679 | ++ window-lists里排在某个window之后/之前的窗口对象 |
8482 | 8680 |
|
8483 | 8681 | next-window / previous-window
|
8484 |
| - * 查找符合某个条件的窗口 |
| 8682 | ++ 查找符合某个条件的窗口 |
8485 | 8683 |
|
8486 | 8684 | get-window-with-predicate
|
8487 |
| - * 根据buffer获得window(如果有多个窗口显示同一个缓冲区,那么函数由window-list决定返回哪个). |
| 8685 | ++ 根据buffer获得window(如果有多个窗口显示同一个缓冲区,那么函数由window-list决定返回哪个). |
8488 | 8686 |
|
8489 | 8687 | get-buffer-window
|
8490 |
| - * 根据buffer获得全部的相应window |
| 8688 | ++ 根据buffer获得全部的相应window |
8491 | 8689 |
|
8492 | 8690 | get-buffer-window-list
|
8493 |
| - * 根据给定的文件名,返回缓冲区 |
| 8691 | ++ 根据给定的文件名,返回缓冲区 |
8494 | 8692 |
|
8495 | 8693 | find-buffer-visiting
|
8496 | 8694 | ** 窗口操作
|
@@ -10800,14 +10998,17 @@ Emacs在不同类型的终端下启动时,都会加载不同的终端相关的li
|
10800 | 10998 |
|
10801 | 10999 | (insert-register ?1 t)
|
10802 | 11000 | * Org相关函数
|
10803 |
| -** 取entry属性 |
10804 |
| - (org-entry-get nil "属性名" 是否继承属性) |
10805 |
| -** 取entry的tag list |
10806 |
| - (org-get-tags) |
10807 |
| -** 取entry的TODO state |
10808 |
| - 变量`org-get-tags` |
10809 |
| -** 判断哪些state是完成状态 |
10810 |
| - 变量`org-done-keywords` |
| 11001 | ++ 取entry属性 :: (org-entry-get nil "属性名" 是否继承属性) |
| 11002 | ++ 取entry的tag list :: (org-get-tags) |
| 11003 | ++ 取entry的TODO state :: org-get-tags |
| 11004 | ++ 判断哪些state是完成状态 :: org-done-keywords |
| 11005 | ++ 跳转到headline :: (org-back-to-heading) |
| 11006 | ++ 判断是否处于clockin状态 :: org-clock-clocking-in |
| 11007 | ++ clock in :: (org-clock-in) |
| 11008 | ++ clock out :: (org-clock-out) |
| 11009 | ++ 当前clock entry的headline :: org-clock-heading |
| 11010 | ++ clock out触发的hook :: org-clock-out-hook |
| 11011 | ++ 更新mode-line的内容 :: (org-clock-update-mode-line) |
10811 | 11012 | * 版本信息
|
10812 | 11013 | * 变量emacs-version
|
10813 | 11014 | * 变量emacs-major-version
|
|
0 commit comments