Yet Another Ag Hydra

(defhydra help/hydra/ag (:color blue
                                :hint nil)
  "
`ag', The Silver Searcher:
  Present in window:
    Search in folder:
      _j_ limit search by file type _k_ search in everything
    Search in project:
      _l_ limit search by file type _;_ search in everything
  Present in dired:
    Search in folder:
      _u_ limit search by file type _i_ search in everything
    Search in project:
      _o_ limit search by file type _p_ search in everything
  Other:
    _n_ close every other buffer _m_ close every buffer _q_ quit
"
  ("u" ag-dired-regexp)
  ("i" ag-dired)
  ("o" ag-project-dired-regexp)
  ("p" ag-project-dired)
  ("j" ag-files)
  ("k" ag)
  ("l" ag-project-files)
  (";" ag-project)
  ("n" ag-kill-other-buffers)
  ("m" ag-kill-buffers)
  ("q" nil))

Org-Mode Documents Can Generate PDFs Which Include Any Data Including Themselves

This Org-Mode document

#+LATEX_HEADER: \usepackage{attachfile}
Jon this is an Org-Mode file which generated a PDF which contains itself.
@@latex:\attachfile{orginorg.org}@@

Generates this pdf that contains itself. Open it with Adobe Acrobat (or some other tool that can handle embedded files).

You can include any data you want inside a PDF using attachfile and it is easy to extract that data.

It is a toy example but you can script everything to work with embedded data in PDF.

Continue reading “Org-Mode Documents Can Generate PDFs Which Include Any Data Including Themselves”

Consider C-s Or M-s For Key Bindings Because There Is A Lot Of Space In There

As key-binding name-spaces start to run out due to the massive expansion of packages out there today consider the C-s and the M-s name-spaces. Clicking around on my keyboard they don’t seem to be used much if at all. There is probably a reason for that and I’m going to ignore it because I want more name-space free for key-bindings.

Using Org-Mode For Disqus Comments

The Disqus commenting system is used on 2/5 blogs out there today. So I was pretty happy to discover today that Disqus allows tags within comments. The cool thing is that for Org-Mode users to post rich Disqus comments it probably just means doing an Export to HTML as HTML buffer and pasting the results into the comment box.

Can Run Emacs But Can't Compile Org-Mode After Upgrading ImageMagick With Solution

Today on my box I upgraded ImageMagick and now I can’t compile Org-Mode but I can run Emacs. Here is what I did to make Org-Mode build again on my box.

Continue reading “Can Run Emacs But Can't Compile Org-Mode After Upgrading ImageMagick With Solution”

Inviting Non Programmers To Emacs: (A) Super Text Editor

When my friends look at my computer screen I want to invite them to use Emacs. But the name “Emacs”, like Honda or Maserati tells them nothing. Honda and Maserati have advertising everywhere though! So I set a frame title that tells them something about this program! Well, they probably have to like text editors already. And if they do, then they might be interested in a Super text editor.

BTW: I am totally serious about this. I want to invite my friends to use this. Programmers or not, Emacs is still Free Software and that matters for everyone. And I find Emacs to be super. It is super. You and I know that it’s power comes from Lisp and buffers but “Super Text Editor” also works for me.

(setq frame-title-format '("" "%b - Super Text Editor "))

Super Text Editor Screenshot

Two Ways To Share Static Key Pair Values Across Different Tangled Source Files With Org-Mode Literate Programming

This post asks about how you can share static key pair values across different tangled source files. The following are my two tries.

Continue reading “Two Ways To Share Static Key Pair Values Across Different Tangled Source Files With Org-Mode Literate Programming”

Remove Every Source Block Results

Sometimes you accidentally evaluate your entire Org-Mode document resulting in result blocks everywhere. Maybe you can’t easily revert the change so you are stuck with a ton of code you don’t need. Here is a function to remove all of your result blocks. It is pretty good for documents that you probably never wanted to evaluate in the first place:

(defconst help/org-special-pre "^\s*#[+]")
(defun help/org-2every-src-block (fn)
  "Visit every Source-Block and evaluate `FN'."
  (interactive)
  (save-excursion
    (goto-char (point-min))
    (let ((case-fold-search t))
      (while (re-search-forward (concat help/org-special-pre "BEGIN_SRC") nil t)
        (let ((element (org-element-at-point)))
          (when (eq (org-element-type element) 'src-block)
            (funcall fn element)))))
    (save-buffer)))
(define-key org-mode-map (kbd "s-]") (lambda () (interactive)
                                       (help/org-2every-src-block
                                        'org-babel-remove-result)))

(Screencast) Building A Little UI To Manage Buffers

(use-package eyebrowse
  :ensure t
  :config
  (setq eyebrowse-wrap-around t)
  (eyebrowse-mode t)
  (defhydra help/hydra-left-side/eyebrowse (:color blue :hint nil)
    "
current eyebrowse slot: %(eyebrowse--get 'current-slot)
 _j_ previous _k_ last _l_ next _u_ close _i_ choose _o_ rename _q_ quit
   _a_ 00 _s_ 01 _d_ 02 _f_ 03 _g_ 04 _z_ 05 _x_ 06 _c_ 07 _v_ 08 _b_ 09"
    ("j" #'eyebrowse-prev-window-config :exit nil)
    ("k" #'eyebrowse-last-window-config)
    ("l" #'eyebrowse-next-window-config :exit nil)
    ("u" #'eyebrowse-close-window-config :exit nil)
    ("i" #'eyebrowse-switch-to-window-config)
    ("o" #'eyebrowse-rename-window-config :exit nil)
    ("q" nil)
    ("a" #'eyebrowse-switch-to-window-config-0)
    ("s" #'eyebrowse-switch-to-window-config-1)
    ("d" #'eyebrowse-switch-to-window-config-2)
    ("f" #'eyebrowse-switch-to-window-config-3)
    ("g" #'eyebrowse-switch-to-window-config-4)
    ("z" #'eyebrowse-switch-to-window-config-5)
    ("x" #'eyebrowse-switch-to-window-config-6)
    ("c" #'eyebrowse-switch-to-window-config-7)
    ("v" #'eyebrowse-switch-to-window-config-8)
    ("b" #'eyebrowse-switch-to-window-config-9))
  (global-set-key (kbd "C-M-e") #'help/hydra-left-side/eyebrowse/body))