6 ms·
Show HN: Emacs Mini Manual
- pimgeek 12y agoThis is really impressive, I'm starting to try Racket coding with Emacs + Geiser Mode. And I really need some sort of Guides to rely on once in a while. The following words also sounds convincing: "If you are a programmer, you should try to automate thing as much as possible. One way of doing this is using a good editor that automates many menial and tedious tasks. For example, one of the thing that annoys me is using the command cd to change into a deep directory path like this: [/path/to/a/very/long/long/long/long/long/long/..../directory/ ]"
- tuhdo 12y agoGreat. Keep up using Emacs and you won't regret, especially using it for writing Lisp code.
- cmpitg 12y agoYou might want to combine Geiser with Quack[1] for best result with Scheme. Also, I think it's worth a shot to have a look at the fairly new Racket-mode[2] written by Greg[3]. Geiser + Quack are rather old and for Scheme in general, Racket-mode focuses on and is tightly integrated with Racket. [1] http://www.neilvandyke.org/quack/ http://www.neilvandyke.org/quack/ [2] https://github.com/greghendershott/racket-mode https://github.com/greghendershott/racket-mode [3] http://www.greghendershott.com/ http://www.greghendershott.com/
- klibertp 12y agoracket-mode is good in that it at least indents Racket code properly. It implements it's own integration with the REPL, IIRC, which makes working with Geiser at the same time not ideal. But still manageable, just a bit of tweaking needed. Disclaimer: I may remember wrong or it may have changed since I was last configuring Racket support in Emacs, so don't get discouraged and just go check racket-mode anyway :)
- look_lookatme 12y agoRelated to that last part... after 10 or so years of using Emacs off and on (mostly when editing files remotely), I went full time with it a couple of months ago. In the beginning I used projectile the way the OP illustrates it works, but then I began streamlining and customizing that workflow even more. An example of this is that as part of my job I have to maintain a handful of wordpress sites. We keep these sites in one git repo, but they are different sites altogether so the layout would be: /sites/www/site1 /sites/www/site2 (and so on) ... with each site(N) being distinct Wordpress installations. One of the annoying aspects of maintaining a bunch of Wordpress sites like this is that they all contain the WP framework code (which I never edit) and all of the code that is edited frequently tends to be in each sites respective theme, all of which also tend to have the same filenames. So if you wanted to visit the header template for site1 you would fire up projectile, type in "site1/wp-content/themes/header.php" or some such and you'd probably get a hit. If you just typed in "header.php" you'd end up with a bunch of different hits, including Wordpress framework files, multiplied by the number of sites. Projectile has a mechanism for ignoring files[1], which is nice for omitting framework code, but I wanted a workflow that was "On keystroke, prompt me for sitename and open a projectile prompt that autocompletes files for that site only". Turns out this is really easy. While Projectile will normally use git to determine its project root, you can actually add a .projectile file to any directory and that directory then becomes a project root. From there it's easy to write an interactive elisp function that will ask you which projectile project to load, then fire up the autocomplete. Bind that to a global key and it becomes really easy to break down your large-ish codebase into logical sub-projects and get to business quickly. (Haha, I just realized how emacs-y that tip was.) Lastly, if you find your .emacs configuration becoming unwieldy, or if you are like me and originally broke out mode specific configuration into distinct files (php.el, ruby.el, web.el) I can't recommend enough switching your config to one big org-mode + babel[2] file. Doing so was my first foray into org-mode and literate programming and I can't recommend it enough, if only for keeping your Emacs configuration sanely documented. I used this config as an example for getting started: https://github.com/larstvei/dot-emacs/blob/master/init.org https://github.com/larstvei/dot-emacs/blob/master/init.org [1] https://github.com/bbatsov/projectile#ignoring-files https://github.com/bbatsov/projectile#ignoring-files [2] http://orgmode.org/worg/org-contrib/babel/intro.html http://orgmode.org/worg/org-contrib/babel/intro.html
- davexunit 12y agoI use Emacs + Geiser + Guile on a regular basis and it's the best programming environment I've ever used, hands down.
- baddox 12y agoThat's a pretty good introduction. I've been using emacs for years, but this post reminds me that I've never gotten around to setting up a satisfactory project management system, so that I can grep and find files across the whole project.
- tuhdo 12y agoYou should use Projectile: https://github.com/bbatsov/projectile https://github.com/bbatsov/projectile . Projectile allows you to Grep a project under VCS easily. And use Helm with it like this: http://tuhdo.github.io/helm-intro.html#sec-28 http://tuhdo.github.io/helm-intro.html#sec-28
- technomancy 12y agoProjectile is neat, but you don't need anything fancy to grep and find across the project. I just have a single binding to switch to an eshell, and running rgrep or find commands automatically pops up a hyperlinked buffer containing results. Having a shell function to cd to the project root helps too.
- baddox 12y agoYeah, right now my workflow is just to use silver searcher in my (non-emacs) terminal which is always in a window right next to emacs. Eventually I'll take a few moments to integrate the workflow into emacs.
- tuhdo 12y agoYou can use Ag right inside Emacs with this package: https://github.com/Wilfred/ag.el https://github.com/Wilfred/ag.el If you use Helm, there's helm-ag: https://github.com/syohex/emacs-helm-ag https://github.com/syohex/emacs-helm-ag Use MELPA and package manager to install the above packages: http://tuhdo.github.io/emacs-tutor3.html#sec-4-1 http://tuhdo.github.io/emacs-tutor3.html#sec-4-1
- MarcScott 12y agoThis looks like an excellent resource for those new to emacs, and a good reference for those already using it. All written in org-mode as well. Thank you
- jzzskijj 12y agoDefinitely good for someone already using it. At least in my case.
- rafaelbeirigo 12y agoMini Mini Manual... ;) Great material!
- yoanizer 12y agoI don't use Emacs, but this is great. Nice work.
- TeMPOraL 12y agoShameless plug: always happy to see Nyan Mode being used ;).
- neonscribe 12y agoNice work. It would be nice if you can find a native English speaker, or at least someone with stronger English skills, to edit (in the literary sense) your prose. You manage to get the point across, but the grammatical errors are distracting.
- tuhdo 12y agoThank for your feedback. I will improve it. Please tell me my mistakes , I will fix it quick. Even a little is better than none. For your convenience, feel free to open a new issues at https://github.com/tuhdo/tuhdo.github.io https://github.com/tuhdo/tuhdo.github.io
- neonscribe 12y agoAlmost every sentence needs work. What you need is a writer who is fluent in English to spend a few hours going over it.
- tuhdo 12y agoI've fixed some mistakes in sections before the "Concepts" section (which is the core of the manual). Hopefully it improves reading before getting the actual part.
- avtar 12y agotuhdo, I can offer some assistance and pull requests after this weekend. Do you spend time on Freenode or any other IRC networks?
- emlearn5 12y agoI learned how to record the window layout with register, but I also want it to be recorded for next time. but I would like to record this for next time I use emacs. How to do this?
- tuhdo 12y agoYou need extension package. Workgroup2 is great for this: https://github.com/pashinin/workgroups2 https://github.com/pashinin/workgroups2 With workgroups2, windows configurations can be stored in a workgroup, and you can create as many workgroups and named it; later, you can switch back. Because you can name your window configurations, you don't have the burden to remember which to which in registers. You can also save your window configurations to continue using them in later Emacs sessions. You can issue a command to save current session with workgroup2.
- wyclif 12y agoWow, this is great but I'm a vim user. I'd really love to have something in this format for vim. Maybe something like that already exists but I just don't know about it yet?
- vadskye 12y agoI would like to write something like this for Vim, but I don't know how to easily create animated screencaps like those displayed here. Does anyone know a good tool for that?
- gnuvince 12y agotuhdo: just to clarify, I am Vincent Foley-Bourgon and yes, I wrote both "Why I (Still) Use Emacs" articles. I sometimes omit the last part of my last name since it's often butchered by people who don't speak French. By the way, thanks for putting both of them up there: I forgot about the one I put up on Wordpress :D
- tuhdo 12y agoAhhh this is good to know Thanks for writing such a good article, so people can have a better glimpse of what Emacs is capable of. It saved my time because I don't have to research all of those and make my article even longer :D
- klibertp 12y agohttp://tuhdo.github.io/emacs-tutor.html#text-7-29 http://tuhdo.github.io/emacs-tutor.html#text-7-29 - the excersise: C-f to the beginning of each character group and add whitespace. No, don't! Use C-s or even better iy-goto-char (https://github.com/doitian/iy-go-to-char https://github.com/doitian/iy-go-to-char). This scales much better. You can also set mark at first 'b' in the first line, go to first 'b' in the last line and use C-x r t to insert a string across all the lines. You can of course use regex-replace, too: \(a+\|b+\|c+\|d+\) -> \1 <- space here And so on and on. It's good to see well written "introductory courses", like this one, but what about "Emacs for black belts"? "Advanced Emacsology"? There is one book about writing Emacs extensions (http://shop.oreilly.com/product/9781565922617.do http://shop.oreilly.com/product/9781565922617.do), but that's all there is. Does anyone know about another source of knowledge about the most advanced Emacs techniques?
- tuhdo 12y agoI've fixed that. I only wanted something simple for new users to try out the new feature (Macro). This manual is only about stock Emacs features, not adding complexity with 3rd party packages. When I first introduced on Reddit, someone advised me to stick to stock Emacs (which I did) because they see this section using an external package (ggtags) for browsing kernel source code: http://tuhdo.github.io/emacs-tutor.html#sec-8 http://tuhdo.github.io/emacs-tutor.html#sec-8. When people are good with the basics, they understand what they need and find appropriate packages. If you want advance techniques, the primary resource should be Emacs Lisp Manual, Emacs docstrings, and learn code written by package maintainers. EDIT: Even before working with Emacs Lisp, using 3rd party packages already makes Emacs much more advanced.
- klibertp 12y ago> If you want advance[d] techniques, the primary resource should be Emacs Lisp Manual, Emacs docstrings, and learn[ing] code written by package maintainers. (I'm also learning English, so I know that having your mistakes pointed out helps - that's what the [] are for in the quote) Yeah, been there, done that. :) Docstrings and easy access to source code (find-function, find-library) are a great strength of Emacs - not only the documentation is of great quality, but it's mostly up-to-date. But going through packages' sources is not always pleasant: some authors are not very good with English (like me, for example), others have a dislike for writing comments, yet others are biased against cl-lib or too much in favour of eieio and so on. It's still a great learning experience, but it takes more time than it could take if the content was presented more systematically and in a more readable manner. Like in a book. Or a series of articles, or something. Note: I am thinking about writing something like this myself, but I don't feel confident enough just yet. > someone advised me to stick to stock Emacs I think it's stupid advice - bad for both programmers and non-programmers. If you're a programmer, using Emacs is (should be) about endless customization, tweaking and - you guessed it - programming your editor to do your work for you. In this case learning to use C-f instead of right arrow is so stupid it hurts - you should learn about define-key, make-sparse-keymap, global-set-key, describe-keymap (and generally describe-...) and of course apropos instead. I guarantee it will take you less time than making C-f a habit! That's the way I learned Emacs: I started learning with Emacs Lisp Manual, not a tutorial or Emacs Manual and it got me up to speed in no time at all. Instead of learning what keys to press to do something it's better - again, for programmers - to just learn the name of a function which does what you want. It's true that I don't use many standard keybindings and I remapped most of them, but this is ok, because this is my editor and nobody else is going to use it anyway. And when I started fiddling with packages I already knew how to hack them into shape and dig through their code, which is infinitely better than just knowing where to find them and praying they have any docs at all :) And for non-programmers, sticking with vanilla Emacs makes it unnecessarily painful experience, with 2/3 of useful features disabled by default and without access to the functionality available via packages, which I'd call really essential. For non-programmers vanilla Emacs is not that much better than Notepad++ or Gedit (if at all, considering weird key bindings!) and it's pointless to stick to it just to "learn about Emacs philosophy" - non-programmers won't benefit from "the Emacs way" (which is: being an infinitely programmable editor!) at all. It's much better for them to grab some Emacs starter kit, like Prelude or any other starter kit out there and then use customize-... interface to tweak what they need.
- Yuioup 12y agoI've seen this page before but couldn't get anything to work in Windows.
- tuhdo 12y agoDo you use this patched Emacs for Windows: http://semantic.supelec.fr/popineau/programming-emacs.html#sec-2 http://semantic.supelec.fr/popineau/programming-emacs.html#s... ? According to the guide in that page: "There is no installer. All you have to do is: - Unpack in a location like c:\Local\ - Setup a shortcut on your desktop to c:\Local\Emacs\bin\emacsclientw.exe - Double click the new shortcut." Or just use the 32 bit version from official GNU Emacs homepage. Could you tell me what the problems are? I use Emacs on Windows fine, with all my 3rd-party packages. At least with stock Emacs, it should work on Windows.
- Yuioup 12y agoHey that look awesome! It's been a while since I last tried Emacs (I'm a vim on Windows user) but I will definitely check this out.
- nodivbyzero 12y agoWell done.
- mattattaque 12y agoAs a diehard vim guy, I've always wanted to at least dabble a bit in emacs to see what it's all about. This will do nicely. Thanks.