2018-08-11: after tring persp-mode

After last post about tring emacs workspace management, I tried persp-mode. It comes out that it's not that simple to implement a workspace auto-switch feature. It's not just find-file-hook and advice for switch-buffer. There are too many commands need to advice and hook (select-window, kill-buffer-hook ...). Cause there's no "buffer-focus-in-hook". And it's not easy to build one with persp-mode.

There is one package in melpa that implement per buffer buffer-focus-in-hook and buffer-focus-out-hook by hacking on buffer-list-update-hook. But persp-mode also manipulate the buffer-list. It won't work out.

Then I realize that I just want to have workspace on buffer management, like the ibuffer option above. I can easily get that feature. I just rebind my buffer-switch key to counsel-projectile-switch-to-buffer and everything works great.

It turns out that compared with projectile, persp only offers workspace specific window configuration. So I don't need it if I only want buffer level workspace. And it also add unexpacted behavior when I test my auto-switch implementation (buffer and window configuration switched at the same time), which makes me wonder that workspace auto-switch is a bad idea.

Although it looks like that I waste bunch of time to find a single rebind. I do find lots useful stuff on these workspace, layout, window management packages and implementations. I might write another post for about that.

2018-08-07: emacs workspace management

Recently I'm asked to help on a project. The problem is there're a lot files with same name in different directories and same name with my other project. I'm using ivy-switch-buffer to switch between opened buffer. And it needs more keystrokes in this project to switch to the desired buffer. So I'm looking for some workspace management aproch in emacs to make my finger not that tired after work.

After googling for a little while, I find there are so many ways to manage workspace in emacs.

The cons of the first two is that you need to deliberately switch workspace when you are going to open files in other workspace. The pros is that they provide perfect isolation, no need to tweak buffer switch functions.

For persp-mode, the pros is that with custom code, maybe it's not hard to implement the workspace auto-switching function. It has eye candy in mode line or title bar if you want them. The cons is that you need to implement the auto-switching function or remember to switch workspace manually.

For purpose-mode, you may need multiple high resolution screen.

For ibuffer, it's not typically "workspace". It depends on how many buffers you have and how familiar you are with the ibuffer filter functionality.

For tabbar, eye candy and custom function is needed.

So it really depends on

I may try persp-mode first. Wish me luck.

2018-02-12: My Karabiner Elements configuration

This post are descriptions and tutorial of my personal KE complex modification.

I merged my personal Karabiner Elements configuration into the official repo several days ago. You can import my personal rules here. To achieve efficiency, I use karabiner with Alfred mainly through alfred workflow external trigger and osascript (command line tool for calling AppleScript code). Here are these configurations. Please note that I update my configurations every day. So I can't keep this post up to date. The key here is to introduce a system for launching apps, invoking scripts and all stuffs that can be done with shell (everything). When you can get anything you want with few key strokes, it feels great.

Download all my workflow from dropbox , please contact me when this link broken. I may update this post for each specific config if I have time in the future (may not happen). If you have any problems or ideas, please open an issue in my dotfile repo. And you can also check KE-complex_modifications official repo for more rules and discussion.

Update: The old download link is broken and I don't have time to maintain all these workflows up to date. Now that the core thing here is to use alfred workflow's external trigger feature, I create a app launcher workflow as a sample.

2017-11-25: org-agenda bitbar plugin

UPDATE: The agenda plugin has been merged into the official plugin repo. You can now find the plugin here.

Bitbar is a macos application that can add custom menu bar buttons. I'm recently learning managing projects with org-mode. And we all know that org-agenda is great.

So I write a bitbar plugin, agenda to display some of my agenda in menu bar.

Read the whole article ...

2017-11-09: Use zsh in emacs

I used to use vim with tmux in a terminal emulator. After changing to emacs. It didn't take much time for me to realize that emacs in GUI works better.

The problem is I still want the old behavior. I tried about three times using my zsh shell in emacs. I'm not here telling those failed attempts. I want to write it down because of a recent discovery.

When I restructure my zsh configurations, I find the z-shell works fine with with zero config. That's when I finally discover that it's the plugins and configurations that make zsh and emacs incompatible. What's more, I find these lines. They must come from some emacs package's readme instruction. The original one is telling zsh don't do something when it's in emacs.

    if [ -n "$INSIDE_EMACS" ]; then
    ...
  else
    ...
fi    
	  

So I thought, I can just use these line with my zsh configuration(prezto). It works fine now after some little test. It turns out the default zsh-autocompletion is not playing well with emacs. I use the if...else code telling zsh don't load autosugestion while in emacs. And everything is fine now.

That's it. Maybe I'll dig in for getting autocompletion back in emacs someday.

2017-10-28: Halt and Catch Fire

Just finish the Halt and Catch Fire, really great show. It makes me think about that everyone is full of story in their life, amazing to others but definitely not to themselves, like Joe in the series.

It's just that I think Joe is "right" in some way. The right is some kind of his every decision of fresh start, it's so decisive. It makes the character fear nothing. He desires success so much but go through his failer and go for the fresh start so quick. But on the other hand, he is so emotional, about his failer, about Gordon's die.

These characters normally can't be on the same person. Maybe that's why it makes me think Joe is "right".

2017-10-21: About

Blog about coding and every other things in daily life.

2016-10-09: Git 指南

公司内部分享大纲.

Read the whole article ...