twitter github linkedin email

Álvaro Ramírez

[2014-09-19 Fri] # Emacs bookmarks


[2015-03-26 Thu] updated

[2015-03-26 Thu] # Helm buffer URLs

Venturing into Emacs lisp and Helm. Here's a go at listing all URLs in current buffer.

(defun ar/helm-buffer-url-candidates ()
  "Generate helm candidates for all URLs in buffer."
  (save-excursion
    (goto-char (point-min))
    (let ((helm-candidates '())
          (url))
      (while (re-search-forward goto-address-url-regexp
                                nil t)
        (setq url
              (buffer-substring-no-properties (match-beginning 0)
                                              (match-end 0)))
        (add-to-list 'helm-candidates
                     (cons url
                           url)))
      helm-candidates)))

(defun ar/helm-buffer-urls ()
  "Narrow down and open a URL in buffer."
  (interactive)
  (helm :sources `(((name . "Buffer URLs")
                    (candidates . ,(ar/helm-buffer-url-candidates))
                    (action . (lambda (url)
                                (browse-url url)))))))

[2014-07-13 Sun] # Development bookmarks

[2015-03-26 Thu] # London diving schools

[2015-03-05 Thu] # India travel backlog

[2015-03-22 Sun] # Born to Run references


[2015-03-23 Mon] updated

References from reading Christopher McDougall's Born to Run:

Recipe by Megan Mignot, based on book references:

Mama Tita’s Pancakes

  • 1 ½ cups cooked brown rice
  • 1 cup coconut milk
  • 2 ripe bananas
  • 1 tablespoon honey
  • ½ cup white cornmeal
  • 2 teaspoons baking powder

[2015-03-06 Fri] # Startup bookmarks

[2015-03-23 Mon] # Doh! undo last git commit

$ git reset --soft HEAD~1

[2015-03-22 Sun] # Resetting variables using defvar

Want to re-evaluate defvars and modify variables? eval-defun (bound to C-M-x) can help. From the manual:

If the current defun is actually a call to `defvar', then reset the variable using its initial value expression even if the variable already has some other value. (Normally `defvar' does not change the variable's value if it already has a value.) Treat `defcustom' similarly.

[2015-03-05 Thu] # Learning Emacs lisp


[2015-03-22 Sun] updated
  • Pretty printing objects:
(let ((my-var (list "val1"
                    "val2"
                    "val3")))
  (pp-to-string my-var))
  • Search and/or replace in curent buffer:
(re-search-forward "needle"
                   nil t)
(match-beginning 0) ;; Start location of match from last search.
(match-end 0) ;; End location of match from last search.
(replace-match "love")

;; needle-in-haystack
  • Restric buffer editing to a region:
(narrow-to-region (point)
                  (point-max))
  • Restore restriction:
(save-restriction (narrow-to-region (point)
                                    (point-max))
  • Restore point, mark, and current buffer:
(save-excursion (goto-char (point-max))
                (insert "Hello elisp."))
  • Concatenating strings:
(concat "Hello " "elisp " "world.")
  • Grabbing thing at point:
(thing-at-point 'word)
(thing-at-point 'symbol)
(thing-at-point 'line)
  • Unit test with ert.
  • Basic iteration with dolist and while.
  • Output to other buffer:
(with-current-buffer (get-buffer-create "*some buffer*")
  (princ '(some list to print)
         (current-buffer)))
  • For a temporary buffer, use with-temp-buffer:
(with-temp-buffer
  (insert "abc")
  (point))
  • Cons cells bookmark.
  • Check for substring:
(string-match-p REGEXP STRING &optional START)
  • Return argument unchanged (noop):
(identity ARG)
  • Org insert today's timestamp
(org-insert-time-stamp (current-time))
(car LIST)
  • All but first element
(cdr LIST)
  • Add NEWELT to front of PLACE
(push NEWELT PLACE)
  • Invoke 'FUNCTION for each in SEQUENCE
(mapcar FUNCTION SEQUENCE)
  • Search/replace
(while (search-forward "Hello")
  (replace-match "Bonjour"))

[2015-03-22 Sun] # Broken Xcode plugins?

Some Xcode plugins stopped loading after updating Xcode. Ensure the latest DVTPlugInCompatibilityUUIDs is added to the plugin's Info.plist. Get from:

$ defaults read \
    /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID

[2015-03-18 Wed] # Sharing on iOS

NSString *title = @"Sharing on iOS bookmarks.";
NSURL *url = [NSURL URLWithString:@"http://xenodium.com/#sharing-on-ios"];
UIImage *image = [UIImage imageNamed:@"beautiful-image"];

UIActivityViewController *controller =
  [[UIActivityViewController alloc]
    initWithActivityItems:@[title, url, image]
    applicationActivities:nil];

// self being a UIViewController.
[self presentViewController:controller animated:YES completion:nil];
  • Sharing through Mail app on simulator isn't supported.

viewServiceDidTerminateWithError: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "The operation couldn’t be completed. (_UIViewServiceInterfaceErrorDomain error 3.)" UserInfo=… {Message=Service Connection Interrupted}

[2015-03-19 Thu] # Org tips from 2015-03-18 Emacs hangout


[2015-03-22 Sun] updated

Lots of great tips in Emacs Hangout 2015-03-18. Favorites:

  • Private org drawer to prevent export:
:PRIVATE:
My super duper secret text I don't want to export.
:END:
  • C-c C-p/C-c C-n Jump over sections.
  • (setq org-hide-leading-stars t).
  • (org-bullets-mode).
  • (org-refile).
  • C-u (org-refile) jumps, no refile.
  • (helm-org-in-buffer-headings).

[2015-03-19 Thu] # Food bookmarks

[2015-03-19 Thu] # China travel backlog

[2015-03-19 Thu] # Ethiopia travel backlog

[2015-03-18 Wed] # Istanbul travel backlog

[2015-03-18 Wed] # South Korea travel backlog

[2015-03-18 Wed] # San Francisco travel backlog

[2015-03-17 Tue] # Italy travel backlog

[2015-03-17 Tue] # Burma travel backlog

[2015-03-17 Tue] # Emacs lisp debug on entry

Wanted to track down which package was enabling ido-mode on my behalf. debug-on-entry to the rescue. Pass the method name in question and you're good to go.

(debug-on-entry 'ido-mode)

When done, use cancel.

(cancel-debug-on-entry 'ido-mode)

[2015-03-16 Mon] # OS X Screencasts to animated GIF

[2015-03-15 Sun] # Writing Xcode plugins

defaults read \
    /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID

[2015-03-15 Sun] # Uninstalling Alcatraz from Xcode

$ rm -rf ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/Alcatraz.xcplugin
$ rm -rf ~/Library/Application\ Support/Alcatraz

ps. Removing all plugins:

$ rm -rf ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/*

[2015-03-14 Sat] # Prefill Emacs swiper with current region

The new swiper Emacs package is proving to be a great alternative to helm-swoop. Here's how to prefill with current region:

(defun ar/prefilled-swiper ()
  "Pre-fill swiper input with region."
  (interactive)
  (if (region-active-p)
      (let ((region-text (buffer-substring (region-beginning)
                                           (region-end))))
        (swiper region-text))
    (swiper)))

(global-set-key (kbd "C-s")
                #'ar/prefilled-swiper)

[2015-03-14 Sat] # Change Mac OS app icon

  • Open the new icon (.icns) in Preview.
  • Select all (⌘-a).
  • Copy (⌘-c).
  • Ctrl-click on app icon.
  • Select Get Info.
  • Click on app icon (top-left).
  • Paste (⌘-v).
  • Done!

overriding.png

after.png

[2015-03-11 Wed] # Hack on Emacs London meetup bookmarks

[2015-03-09 Mon] # Working with OS X and Emacs tips

From M-x all-things-emacs, Ryan McGeary's OS X/Emacs workflow.

Dotfiles

[2015-03-09 Mon] # Building ycmd

Build

$ git clone https://github.com/Valloric/ycmd.git
$ cd ycmd
$ git submodule update --init --recursive
$ ./build.sh --clang-completer

Test

$ python ycmd
  serving on http://127.0.0.1:54265

[2015-03-08 Sun] # Paris travel backlog

  • Au Passage. Small plates in fun atmosphere.
  • Berthillon Ice Cream.
  • Buvette Gastrotheque. Wine bar with small dishes.
  • Cheri Bibi, possibly hipster, underneath Sacre Coeur, good cocktails.
  • Creperie Josseline. Worth the queue. Drink Breton cider with crepes.
  • Holybelly Canal Saint Martin.
  • L'Aller Retour. The place for steak-frites.
  • L'Office. Wine bar/bistrot.
  • Le Barav'.
  • Marché d'Aligre. Authentic neighbourhood market.
  • Marché des Enfants Rouge. Small covered market. Eat at food stalls.
  • Mosquee de Paris. City mosque. Drink mint tea at courtyard under olive trees or eat in restaurant inside. North African food.
  • Musee d'Orsay.
  • Paris: A Guide To Some Of The Best Cafes In Canal St. Martin.
  • Pierre Herme. For great pastries and macarons.
  • RATP for transport info including the "carnet" of 10 tickets.
  • Rodin Museum.

[2015-03-08 Sun] # Org mode bookmarks

[2015-03-08 Sun] # Regular bookmarks

[2015-03-08 Sun] # Photography bookmarks

[2015-03-07 Sat] # Music backlog

[2015-03-07 Sat] # UX bookmarks

[2015-03-06 Fri] # Go bookmarks

[2015-03-06 Fri] # Graphics bookmarks

[2015-03-06 Fri] # Productivity bookmarks

[2015-03-06 Fri] # Courses bookmarks

[2015-03-06 Fri] # UX scrapbook

[2015-03-06 Fri] # Lifestyle bookmarks

[2015-03-06 Fri] # Mindfulness bookmarks

[2015-03-06 Fri] # Privacy bookmarks

[2015-03-06 Fri] # Romania travel backlog

[2015-03-06 Fri] # Travel bookmarks

[2015-03-06 Fri] # GitHub

[2015-03-06 Fri] # iOS imaging bookmarks

[2015-03-05 Thu] # iOS bookmarks

[2015-03-05 Thu] # Reload inputrc

Reload .iputrc from bash prompt: C-x C-r. More at bashref manual.

[2015-03-07 Sat] # Unix/Linux tips backlog

rsync --rsync-path=/usr/local/bin/rsync --partial \
    --progress --rsh=ssh john@host:/path/to/file path/to/partial/file

[2015-03-04 Wed] # Languange learning bookmarks

[2015-03-08 Sun] # London food backlog

Hammersmith

Islington

Peckham

Soho

  • BAO (Bao buns! enough said).

Sloane Square

Hammersmith

[2015-01-17 Sat] # Graphics design tools

[2014-12-30 Tue] # Books backlog

[2015-03-07 Sat] # Recipes

Tom Kha Gai soup

  • Chicken or Prawns
  • 2 kaffir lime leaves
  • 1 lemongrass stalk
  • 1 1/2 cocunut milk
  • 3/4 sliced fresh galaghal
  • 1 1/2 chicken stock or water
  • 1/2 cup mushrooms
  • 3 1/2 tbsp sugar
  • 1/2 cup of cilantro
  • 1-4 thai chillies
  • 1-2 tbsp chili oil
  • 1 green onion

Veg-Fruit juice

  • Lime
  • Ginger
  • Apple
  • Chilly
  • Celery
  • Fig
  • Blueberries

Berry Hempster

  • Hemp milk
  • Hemp protein
  • Strawberry
  • Blueberry
  • Date

[2014-12-30 Tue] # Travel gear

[2014-12-30 Tue] # Movie backlog

  • Akira Kurosawa director.
  • Awake, The Life of Yogananda.
  • Babadook.
  • Birdmane.
  • Boyhood.
  • Enter the Void, by Gaspar Noe
  • Hirokazu Koreeda director.
  • Naomi Kawaze director.
  • Nostalghia
  • Sion Sono director.
  • Solyaris
  • Stalker
  • Takashi Kitano director.
  • Takashi Miike director.
  • The Connection.
  • The Mirror
  • Uncle Boonmee Who Can Recall His Past Lives, by Apichatpong Weerasethakul.
  • Waking Life, by Rickard Linklater.

[2014-12-30 Tue] # Video backlog

[2014-12-29 Mon] # Spotted

[2014-12-03 Wed] # Emacs tips backlog

Create presentations in org and export via org-ioslide.

Yasnippet mirrors with transformations

For example:

- (${1:id})${2:foo}
{
    return $2;
}

- (void)set${2:$(capitalize yas-text)}:($1)aValue
{
    [$2 autorelease];
    $2 = [aValue retain];
}
$0

More at snippet development.

installing Emacs 24.4 on Mac OS

See Yamamoto's Mac port.

$ brew tap railwaycat/emacsmacport
$ brew install emacs-mac

Graphical system monitor

See Symon.

Elmacro

elmacro shows keyboard macros or latest interactive commands as emacs lisp.

Weather package

Monitor clipboard and automatically paste to buffer

See clipmon.

Try out stock-ticker

Try out ibuffer-vc

Sort python imports

See pyimpsort.

Private configuration

See private package.

Unify mechanism to open files

Export ASCII art

With Artist mode + ditaa for UML. Demo video.

Speed up window handling

See ace-window.

Mac OS clipboard support (from terminal)

See pbcopy.

Speedtype

See speedtype.

Building Emacs 24.4 on Linux

sudo apt-get install texinfo build-essential xorg-dev libgtk-3-dev libjpeg-dev libncurses5-dev libgif-dev libtiff-dev libm17n-dev libpng12-dev librsvg2-dev libotf-dev ./configure –with-gtk –prefix=/your/fav/prefix

Jumping around tips

See zerokspot.

use-package post

At lunaryorn.

Static blog

See org-page.

youtube-dl for Emacs

See Or emacs.

Clang indexing tool

See clang-tags.

Project management for C/C++

See Malinka.

Git modes

See git-modes.

Lots of org links

Found at dain.io.

Create custom theme

See Trường's post.

GTD Emacs workflow

See Charles Cave's notes.

Simplify file transformations

See make-it-so.

LISP editing

See lispy.

Continue comment blocks

M-j (indent-new-comment-line).

O(1) link jump

See ace-link.

Choosing magit repo

C-u C-x g (magit-status).

Project templates

See Skeletor.

Melpa recipe format

See format.

NaturalDocs for JavaScript in Emacs

checkdoc

Checks buffer for doc strings file errors.

Toggling key bingings

Squashing Commits with Magit

See post.

Editing colors

See Kurecolor.

Hide lines longer than

Export org to reveal.js

See Org-Reveal.

Beautify org

org-beautify-theme: A sub-theme to make org-mode more beautiful.

Minimalist appearance

See minimal.

Want buffer local cursor color?

See ccc.

Narrowing regions

  • C-x n n (narrow-to-region).
  • C-x n w (widen).

Linux system-wide Emacs keybindings

Org Protocol

Editing XML?

Try out nxml-mode.

Move by parens

For example, C-M-u moves backward out of one level of parentheses. More at the manual.

Debug expanded elisp macros

See Wisdom and Wonder's post.

Working with Java

Describe bindings

  • C-h b lists all bindings.
  • Narrow down with occurr or Helm!

Shell commands

  • C-u M-! (inline shell-command).
  • C-u M-| (shell-command-on-region).

Search manuals

  • info-apropos (lookup subject in all manuals).
  • emacs-index-search (lookup subject in Emacs manual).

Recursive query/replace

  • M-x find-dired RET.
  • Navigate to location, RET.
  • Add find argument (omit for all files), RET.
  • t (select all).
  • Q (query-replace).
  • Enter search/replace terms.
  • y/n for each match.
  • C-x s ! (save all).

Disable furniture

(menu-bar-mode -1)
(toggle-scroll-bar -1)
(tool-bar-mode -1)

Repeat last command

C-x z (and just z threreafter).

Replace char with a newline

  • M-x replace-string RET ; RET C-q C-j.
  • C-q (quoted-insert).
  • C-j (newline).

[2014-11-02 Sun] # Xcode6 tips

Shortcuts

  • ⌘⇧o Fuzzy file search.
  • ⌘⌥j Fuzzy file search (showing in Xcode project hierarchy).
  • ⌘⇧j Show file in Xcode project hierarchy.
  • ⌘⌥0 Show/hide utility area (right panel).
  • ⌘0 Show/hide navigation area (left panel).
  • ⇧⌘Y Show/hide debug area (bottom panel).
  • Ctrli Indent selection.
  • ⌘\ Toggle breakpoint on line.
  • ⌘/ Toggle comment.
  • ⌘[1-8] Select tabs on left panel.
  • Ctrl[1-x] Select top file navigation menu items.

Xcode features

  • Snippets.
  • Templates.
  • View debugging.
  • Simctl (send files to simulator).

Plugins of interest

  • Fuzzy autocomplete.
  • Uncrustify for indentation.
  • xcs code switch expansion.
  • Org and order (for properties).

[2014-09-11 Thu] # Resetting gnome-terminal preferences

Resetting preferences

gconftool --recursive-unset /apps/gnome-terminal

Want 256 colors?

Edit .bash_profile

export TERM="screen-256color"

Ensure .bash_profile is loaded

From gnome-terminal window:

gnome-terminal
  Edit
    Profiles...
      Edit
        Title and Command
          X Run command as login shell

Solarized

Bonus: See post to get solarized on gnome-terminal.

[2014-09-20 Sat] # Emacs lisp bookmarks

[2014-07-13 Sun] # Python bookmarks

[2015-03-05 Thu] # Git bookmarks

[2014-07-14 Mon] # HTML5 bookmarks

div{
  height: 200px;
  background: #ccc;
  display: flex;
  justify-content: center;
  align-items: center;
}

p{
  margin: auto
}

[2014-07-14 Mon] # Java bookmarks

  • Lanterna, a text GUI (a la ncurses) written in Java.