Slide 1

Slide 1 text

͞ΑͳΒ Helmɺ Α͏ͦ͜ Ivy/Counsel @ TA K A X P P R E S E N T S 2019-07-24 at pixiv

Slide 2

Slide 2 text

ࣗ ݾ ঺ հ • Takaaki Ishikawa • Org mode extreme user • Using Emacs more than 15 years Twitter: @takaxp ! 2

Slide 3

Slide 3 text

ຊ ೔ ͷ ͓ ࿩ ͸ ʁ • Helm ͔Β Ivy/Counsel ΁Ҡߦ͓ͨ͠࿩ • ಘΒΕͨ஌ݟ • ༏ྼΑΓ΋ɺivy-mode ͔Θ͍͍Α ※ IvyͷΞΠίϯͰ͸͋Γ·ͤΜ ! 3

Slide 4

Slide 4 text

ର ৅ ऀ ͸ ʁ • ؤͳʹิ׬γεςϜΛ࢖Θͳ͍ɺ௝͍͠ਓ • Helm Λ࢖͏͕ɺ৽͍͠ิ׬γεςϜΛࢼ͍ͨ͠ਓ • Ivy ͕ྑ͍Β͍͠ͱᷚͰฉ͕͘ɺࣗ෼Ͱࢼ͢ͷ͸໘౗ ͰɺͱΓ͋͑ͣ·ͱ·ͬͨҠߦ࿩Λฉ͖͍ͨਓ ! 4

Slide 5

Slide 5 text

Ͳ Μ ͳ ײ ͡ ʹ ͳΔʁ ʢ ྫ 1 ʣ ※ IvyͷΞΠίϯͰ͸͋Γ·ͤΜ ! 5

Slide 6

Slide 6 text

Ͳ Μ ͳ ײ ͡ ʹ ͳΔʁ ʢ ྫ 1 ɾ I V Y ʣ ! 6

Slide 7

Slide 7 text

Ͳ Μ ͳ ײ ͡ ͩ ͬ ͨ ʁ ʢ ྫ 1 ʣ ※ HelmͷΞΠίϯͰ͢ ! 7

Slide 8

Slide 8 text

Ͳ Μ ͳ ײ ͡ ͩ ͬ ͨ ʁ ʢ ྫ 1 ɾ H E L M ʣ ! 8

Slide 9

Slide 9 text

ൺ ֱ ͢ Δ ͱ ʁ ʢ ྫ 1 ʣ ! 9

Slide 10

Slide 10 text

Ͳ Μ ͳ ײ ͡ ʹ ͳΔʁ ʢ ྫ 2 ʣ ※ IvyͷΞΠίϯͰ͸͋Γ·ͤΜ ! 10

Slide 11

Slide 11 text

Ͳ Μ ͳ ײ ͡ ʹ ͳΔʁ ʢ ྫ 2 ɾ I V Y ʣ ! 11

Slide 12

Slide 12 text

Ͳ Μ ͳ ײ ͡ ͩ ͬ ͨ ʁ ʢ ྫ 2 ʣ ※ HelmͷΞΠίϯͰ͢ ! 12

Slide 13

Slide 13 text

Ͳ Μ ͳ ײ ͡ ͩ ͬ ͨ ʁ ʢ ྫ 2 ɾ H E L M ʣ ! 13

Slide 14

Slide 14 text

ݟ ͨ ໨ ͕ ͔ ͳ Γ ҧ ͬ ͨ … ※ ͜΍ͭͷ໊͸
 εϫΠύʔ ೖྗI/FͷҐஔ ީิϦετͷҐஔ ͓ۙ͘ͷwindowʹ ৗʹϛχόοϑΝʹ ! 14

Slide 15

Slide 15 text

ݟ ͨ ໨ ͷ ྑ ͞ ͕ ໨ ཱ ͭ Ͷ ※ ͜΍ͭͷ໊͸
 εϫΠύʔ ʮ͔Θ͍͍ΞΠίϯʯͱʮબ΂ΔදࣔҐஔʯ see https://github.com/tumashu/ivy-posframe ! 15

Slide 16

Slide 16 text

I V Y ͷ த ৺ ͸ I V Y- R E A D • prompt • collection • action • caller • sort etc… ! 16

Slide 17

Slide 17 text

