๐ฉ ๅฝไปคๅ้ธ้
eask ็จๅบ็ไธ่ฌ่ชๆณๆฏ๏ผ
$ eask [GLOBAL-OPTIONS] [COMMAND] [COMMAND-OPTIONS] [COMMAND-ARGUMENTS]
ไฝฟ็จ้ป่ช็โEaskโๆไปถๅ CI/CD ๆฏๆๅตๅปบไธๅๆฐ็ elisp ้ ็ฎใ
$ eask [GLOBAL-OPTIONS] create package <name>
๐ก ๆจกๆฟ้ ็ฎไฝๆผ https://github.com/emacs-eask/template-elispใ
ไฝฟ็จ github-elpa ๅตๅปบไธๅๆฐ็ ELPAใ
$ eask [GLOBAL-OPTIONS] create elpa <name>
๐ก ๆจกๆฟ้ ็ฎไฝๆผ https://github.com/emacs-eask/template-elpaใ
็ถๅธธไฝฟ็จๆชๅ้ก็ๅฝไปคใ
ๅๅงๅ็ถๅ็ฎ้ไปฅ้ๅงไฝฟ็จ Easkใ
$ eask [GLOBAL-OPTIONS] init
Eask ๅฐ็ๆ้ๆจฃ็ๆไปถ๏ผ
(package "PACKAGE-NAME"
"VERSION"
"YOUR PACKAGE SUMMARY")
(website-url "https://example.com/project-url/")
(keywords "KEYWORD1" "KEYWORD2")
(package-file "PACKAGE-FILE")
(script "test" "echo \"Error: no test specified\" && exit 1")
(source "gnu")
(depends-on "emacs" "26.1")
[ๆจ่ฆ] ๅฆๆๆจๅทฒๆ elisp ้
็ฎ๏ผๆจๅฏไปฅๅฐ .el
ๆไปถ่ฝๆ็บ Eask ๆไปถ๏ผ
$ eask init --from source /path/to/source.el
ๅฆๆๆจๅทฒๆ Cask ้ ็ฎ๏ผๆจๅฏไปฅๅฐ Cask ๆไปถ่ฝๆ็บ Eask ๆไปถ๏ผ
$ eask init --from cask /path/to/Cask
ๅฆๆๆจๅทฒๆ Eldev ้ ็ฎ๏ผๆจๅฏไปฅๅฐ Eldev ๆไปถ่ฝๆ็บ Eask ๆไปถ๏ผ
$ eask init --from eldev /path/to/Eldev
ๅฆๆๆจๅทฒๆ Keg ้ ็ฎ๏ผๆจๅฏไปฅๅฐ Keg ๆไปถ่ฝๆ็บ Eask ๆไปถ๏ผ
$ eask init --from keg /path/to/Keg
๐ก ๆ้ๆดๅค Eask ๆไปถ็คบไพ๏ผ่ซๅ้ฑ็คบไพ้จๅ๏ผ
้กฏ็คบๆ้้ ็ฎๆ้ ็ฝฎ็ไฟกๆฏใ
$ eask [GLOBAL-OPTIONS] info
้กฏ็คบๅทฅไฝๅ็็ๆ ใ
$ eask [GLOBAL-OPTIONS] status
ๅฎ่ฃๆๆไพ่ณด้ ใ
ๅฅๅ: install-dependencies
, prepare
$ eask [GLOBAL-OPTIONS] install-deps [--dev]
๐ก ๆๅฎ้ธ้ [–dev] ๅพ้็ผ็ฏๅๅฎ่ฃไพ่ณด้ ใ
ๅฎ่ฃ่ปไปถๅ ใ
$ eask [GLOBAL-OPTIONS] install [PACKAGES..]
้้ๆๅฎๅๆธๅฎ่ฃๅ ๏ผ
$ eask install auto-complete helm magit
ๅฆๅ๏ผๅฎๅฐๅฎ่ฃ็ถๅ้็ผ็ๅ ๏ผ
$ eask install
ๅธ่ผ/ๅช้คๅ ใ
$ eask [GLOBAL-OPTIONS] uninstall [PACKAGES..]
้้ๆๅฎๅๆธๅธ่ผ่ปไปถๅ ๏ผ
$ eask uninstall dash f s
ๅฆๅ๏ผๅฎๅฐๅพ็ถๅ้็ผไธญๅธ่ผๅ ๏ผ
$ eask uninstall
ๆงๅปบๅ ๅทฅไปถใ
ๅฅๅ: pack
$ eask package [DESTINATION]
ๅฆๆๆชๆๅฎ [DESTINATION]๏ผๅ้ป่ชๅฐๅบๅฐ /dist
ๆไปถๅคพใ
ๅญ็ฏ็ทจ่ญฏ .el
ๆไปถใ
$ eask compile [FILES..]
้้ๆๅฎๅๆธ็ทจ่ญฏๆไปถ๏ผ
$ eask compile file-1.el file-2.el
ๆ่
็ทจ่ญฏๅทฒ็ถๅจไฝ ็ Eask
ๆไปถไธญๆๅฎ็ๆไปถใ
$ eask compile
้ๆฐๅญ็ฏ็ทจ่ญฏ .el
ๆไปถใ
$ eask recompile [FILES..]
๐ก ่eask compile
้กไผผ๏ผไฝๅฎๅจ็ทจ่ญฏๅๆๅช้ค่็.elc
ๆชๆกใ
ๆๅฐๅ ็ฎ้็่ทฏๅพ๏ผๅ ถไธญๅฎ่ฃไบๆๆไพ่ณด้ ใ
$ eask [GLOBAL-OPTIONS] package-directory
ๆๅฐๆญค้
็ฎ็ PATH
็ฐๅข่ฎ้ใ
ๅฅๅ: exec-path
$ eask [GLOBAL-OPTIONS] path [PATTERNS..]
ๆ่
๏ผๆจๅฏไปฅๅณๅ
ฅ [PATTERNS..]
ไพๅท่กๆ็ดขใ
ๆๅฐๅ ๅซ็ถๅ้ ็ฎไพ่ณด้ ็ๅ ่ผ่ทฏๅพใ
$ eask [GLOBAL-OPTIONS] load-path [PATTERNS..]
ๆ่
๏ผๆจๅฏไปฅๅณๅ
ฅ [PATTERNS..]
ไพๅท่กๆ็ดขใ
ๆๅฐๆๆๅ ๆไปถ็ๅ่กจใ
$ eask [GLOBAL-OPTIONS] files [PATTERNS..]
ๅฆๆๅฎ็พฉไบ [PATTERNS..]
๏ผๅฎๅฐ้กฏ็คบ่่ฉฒๆจกๅผๅน้
็ๆไปถใ
ๅปบ่ญฐ recipe ๆ ผๅผใ
$ eask [GLOBAL-OPTIONS] recipe [FILES..]
ๅๅบๅฏๅจๆจ้ก้จๅไธญไฝฟ็จ็ๅฏ็จ้้ตๅญใ
$ eask [GLOBAL-OPTIONS] keywords
็บไฝ ็ๅฐๆกๆ Eask-file ้ๅข็ๆฌ่ใ
$ eask [GLOBAL-OPTIONS] bump [LEVELS..]
๐ก ๅๆธ [LEVELS..] ๆฅๅ majorใminor ๅ/ๆ patch๏ผ
ๆฅ็ๆไปถๅใ
ไฝ็ฝฎๅๆธ [PATTERNS..]
ๆฏไธๅ้้
็ฌฆๆจกๅผๆธ็ตใ
$ eask [GLOBAL-OPTIONS] cat [PATTERNS..]
๐ก ๆญคๅฝไปคไฝฟ็จๅ e2ansi ไพๅฎๆ่ชๆณ้ซไบฎใ
ๅฐๆๆ Emacs Lisp ๆไปถ้ฃๆฅๆไธๅๆไปถใ
$ eask [GLOBAL-OPTIONS] concat [FILES..]
ๅๅฐ LOC ไฟกๆฏใ
$ eask [GLOBAL-OPTIONS] loc [FILES..]
็จๆผๅปบ็ซๆๆช็ซ้ป็ๅฝไปคใ
ๅปบ็ฝฎๆๆชใ
$ eask [GLOBAL-OPTIONS] docs [NAMES..]
ๆไปคๅ ่จฑๅท่กๅจ Eask ๆ ธๅฟไนไธใ
ๅบๆฌไธ๏ผ้ๅฏไปฅ่ฎไฝ ๅไปปไฝไฝ ๆณๅ็ไบ๏ผ
ๆ้ ๅบๅ ่ผ Emacs Lisp ๆไปถใ
$ eask [GLOBAL-OPTIONS] load [FILES..]
ไฝฟ็จ็ตฆๅฎ็ๅๆธๅท่ก็ณป็ตฑๅฝไปคใ
$ eask [GLOBAL-OPTIONS] exec [COMMAND] [ARGUMENTS ...]
ๅจๅ้ฉ็็ฐๅขไธๅท่กemacsใ
$ eask [GLOBAL-OPTIONS] emacs [ARGUMENTS ...]
ๅฐ FORM
่ฉไผฐ็บ lisp ๅฝขๅผใ
$ eask [GLOBAL-OPTIONS] eval [FORM]
ๅๅ Elisp REPLใ
$ eask [GLOBAL-OPTIONS] repl [FILES..]
ๅฅๅ: ielm
้่ก่ ณๆฌใ
$ eask [GLOBAL-OPTIONS] run script [NAMES..]
้่กๆไปคใ
ๅฅๅ: cmd
$ eask [GLOBAL-OPTIONS] run command [NAMES..]
ๅจ Docker ๅฎนๅจไธญๅๅๆๅฎ็ Emacs ็ๆฌ
$ eask [GLOBAL-OPTIONS] docker <VERSION> [ARGUMENTS ...]
ไพๅฆ๏ผ
$ eask docker 26.1 info
้่็ดๆฅ่ทณๅ
ฅ Emacs 26.1๏ผๅจ docker ไธญ๏ผไธฆๅท่ก eask info
็ธๅใ
ๆไปค่ฝๅนซๅฉไฝ ็ฎก็ๅฅไปถไพ่ณด.
ๅๅบๆๆๅ ๆบใ
$ eask [GLOBAL-OPTIONS] archives
ๅพๅ ๆบไธญๆ็ดขๅ ใ
$ eask [GLOBAL-OPTIONS] search [QUEIRES..]
ๅ็ดๆๆ่ปไปถๅ ใ
$ eask [GLOBAL-OPTIONS] upgrade
ๅๅบๅ ใ
$ eask [GLOBAL-OPTIONS] list [--depth]
ๅๅบๆๆ้ๆ็ๅ ใ
$ eask [GLOBAL-OPTIONS] outdated [--depth]
ๅทๆฐๅ ๆบใ
$ eask [GLOBAL-OPTIONS] refresh
็ๆ็จๆผ้็ผ็ๆไปถใ
็ๆ autoload ๆไปถใ
ๅฐๅ
่ชๅๅ ่ผๅฐ้
็ฎๆ น็ฎ้ไธญ็ project-autoloads.el
ใ
$ eask [GLOBAL-OPTIONS] generate autoloads
project
ๆฏๅจ Eask
ๆไปถไธญ่ฒๆ็้
็ฎๅ็จฑใ ๆ้่ฉณ็ดฐไฟกๆฏ๏ผ่ซๅ้ฑ
ๅคๆไปถๅ
(elisp)ใ
็ๆ pkg ๆไปถใ
ๅฐๅ
ๆ่ฟฐ็ฌฆๆไปถๅฏซๅ
ฅ้
็ฎๆ น็ฎ้ไธญ็ project-pkg.el
ใ
ๅฅๅ: pkg
, pkg-el
$ eask [GLOBAL-OPTIONS] generate pkg-file
project
ๆฏๅจ Eask
ๆไปถไธญ่ฒๆ็้
็ฎๅ็จฑใ ๆ้่ฉณ็ดฐไฟกๆฏ๏ผ่ซๅ้ฑ
ๅคๆไปถๅ
(elisp)ใ
็ๆ recipe ๆไปถใ
$ eask [GLOBAL-OPTIONS] generate recipe [DESTINATION]
ๅฆๆๆชๆๅฎ [DESTINATION]๏ผๅ้ป่ชๅฐๅบๅฐ /recipes
ๆไปถๅคพใ
็ๆ LICENSE ๆไปถใ
$ eask [GLOBAL-OPTIONS] generate license <name>
name` ๆฏ่จฑๅฏ่ญ็้กๅ๏ผ่ซๅ้ฑ https://api.github.com/licenses ไบ่งฃๆๆ้ธๆใ
๐ก ๆญคๅฝไปคไฝฟ็จๅ license-templates ็ๆๅฟฝ็ฅๆไปถใ
็ๆๅฟฝ็ฅๆไปถใ
$ eask [GLOBAL-OPTIONS] generate ignore <name>
๐ก ๆญคๅฝไปคไฝฟ็จๅ gitignore-templates ็ๆๅฟฝ็ฅๆไปถใ
็บ ertๆธฌ่ฉฆๅปบ็ซไธๅๆฐ็ๆธฌ่ฉฆ้ ็ฎใ
$ eask [GLOBAL-OPTIONS] generate test ert [NAMES..]
็บ ert-runner ๅปบ็ซไธๅๆฐ็ๆธฌ่ฉฆ้ ็ฎใ
$ eask [GLOBAL-OPTIONS] generate test ert-runner [NAMES..]
็บๅฐๆกๅปบ็ซไธๅๆฐ็ Buttercup ่จญๅฎใ
$ eask [GLOBAL-OPTIONS] generate test buttercup
็บๅฐๆกๅตๅปบไธๅๆฐ็ Ecukes ่จญๅฎใ
$ eask [GLOBAL-OPTIONS] generate test ecukes
็ๆ CircleCI ๅทฅไฝๆต yaml ๆไปถใ
้ป่ชๆไปถๅ็บ config.yml
ใ
$ eask [GLOBAL-OPTIONS] generate workflow circle-ci [--file]
้ๅฐๅจ .circleci/
ไธ็ๆ yaml ๆไปถ๏ผ
็ๆ GitHub Actions ๅทฅไฝๆต yaml ๆไปถใ
้ป่ชๆไปถๅ็บ test.yml
ใ
$ eask [GLOBAL-OPTIONS] generate workflow github [--file]
้ๅฐๅจ .github/workflow/
ไธ็ๆ yaml ๆไปถ๏ผ
็ๆ GitLab Runner ๅทฅไฝๆต็จ yaml ๆไปถใ
้ป่ชๆไปถๅ็บ .gitlab-ci.yml
ใ
$ eask [GLOBAL-OPTIONS] generate workflow gitlab [--file]
็ๆ Travis CI ๅทฅไฝๆต yaml ๆไปถใ
้ป่ชๆไปถๅ็บ .travis.yml
ใ
$ eask [GLOBAL-OPTIONS] generate workflow travis-ci [--file]
ๆญคๅ
่ๆฌๅฐๆไปถ็ณป็ตฑ็ไพ่ณด้ไฟไน้็้ๆฅใ ้ๆฅ็ไพ่ณด้
้ฟๅ
ไบๅพ้ ็จๅญๆชไธ่ผไพ่ณด้
็้่ฆใ
้ๆฅๅฐ็ๅ
ๅฟ
้ ๆไธๅ Eask
ๆไปถๆไธๅ -pkg.el
ๆไปถใ
ๅฐ็ตฆๅฎ็ source ็ฎ้้ๆฅๅฐๆญค้ ็ฎ็ๅ ็ฎ้๏ผๅจ็ตฆๅฎ็ package ๅ็จฑไธใ
$ eask [GLOBAL-OPTIONS] link add <NAME> <PATH>
ๅช้ค็ตฆๅฎๅ ็้ๆฅใ
ๅฅๅ: remove
$ eask [GLOBAL-OPTIONS] link delete [NAMES..]
ๅๅบๆๆ้ๆฅใ
$ eask [GLOBAL-OPTIONS] link list
ๅช้คๅปบ็ฝฎ้็จไธญ็ข็็ๅ็จฎๆชๆกใ
ๅพ็ถๅๅทฅไฝๅไธญๅช้ค .eask
ใ
ๅฅๅ: .eask
$ eask [GLOBAL-OPTIONS] clean workspace
โ๏ธ ไธ่ฆๆๅฎ้ธ้
--config, -c
๏ผๅฆๅๅฎๆๅช้คไฝ ็ๆดๅ ~/.emacs.d
ใ
$ eask clean workspace -g
ๅช้คๆๆ .elc
ๆไปถใ ้ๅฐๅฐ้ๆจ็ Eask
ๆไปถใ
$ eask [GLOBAL-OPTIONS] clean elc
ๅช้ค dist ๅญ็ฎ้ใ
ๅฅๅ: distribution
$ eask [GLOBAL-OPTIONS] clean dist
ๅช้ค็ๆ็ autoload ๆไปถใ
$ eask [GLOBAL-OPTIONS] clean autoloads
ๅช้ค็ๆ็ pkg ๆไปถใ
$ eask [GLOBAL-OPTIONS] clean pkg-file
ๅช้คๆๆ็ๆ็ๆฅ่ชๆไปถใ
$ eask [GLOBAL-OPTIONS] clean log-file
ๆญคๅฝไปคๆฏๆๆๅ ถไปๆธ ็ๅฝไปค็็ตๅใ
clean workspace
clean elc
clean dist
clean autoloads
clean pkg-file
clean log-file
ๅฅๅ: everything
$ eask [GLOBAL-OPTIONS] clean all
ๅฐ Emacs ๅ ้ฒ่ก lint ็ๅฝไปคใ
้่ก package-lint.
$ eask [GLOBAL-OPTIONS] lint package [FILES..]
้่ก checkdoc (่ชๅธถ).
$ eask [GLOBAL-OPTIONS] lint checkdoc [FILES..]
้่ก elint (่ชๅธถ).
$ eask [GLOBAL-OPTIONS] lint elint [FILES..]
้่ก elisp-lint.
$ eask [GLOBAL-OPTIONS] lint elisp-lint [FILES..]
้็ขบๅฏฆๅฐ้ .dir-locals.el ๆไปถ๏ผ ๐
้่ก elsa.
$ eask [GLOBAL-OPTIONS] lint lint elsa [FILES..]
้่ก indent-lint.
$ eask [GLOBAL-OPTIONS] lint indent [FILES..]
้่ก keywords checker (่ชๅธถ).
$ eask [GLOBAL-OPTIONS] lint keywords
้่ก license check.
$ eask [GLOBAL-OPTIONS] lint license
้่ก check-declare (่ชๅธถ).
$ eask [GLOBAL-OPTIONS] lint declare [FILES..]
Run relint.
ๅฅๅ: lint relint
$ eask [GLOBAL-OPTIONS] lint regexps [FILES..]
้่กๅๆญธ/ๅฎๅ ๆธฌ่ฉฆใ
ๆฟๆดปๅ ๏ผ ็จๆผๆธฌ่ฉฆๅ ๆฟๆดป
$ eask [GLOBAL-OPTIONS] activate [FILES..]
๐ก ๆจๅฏไปฅๅณๅ ฅ [FILES..] ไปฅไพฟๆจๅฏไปฅๅ จ้ขๆธฌ่ฉฆๆจ็ๅ ๆฟๆดป๏ผ
[FILES..] ๅฐๅจๅ ๆฟๆดปๅพๅ ่ผใ
้่ก ert ๆธฌ่ฉฆใ
$ eask [GLOBAL-OPTIONS] test ert [FILES..]
ไฝฟ็จ ert-runner ้่ก ert ๆธฌ่ฉฆใ
$ eask [GLOBAL-OPTIONS] test ert-runner
้่ก buttercup ๆธฌ่ฉฆใ
$ eask [GLOBAL-OPTIONS] test buttercup
้่ก ecukes ๆธฌ่ฉฆใ
$ eask [GLOBAL-OPTIONS] test ecukes [FILES..]
้่ก melpazoid ๆธฌ่ฉฆใ
$ eask [GLOBAL-OPTIONS] test melpazoid [DIRECTORIES..]
๐ก ๅฆๆๆชๅณๅ ฅ [DIRECTORIES..]๏ผๅฎๅฐไฝฟ็จ็ฎๅๅทฅไฝ็ฉบ้ใ
ๆ ผๅผๅ Emacs ๆบๆไปถ็ๅฝไปคใ
้่ก elisp-autofmt ๆ ผๅผๅจ.
$ eask [GLOBAL-OPTIONS] format elisp-autofmt [FILES..]
้่ก elfmt ๆ ผๅผๅจ.
$ eask [GLOBAL-OPTIONS] format elfmt [FILES..]
ๆงๅถ DSL ็ๆไปคๅ่กจใ
ๆฐๅขไธๅๅ ๆบใ
$ eask [GLOBAL-OPTIONS] source add <NAME> [URL]
็งป้คไธๅๅ ๆบใ
ๅฅๅ: remove
$ eask [GLOBAL-OPTIONS] source delete <NAME>
ๅๅบๆๆๅ ๆบใ
$ eask [GLOBAL-OPTIONS] source list
๐ก ๆไปค่$ eask archives
็ธๅ!
ๅ ถไป่ผๅฉๅฝไปคใ
ๅฐ Eask ๅ็ดๅฐๆๆฐ็ๆฌใ
ๅฅๅ: upgrade-self
$ eask [GLOBAL-OPTIONS] upgrade-eask
๐ก ้ๅชๆๅจๆจๅพๆบไปฃ็ขผๅฎ่ฃๆๆๆๆ๏ผ
้กฏ็คบ Eask ๅฎ่ฃไฝ็ฝฎใ
$ eask [GLOBAL-OPTIONS] locate
ๆชขๆฅๆจ็ Eask ๆไปถ็ๅฝไปคใ
ๆชขๆฅ Eask
ๆไปถใ
$ eask [GLOBAL-OPTIONS] analyze [FILES..]
ไพๅญ:
# lint all Eask-files in the current directory and subdirectories
eask analyze
# lint specific files
eask analyze Eask Eask.27
# lint all Eask-files in specified directory and subdirectories
eask analyze src/
# print result as JSON
eask analyze --json
ๆ้ๆดๅค่ฉณ็ดฐไฟกๆฏ๏ผ่ซ้่ก eask analyze --help
ใ
ไปฅไธ้ธ้ ้ฉ็จๆผๆๆ Eask ๅฝไปค๏ผ
้ๅฐไฝฟ็จ ~/.eask/ ่ไธๆฏๅ ้็ผ็ฐๅขใ
้็จๆผๅ
ถไปไปปๅใ ไพๅฆ๏ผcat
็ญใ
$ eask -g [COMMAND]
้ๅฐไฝฟ็จ ~/.emacs.d/
่ไธๆฏๅ
้็ผ็ฐๅขใ
้็จๆผ็บๆจ็Emacs ้ ็ฝฎๅไธไบไบๆ ใ ไพๅฆ๏ผๅ ็ฎก็็ญใ
$ eask -c [COMMAND]
ๅ็จ all
ๆจ่ชใ
$ eask -a [COMMAND]
ไนพๆทจๅฐๅๅ่ไธๅ ่ผ้ ็ฝฎๆไปถใ
$ eask -q [COMMAND]
ๅผทๅถๅท่กๅฝไปคใ
ๅผทๅถๅธ่ผๅ
dash
๏ผๅณไฝฟๅฎๆฏๅฆไธๅๅ
็ไพ่ณด้
$ eask -f [COMMAND]
ๅ็จ่ชฟ่ฉฆไฟกๆฏใ
้็ธ็ถๆผ๏ผ
(setq debug-on-error t)
่งธ็ผ้ฏ่ชคไปฃๆฟ่ญฆๅใ
ไพๅฆ๏ผๅจ eask compile ไธญ๏ผ
(setq byte-compile-error-on-warn t)
ๅจไธ็ตๆญข Emacs ็ๆ ๆณไธ็นผ็บๅท่กใ
ไฝฟ็จ HTTP ่ไธๆฏ HTTPS ้ฃๆฅๅญๆชใ
ๅ็จ/็ฆ็จๆ้ๆณใ
ๅ็จ/็ฆ็จๆฅ่ชๆจ้ ญใ
ๆฏๅฆ็ๆๆฅ่ชๆไปถใ
็ฆ็จ้ก่ฒ่ผธๅบใ
้กฏ็คบๆฏๅๆไฝไน้็ถ้็ๆ้ใ
ๅฐ่ฉณ็ดฐ็จๅบฆๅพ 0 ่จญ็ฝฎ็บ 5ใ
$ eask --verbose 4 [COMMAND]
้กฏ็คบ็ๆฌ่ใ
้กฏ็คบๅนซๅฉใ
็บ HTTP ๅ HTTPS ่จญ็ฝฎ Emacs ไปฃ็๏ผ
$ eask --proxy "localhost:8888" [COMMAND]
ๅ ็บ HTTP ่จญ็ฝฎ Emacs ไปฃ็ใ
ๅ ็บ HTTPS ่จญ็ฝฎ Emacs ไปฃ็ใ
ไธ่ฆๅฐไปปไฝ URL ๅน้ ๆจกๅผไฝฟ็จไปฃ็ใ
<pattern>
ๆฏ Emacs ๆญฃๅ่กจ้ๅผใ