<div dir="ltr"><div><div><div><div><div><div><div>Hey all,<br><br></div>I am wondering what kind of package managing method do you use. What do you guys use for downloading emacs packages and then managing them?<br></div>I had started by using git submodules and keeping all of my emacs.d there, with external packages registered as submodules.<br>
<br></div>Since I discovered <a href="https://github.com/dimitri/el-get">el-get</a> though I have seriously simplified the way that emacs packages are maintained. I still keep my .emacs.d in a git repository but all of the external packages are managed by el-get and I don't need to worry:<br>
<br><pre class=""><div class="" id="file-gistfile1-el-LC1"><span class="">(</span><span class="">defvar</span> <span class="">el-get-packages-list</span><span class="">)</span></div><div class="" id="file-gistfile1-el-LC2">
<span class="">(</span><span class="">defvar</span> <span class="">work-only-packages</span> <span class="">'</span><span class="">(</span><span class="">monky</span> <span class="">protobuf-mode</span><span class="">))</span></div>
<div class="" id="file-gistfile1-el-LC3"><span class="">(</span><span class="">defvar</span> <span class="">personal-only-packages</span> <span class="">'</span><span class="">(</span><span class="">android-mode</span> <span class="">))</span></div>
<div class="" id="file-gistfile1-el-LC4"><span class="">(</span><span class="">if </span><span class="">*at-work*</span></div><div class="" id="file-gistfile1-el-LC5">    <span class="">(</span><span class="">setq</span> <span class="">el-get-packages-list</span> <span class="">(</span><span class="">append </span><span class="">common-packages</span> <span class="">work-only-packages</span><span class="">))</span></div>
<div class="" id="file-gistfile1-el-LC6">    <span class="">(</span><span class="">setq</span> <span class="">el-get-packages-list</span> <span class="">(</span><span class="">append </span><span class="">common-packages</span> <span class="">personal-only-packages</span><span class="">)))</span></div>
<div class="" id="file-gistfile1-el-LC7"> </div><div class="" id="file-gistfile1-el-LC8"><span class="">;; el-get does its magic to make sure all packages are there</span></div><div class="" id="file-gistfile1-el-LC9"><span class="">(</span><span class="">el-get</span> <span class="">'sync</span> <span class="">el-get-packages-list</span><span class="">)</span></div>
<div class="" id="file-gistfile1-el-LC10"><span class="">(</span><span class="">el-get</span> <span class="">'sync</span><span class="">)</span></div></pre><br></div>So I keep 3 different lists, one for my work computer and one for my personal computer where I define the packages I need only in each different environment. And the common-packages list is the packages I need everywhere. With the last 2 lines el-get makes sure that the aforementioned packages are downloaded, built and up to date. Installing my .emacs.d to a new computer? Just open emacs and wait until it clones and builds all packages. (It will take a long time to do so though)<br>
<br></div>As for specific packages I could go on and on about useful packages but one that I really love using is: <i>expand-region</i>. Its source code is <a href="https://github.com/magnars/expand-region.el">here</a>. I bind it to M - q and it's simply magic. Depending on the language of the file visited by the buffer you are in, it will select the current word. The more times you call it without moving the point the selected region will expand more and more towards greater and greater semantic areas, like variable name, function block e.t.c.<br>
<br></div>So that wraps up some things I discovered after some years of using emacs. Hope to see some of you in one of our meetings and discuss more tips and tricks in detail.<br><br></div>Best Regards,<br><div><div><div>
<div><br></div></div></div></div></div><div class="gmail_extra"><br clear="all"><div><div dir="ltr"><table border="0"><tbody><tr><td style="color:#999999">Lefteris(Eleftherios) Karapetsas</td>
          </tr>
          <tr>
            <td style="color:#999999">Click <a href="http://lefteris.refu.co" target="_blank">here</a> for my CV/portfolio website<a href="http://lefteris.refu.co" target="_blank"><br></a></td>
          </tr>
          <tr>
            <td style="color:#999999"></td>
          </tr>
          <tr>
            <td style="color:#999999">Also maintain a <a href="http://blog.refu.co" target="_blank">blog </a>on various topics, mostly
              engineering<br></td>
          </tr>
          <tr>
            <td style="color:#999999"><br></td></tr></tbody></table></div></div>
<br><br><div class="gmail_quote">On Sat, Jul 26, 2014 at 4:39 PM, C. Florian Ebeling <span dir="ltr"><<a href="mailto:florian.ebeling@gmail.com" target="_blank">florian.ebeling@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class=""><br>
On 26.07.2014, at 15:45, Tilmann Singer <<a href="mailto:tils@tils.net">tils@tils.net</a>> wrote:<br>
<br>
> Arne Brasseur <<a href="mailto:arne.brasseur@gmail.com">arne.brasseur@gmail.com</a>> writes:<br>
>> For example some of the settings I have so far are:<br>
>><br>
>> (setq inhibit-splash-screen t)                  ; no splash screen<br>
>> (menu-bar-mode -1)                              ; no menu bar<br>
>> (tool-bar-mode -1)                                ; no tool bar<br>
>> (scroll-bar-mode -1)                            ; no scroll bar<br>
>> (setq initial-scratch-message nil)              ; empty *scratch* buffer<br>
>> (setq x-select-enable-clipboard t)<br>
>> (require 'uniquify)<br>
>> (setq uniquify-buffer-name-style 'post-forward) ; "file.ext|dir" instead of<br>
>> "file.ext<2>"<br>
>> (fset 'yes-or-no-p 'y-or-n-p)<br>
><br>
> Agree with all of them!<br>
<br>
</div>Yes, I have these too. Another one the I like is to show whitespace mistakes upon toggling with C-x w:<br>
<br>
(global-set-key (kbd "C-x w") (lambda () (setq 'show-trailing-whitespace t)))<br>
<br>
All trailing whitespace becomes become redspace! :)<br>
<br>
I bind C-. to open the string at the cursor, er, point to open in buffer.<br>
<br>
(global-set-key (kbd "C-.") 'find-file-at-point)<br>
<br>
Opening Magit is a major things, so I have it on Cmd-return (in Apple keys).<br>
<br>
(global-set-key (kbd "M-RET") 'magit-status)<br>
<br>
When writing lots of tests, i.e. when doing Ruby, I fing it useful to be able to touch a file easily. I use my own (googled?) function and put it on Alt-return. Then autotest / guard / grunt can pick it up and rerun. (This is for cases when only changing implementation and not the test.)<br>

<br>
(defun touch ()<br>
  "updates mtime on the file for the current buffer"<br>
  (interactive)<br>
  (let ((command (concat "touch " (shell-quote-argument (buffer-file-name)))))<br>
    (shell-command command)<br>
    (clear-visited-file-modtime)<br>
    (message command)))<br>
<br>
(global-set-key (kbd "s-<return>") 'touch)<br>
<br>
Another thing I'm fond of is toggling between the two topmost buffers, which sits on Ctrl-Shift-Arrow-down:<br>
<br>
(defun flip-buffer ()<br>
  (interactive)<br>
  (switch-to-buffer nil))<br>
<br>
(global-set-key [C-S-down] 'flip-buffer)<br>
<br>
I'm not sure if all of these deserve immediate premium level starter kit status, but those are at least the ones I still consider good ideas after having them around awhile =)<br>
<span class="HOEnZb"><font color="#888888"><br>
Florian<br>
<br>
</font></span><br>_______________________________________________<br>
emacs-berlin mailing list<br>
<a href="mailto:emacs-berlin@emacs-berlin.org">emacs-berlin@emacs-berlin.org</a><br>
<a href="https://mailb.org/mailman/listinfo/emacs-berlin" target="_blank">https://mailb.org/mailman/listinfo/emacs-berlin</a><br>
<br></blockquote></div><br></div>