Skip to content

Commit 8e9dce1

Browse files
committed
fix #5 by specify file coding to utf-8
1 parent 1c96e81 commit 8e9dce1

File tree

1 file changed

+217
-16
lines changed

1 file changed

+217
-16
lines changed

elisp.org

+217-16
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- coding: utf-8; -*-
12
#+TITLE: elisp
23
#+AUTHOR: DarkSun
34
#+OPTIONS: ^:{}
@@ -6891,13 +6892,68 @@ Tabulated List Mode继承至Special mode,且同时被多个子mode继承,例如P
68916892

68926893
若参数REMEMBER-POS为非nil,则该函数在刷新buffer前会记住当前行的ID,并在刷新后自动定位到该ID行
68936894

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的字符个数
68946947

68956948

68966949

68976950

68986951

68996952
* Desktop Save Mode
69006953

6954+
* Emacs Display
6955+
** The Display Property
6956+
** Images
69016957
* Number相关函数
69026958
* 判断是否为自然数(0+正整数)
69036959

@@ -8470,27 +8526,169 @@ buffer-string to get the whole buffer content.
84708526
(save-excursion
84718527
reset body
84728528
)
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+
84748603
** 获得窗口对象
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+
+ 得到当前光标所在的窗口对象
84768674

84778675
selected-window
8478-
* 得到当前frame里的所有窗口
8676+
+ 得到当前frame里的所有窗口
84798677

84808678
window-list
8481-
* window-lists里排在某个window之后/之前的窗口对象
8679+
+ window-lists里排在某个window之后/之前的窗口对象
84828680

84838681
next-window / previous-window
8484-
* 查找符合某个条件的窗口
8682+
+ 查找符合某个条件的窗口
84858683

84868684
get-window-with-predicate
8487-
* 根据buffer获得window(如果有多个窗口显示同一个缓冲区,那么函数由window-list决定返回哪个).
8685+
+ 根据buffer获得window(如果有多个窗口显示同一个缓冲区,那么函数由window-list决定返回哪个).
84888686

84898687
get-buffer-window
8490-
* 根据buffer获得全部的相应window
8688+
+ 根据buffer获得全部的相应window
84918689

84928690
get-buffer-window-list
8493-
* 根据给定的文件名,返回缓冲区
8691+
+ 根据给定的文件名,返回缓冲区
84948692

84958693
find-buffer-visiting
84968694
** 窗口操作
@@ -10800,14 +10998,17 @@ Emacs在不同类型的终端下启动时,都会加载不同的终端相关的li
1080010998

1080110999
(insert-register ?1 t)
1080211000
* 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)
1081111012
* 版本信息
1081211013
* 变量emacs-version
1081311014
* 变量emacs-major-version

0 commit comments

Comments
 (0)