-
-
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 |
@Crosse, Yeah I just tried that again. A really weird behavior indeed. I had to ctrl+c to get it to quit after it output it's message. There must be a better way.
Why do you think this is complex?
The headaches you are having in this thread illustrate the point. ;-)
A decent editor can handle this with its file browser or a project tree of some sort, but that isn't an argument that this wouldn't be useful.
I guess the reason why I find a feature like this suspicious is that it's orthogonal to Octopress's job, generating a blog. Other frameworks, like Rails, don't have anything like this either, and with good reason. IMO it belongs as an alias in your personal ~/.bashrc.
(Just a guess, but: Perhaps you're trying to replicate Wordpress here with its editing functionality? I actually like how Octopress isn't like Wordpress and treats me like a developer.)
@joliss I think there's definitely a difference between challenge and complexity. The challenge may be due to my lack of knowledge in this area (why I asked for help). I'm not trying to replicate Wordpress. Jekyll's job is generating the blog. Octopress is trying to be both a nice default theme and an environment that makes it easier to work with Jekyll. Many of the rake tasks may be considered overly complex and not treating people like a developer. For example, setting up someone's blog for GitHub deployment based on their repo url is not simple or straightforward. It used to be a way harder multistep process. It was well documented but people kept messing up, so I automated it.
If I can't make this feature work like I want it, I won't include it in Octopress. I'm not interested in supporting something that annoys users. That being said, once you create a new post, I wish it was smoother to get into writing that post, especially since you can't just use shell command history to find the file created and pass it to your editor.
You may be right, this might be something that I can't get right and it doesn't belong in Octopress. I'm not sure yet.
once you create a new post, I wish it was smoother to get into writing that post, especially since you can't just use shell command history to find the file created and pass it to your editor.
I have this hacked up in my .bashrc (dirty, but it works...)
pedit() { find source/_posts/ -name "*$1*" -exec $EDITOR {} \; ;}
@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)
.
@imathis, I guess I need to learn to read better! You sure did mention exactly what I proposed...sorry about the noise. Re: backgrounding when the lookup fails:
That's typically what I expect when I purposefully background something and it immediately exits. It's not pretty, but it's consistent with what I see anytime I background something in a terminal. I agree, though, it'd be nice if it could be handled better.