-
-
Save imathis/2219214 to your computer and use it in GitHub Desktop.
| desc "Edit a post (defaults to most recent)" | |
| task :edit_post, :title do |t, args| | |
| args.with_defaults(:title => false) | |
| posts = Dir.glob("#{source_dir}/#{posts_dir}/*.*") | |
| post = (args.title) ? post = posts.keep_if {|post| post =~ /#{args.title}/}.last : posts.last | |
| if post | |
| puts "Opening #{post} with #{editor}..." | |
| system "#{ENV['EDITOR']} #{post} &" | |
| else | |
| puts "No posts were found with \"#{args.title}\" in the title." | |
| end | |
| end |
@imathis Weird...I just have to hit Enter a time or two to get back to a clean prompt.
I believe that this would be a worthwhile addition. It doesn't take away the user's ability to run things manually if they still want to, but it could be welcome functionality for other users. Note that I am in the group of users for which this probably wouldn't work: within the _posts directory I have a directory called "published" for all my published things, and a "drafts" folder for all my drafts. I made a small hack to 'rake isolate' to handle directories. But since I keep all my work-in-progress in a separate folder--and since I don't have a ton of drafts--I don't have to wade through a bunch of extraneous posts to find what I want to work on. But I still think this would be a good idea, if it can be implemented correctly.
Pesonally I added a task to my Rakefile:
desc "Open newly generated post in Emacs"
task :edit, :filename do |t, args|
puts "Opening post in Emacs"
`emacsclient -n #{args.filename}`
end
You could replace emacsclient -n with an editor variable at the top of the Rakefile (like ssh_user or deploy_branch). Also adding the globbing as a default if there is no args.filename would be easy, but personally I modified new_post and added Rake::Task["edit"].invoke(filename).
I have this hacked up in my .bashrc (dirty, but it works...)
pedit() { find source/_posts/ -name "*$1*" -exec $EDITOR {} \; ;}