͡ Ό ͊ C O U N S E L ͸ ʁ • ivy-read Λ࢖ͬͨϓϦηοτؔ਺ͷू·Γ • Emacs ίϚϯυΛஔ͖׵͑Δ • Git, Grep, System৘ใ΋ର৅ • Ұ෦ɺଞͷύοέʔδͷؔ਺΋֦ு
 ʢorg-tags, org-attach, org-capture, package.el...) ! 17

Slide 18

Slide 18 text

͡ Ό ͊ C O U N S E L ͸ ʁ E M A C S C O M M A N D C O U N S E L execute-extended-command counsel-M-x describe-bindings counsel-descbinds describe-function counsel-describe-function describe-variable counsel-describe-variable list-faces-display counsel-faces find-file counsel-find-file find-library counsel-find-library load-theme counsel-load-theme yank-pop counsel-yank-pop pop-to-mark-command counsel-mark-ring bookmark-jump counsel-bookmark see https://github.com/abo-abo/swiper ϓϦηοτ͕ॆ࣮͍ͯ͠ΔͷͰɺॳ৺ऀʹ΍͍͞͠ɻ ͓ͦΒ͘ɺ൒෼͕όϑΝϦϯɻ ! 18

Slide 19

Slide 19 text

I V Y / C O U N S E L ͱ ه ड़ ͢ Δ ੋ ඇ • helm ΍ anything ͱͷରൺͷதͰɺivy/counsel ͱද͢ ͜ͱ͕͋Δ͚Ͳ΋… • ivy ͍҃͸ ivy-mode Ͱྑ͍ͷͰ͸ʁ ͸ ʁ ! 19

Slide 20

Slide 20 text

͋ ͱ S W I P E R ͸ ʁ • ͬ͘͟Γͱɺhelm-swoop Ͱ͢ɻ ※ ͜΍ͭͷ໊͸
 εϫΠύʔ ! 20

Slide 21

Slide 21 text

Π ϯε τ ʔϧ • ύοέʔδ؅ཧܦ༝ͳΒɺcounsel.el ΛೖΕΔɻ • gitܦ༝ͳΒɺswiper Λ clone ͢Δɻ
 https://github.com/abo-abo/swiper ! 21

Slide 22

Slide 22 text

ج ຊ ઃ ఆ ! 22

Slide 23

Slide 23 text

H E L M 2 I V Y ! 23

Slide 24

Slide 24 text

I V Y ͷ ྲྀ ّ ( 1 ) • helm ͷ࣌͸ɺ Ͱ action ΛબΜͩɻ • ivy ʹೖ໳͢ΔͳΒɺM-o Λ࢖͏΂͠ɻ ! 24

Slide 25

Slide 25 text

I V Y ͷ ྲྀ ّ ( 2 ) • ީิϦετͷߏ੒͸γϯϓϧʹ flyspell-correct-helm.el ( save ) flyspell-correct-ivy.el ( M-o s ) ! 25

Slide 26

Slide 26 text

I V Y ͷ ྲྀ ّ ( 3 ) M-o (ivy-dispatching-done-hydra) C-o (hydra-ivy/body) • ivyͷߜΓࠐΈதʹݺͼग़ͤΔػೳ ! 26

Slide 27

Slide 27 text

ͦ ͏ ͍ ͑ ͹ ɺ ɺ ɺ • hydra? ! 27

Slide 28

Slide 28 text

T H A N K S T O A B O - A B O see https://github.com/abo-abo ! 28

Slide 29

Slide 29 text

Χ ε λ ϚΠ ζ ͢ Δ 1. ޷Έͷ഑৭ 2. ީิϦετͷฒͼସ͑ɺཤྺͷར༻ 3. eldoc ʹ͓໧Γ͍ͨͩ͘ 4. all-the-icons Ͱݟ΍͘͢ 5. ϓϩϯϓτΛϋοΫ 6. νΣʔϯɾΞΫγϣϯ ! 29

Slide 30

Slide 30 text

σ ϑ Υϧ τ ͷ ഑ ৭ • ͔ͳΓϑΝϯΩʔ ! 30 1. ޷Έͷ഑৭

Slide 31

Slide 31 text

഑ ৭ ͸ ͠ ͬ ͔ Γ Χ ε λ ϚΠ ζ ͢ Δ • ໌ࣔతʹઃఆ͠ͳ͍ͱɺσϑΥϧτʹҾͬுΒΕ·͢ɻ • ivy-current-match • ivy-minibuffer-match-face-1 • ivy-minibuffer-match-face-2 • ivy-minibuffer-match-face-3 • ivy-minibuffer-match-face-4 ! 31 1. ޷Έͷ഑৭

Slide 32

Slide 32 text

഑ ৭ ࣄ ྫ ! 32 1. ޷Έͷ഑৭

Slide 33

Slide 33 text

ద ༻ ݁ Ռ • ͨͩ͠ɺivy-re-builders-alist ͷ஋ʹԠͯ͡ίϚϯυ͝ͱʹҟͳΔදࣔ݁ՌʹͳΔɻ ! 33 1. ޷Έͷ഑৭

Slide 34

Slide 34 text

2 . ީ ิ Ϧε τ ͷ ฒ ͼ ସ ͑ ɺ ཤ ྺ ͷ ར ༻ • ίϚϯυ͝ͱʹࡉ੍͔͘ޚͰ͖Δ • ivy-sort-functions-alist • ivy-sort-matches-functions-alist • ivy-re-builders-alist • smex.el, savehist.el (~/.emacs.d/history), session.el ͱͷ૊Έ߹Θͤ ٯʹݴ͑͹ɺίϚϯυ͝ͱʹ੍ޚ͕ඞཁ ! 34

Slide 35

Slide 35 text

Α Γ ଟ ͘ͷ ί Ϛ ϯ υ ʹ ಉ ͡ ઃ ఆ Λ • prescient.el (with ivy-prescient.el) • ಡΈࠐΜͰ์ஔ͓͚ͯ͠͹Α͍ • ivy-read Λ࢖͏ͨͼʹɺར༻ཤྺΛऔΓɺอଘ • ಠࣗͷΞϧΰϦζϜͰɺબ୒ީิΛ࠷దԽ • Πχγϟϧೖྗ͕Մೳ
 ʢe.g. M-x fap Ͱ find-file-at-point ͕ώοτ͢Δ!ʣ • (company ʹ΋࢖͑Δ) ! 35 2. ฒͼɾཤྺ

Slide 36

Slide 36 text

P R E S C I E N T. E L ! 36 see https://github.com/raxod502/prescient.el 2. ฒͼɾཤྺ

Slide 37

Slide 37 text

Χ ε λ ϚΠ ζ ͱ ཹ ҙ ఺ • prescient.el ͕ѻ͏ ivy-read ͸ɺ:caller ͕ઃఆ͞Εͯ ͍Δ৔߹ͷΈ • :sort nil ͔ :sort ͕ະઃఆͷ ivy-read ͸ɺivy-prescient- sort-commands ʹίϚϯυΛ௥Ճ͢Ε͹Α͍ • ౷ܭσʔλͷอଘ͕ɺkill-emacs-hook ʹඥ෇͍͍ͯΔ • prescient-aggressive-file-save Λઃఆ͢Ε͹OK ! 37 2. ฒͼɾཤྺ

Slide 38

Slide 38 text

Χ ε λ ϚΠ ζ ྫ ! 38 2. ฒͼɾཤྺ

Slide 39

Slide 39 text

M - X ͩ ͚ Πχγ ϟϧ ೖ ྗ ͠ ͨ ͍ • counsel-M-x ʹ ivy-prescient-re-builder Λ୅ೖ • ϚΠφʔϞʔυΛ༗ޮԽޙɺivy-re-builders-alist ͷσϑΥϧτ஋Λ೚ҙͷ஋ʹ ໭͢ʢivy ͷσϑΥϧτ͸ ivy--regex-ignore-order Ͱ͸ͳ͘ ivy--regex-plusʣ ! 39

Slide 40

Slide 40 text

ͦ ͏ ͍ ͑ ͹ ɺ ɺ ɺ • straight.el? ! 40 2. ฒͼɾཤྺ

Slide 41

Slide 41 text

T H A N K S T O R A X O D 5 0 2 ! 41 see https://github.com/raxod502 2. ฒͼɾཤྺ

Slide 42

Slide 42 text

3 . E L D O C ʹ ͓ ໧ Γ ͍ ͨ ͩ ͘ • eldoc-print-after-edit ͷઃఆͰ͸ෆे෼ ! 42

Slide 43

Slide 43 text

4 . A L L - T H E - I C O N S Ͱ ݟ ΍ ͘͢ • ivy-rich.el • all-the-icons.el ʢivy-richͱͷڞଘ͸ݫͦ͠͏…ʣ ! 43 all-the-icons.el Λ࢖͍͜ͳͤΔ͔͸ผ໰୊ɽώϯτ͸ font-lockɽ

Slide 44

Slide 44 text

5 . ϓ ϩ ϯ ϓ τ ͷ ϋο Ϋ • σϑΥϧτͩͱ͚ͦͬͳ͍ • ivy-count-format ͷΧελϚΠζ͸Մೳʢe.g. [123/6837] M-xʣ • “^” ͷσϑΥϧτ͸ɺivy-initial-inputs-alist Ͱ੍ޚͰ͖Δ • ϞʔυϥΠϯෆཁ೿ʹ͸ɺ΢Οϯυ΢ڥք͕ͳ͘ਏ͍ • ͦ͏ͩɺϋοΫ͠Α͏ʂ ! 44

Slide 45

Slide 45 text

I V Y- - I N S E R T- P R O M P T • ivy--insert-prompt Λ advice ͢Δ ! 45 5. ϓϩϯϓτͷϋοΫ

Slide 46

Slide 46 text

6 . ν Σ ʔϯ ɾ ΞΫ γ ϣ ϯ • ivy ͷྲّྀʹै͏ͳΒɺM-o Λ׆༻͢΂͖ • ߜΓࠐΈதʹɺߜΓࠐΈ৚݅Λม͑ͨΓɺผͳίϚ ϯυʹ઀ଓͰ͖Δɻ counsel-ag counsel-ag M-o r ~/a/b/c ~/a 2্ͭͷ֊૚͔Β શจΛ ࠶ݕࡧ͍ͨ͠ͳ ͪɺཤྺʹ ೖͬͯͳ͍Α ͋ͷϑΝΠϧ counsel-recentf counsel-fzf M-o z ! 46

Slide 47

Slide 47 text

ν Σ ʔϯ ɾ ΞΫ γ ϣ ϯ ͷ ઃ ఆ ํ ๏ • action༻ͷؔ਺Λॻ͍ͯɺivy-add-actions Ͱ௥Ճɻ ! 47 6. νΣʔϯɾΞΫγϣϯ

Slide 48

Slide 48 text

ݕ ࡧ Ϋ Τ Ϧ ͸ ͦ ͷ · · Ͱɺ ଟ ஈ ઀ ଓ counsel-projectile-find-file M-o z ~/a/b/c counsel-fzf ~/ ͋Εɺݟ͔ͭΒͳ͍ ൣғ޿͗͢ɺॏ͍ M-o r counsel-fzf ~/a/b ͋ͬͨʂ ! 48 6. νΣʔϯɾΞΫγϣϯ

Slide 49

Slide 49 text

ʮ ͋ Ε ɺ ݟ ͭ ͔ Β ͳ ͍ ʯ Λ ิ ॿ • ώοτ͠ͳ͔ͬͨΒɺҰ౓͚ͩɺcounsel-fzf ʹࣗಈ༠ಋ • ivy--insert-prompt ΛϋοΫ ͋Εɺݟ͔ͭΒͳ͍ ! 49 6. νΣʔϯɾΞΫγϣϯ

Slide 50

Slide 50 text

· ͱ Ί • helm ͔Β ivy ʹҠߦͯ͠ಘΒΕͨ஌ݟΛ͓࿩͠·ͨ͠ • ivy͸ɺجຊతʹγϯϓϧͰ࢖͍΍͍͢Ͱ͢ • helm ͔Β͸͍͑΍ʂͰҠߦͯ͠΋େৎ෉Ͱ͠ΐ͏ • ઃఆͷৄࡉ΍ɺͦͷଞͷϋοΫ͸ޙ೔Qiitaʹެ։͠·͢ • ݒ೦͕͋Δͱ͢Ε͹ɺਓؾύοέʔδͷΦϨΦϨ ivy-read ͕ཚཱ͢Δ͜ͱ • ivy-read ΛҰݩԽ͢ΔϦϙδτϦ͕͋ΔͱɺօͷͨΊ͔΋ ! 50 https://gist.github.com/takaxp/ 86158fe74b8268843571c42b48a4336c ઃఆू: ࣭໰౳: https://twitter.com/takaxp