mournmail 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/mournmail/draft_mode.rb +1 -1
- data/lib/mournmail/summary.rb +20 -13
- data/lib/mournmail/summary_mode.rb +17 -16
- data/lib/mournmail/utils.rb +9 -4
- data/lib/mournmail/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 624dd4f9dacde981ede7170c87da6c8ddb3a6aae
         | 
| 4 | 
            +
              data.tar.gz: 9b1890ed2a07cdd551e4688bb88d7a80b1ff2c51
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ea1353b03b02800c953d1df9c088400ec1d5698953105f9a0b8c55f1b387d61367061e83f873a891bfbcd73c3bf7a6f17e5a0b539d1cbe16b052b104cb88b18e
         | 
| 7 | 
            +
              data.tar.gz: 97a308e32677cc6a51490d1be5f4528159760e22866ceef39d33f977ee94fadd3fd95369ab72199baf8d0f5a47cb9daad435b5d0d971e20b2013a82bcc41e2f5
         | 
    
        data/lib/mournmail/draft_mode.rb
    CHANGED
    
    | @@ -65,7 +65,7 @@ module Mournmail | |
| 65 65 | 
             
                      if !attached_messages.empty?
         | 
| 66 66 | 
             
                        attached_messages.each do |attached_message|
         | 
| 67 67 | 
             
                          mailbox, uid = attached_message.strip.split("/")
         | 
| 68 | 
            -
                          s = Mournmail.read_mail(mailbox, uid.to_i)
         | 
| 68 | 
            +
                          s, = Mournmail.read_mail(mailbox, uid.to_i)
         | 
| 69 69 | 
             
                          part = Mail::Part.new(content_type: "message/rfc822", body: s)
         | 
| 70 70 | 
             
                          m.body << part
         | 
| 71 71 | 
             
                        end
         | 
    
        data/lib/mournmail/summary.rb
    CHANGED
    
    | @@ -11,8 +11,7 @@ module Mournmail | |
| 11 11 | 
             
                include MonitorMixin
         | 
| 12 12 |  | 
| 13 13 | 
             
                def self.cache_path(mailbox)
         | 
| 14 | 
            -
                  File. | 
| 15 | 
            -
                                   CONFIG[:mournmail_directory])
         | 
| 14 | 
            +
                  File.join(Mournmail.mailbox_cache_path(mailbox), ".summary")
         | 
| 16 15 | 
             
                end
         | 
| 17 16 |  | 
| 18 17 | 
             
                def self.load(mailbox)
         | 
| @@ -179,7 +178,7 @@ module Mournmail | |
| 179 178 | 
             
                def format_line(limit = 78, from_limit = 16, level = 0)
         | 
| 180 179 | 
             
                  space = "  " * (level < 8 ? level : 8)
         | 
| 181 180 | 
             
                  s = String.new
         | 
| 182 | 
            -
                  s << format("% | 
| 181 | 
            +
                  s << format("%6d %s%s %s[ %s ] ",
         | 
| 183 182 | 
             
                              @uid, format_flags(@flags), format_date(@date), space,
         | 
| 184 183 | 
             
                              ljust(format_from(@from), from_limit))
         | 
| 185 184 | 
             
                  s << ljust(decode_eword(@subject.to_s), limit - Buffer.display_width(s))
         | 
| @@ -242,20 +241,28 @@ module Mournmail | |
| 242 241 | 
             
                def update_flag(sign, flag, update_server: true)
         | 
| 243 242 | 
             
                  if update_server
         | 
| 244 243 | 
             
                    Mournmail.imap_connect do |imap|
         | 
| 245 | 
            -
                      data = imap.uid_store(@uid, "#{sign}FLAGS", [flag]) | 
| 246 | 
            -
                       | 
| 244 | 
            +
                      data = imap.uid_store(@uid, "#{sign}FLAGS", [flag])&.first
         | 
| 245 | 
            +
                      if data
         | 
| 246 | 
            +
                        @flags = data.attr["FLAGS"]
         | 
| 247 | 
            +
                      else
         | 
| 248 | 
            +
                        update_flag_local(sign, flag)
         | 
| 249 | 
            +
                      end
         | 
| 247 250 | 
             
                    end
         | 
| 248 251 | 
             
                  else
         | 
| 249 | 
            -
                     | 
| 250 | 
            -
                    when "+"
         | 
| 251 | 
            -
                      @flags.push(flag)
         | 
| 252 | 
            -
                    when "-"
         | 
| 253 | 
            -
                      @flags.delete(flag)
         | 
| 254 | 
            -
                    end
         | 
| 252 | 
            +
                    update_flag_local(sign, flag)
         | 
| 255 253 | 
             
                  end
         | 
| 256 254 | 
             
                  if @line
         | 
| 257 | 
            -
                    s = format("% | 
| 258 | 
            -
                    @line.sub!( | 
| 255 | 
            +
                    s = format("%6d %s", @uid, format_flags(@flags))
         | 
| 256 | 
            +
                    @line.sub!(/^ *\d+ ./, s)
         | 
| 257 | 
            +
                  end
         | 
| 258 | 
            +
                end
         | 
| 259 | 
            +
             | 
| 260 | 
            +
                def update_flag_local(sign, flag)
         | 
| 261 | 
            +
                  case sign
         | 
| 262 | 
            +
                  when "+"
         | 
| 263 | 
            +
                    @flags.push(flag)
         | 
| 264 | 
            +
                  when "-"
         | 
| 265 | 
            +
                    @flags.delete(flag)
         | 
| 259 266 | 
             
                  end
         | 
| 260 267 | 
             
                end
         | 
| 261 268 | 
             
              end
         | 
| @@ -27,11 +27,11 @@ module Mournmail | |
| 27 27 | 
             
                SUMMARY_MODE_MAP.define_key("j", :next_line)
         | 
| 28 28 | 
             
                SUMMARY_MODE_MAP.define_key("m", :mournmail_visit_mailbox)
         | 
| 29 29 |  | 
| 30 | 
            -
                define_syntax :seen,  | 
| 31 | 
            -
                define_syntax :unseen,  | 
| 32 | 
            -
                define_syntax :flagged,  | 
| 33 | 
            -
                define_syntax :deleted,  | 
| 34 | 
            -
                define_syntax :answered,  | 
| 30 | 
            +
                define_syntax :seen, /^ *\d+  .*/
         | 
| 31 | 
            +
                define_syntax :unseen, /^ *\d+ u.*/
         | 
| 32 | 
            +
                define_syntax :flagged, /^ *\d+ \$.*/
         | 
| 33 | 
            +
                define_syntax :deleted, /^ *\d+ d.*/
         | 
| 34 | 
            +
                define_syntax :answered, /^ *\d+ a.*/
         | 
| 35 35 |  | 
| 36 36 | 
             
                def initialize(buffer)
         | 
| 37 37 | 
             
                  super(buffer)
         | 
| @@ -43,7 +43,8 @@ module Mournmail | |
| 43 43 | 
             
                  return if uid.nil?
         | 
| 44 44 | 
             
                  Mournmail.background do
         | 
| 45 45 | 
             
                    mailbox = Mournmail.current_mailbox
         | 
| 46 | 
            -
                     | 
| 46 | 
            +
                    s, fetched = Mournmail.read_mail(mailbox, uid)
         | 
| 47 | 
            +
                    mail = Mail.new(s)
         | 
| 47 48 | 
             
                    message = mail.render
         | 
| 48 49 | 
             
                    next_tick do
         | 
| 49 50 | 
             
                      message_buffer = Buffer.find_or_new("*message*",
         | 
| @@ -56,7 +57,7 @@ module Mournmail | |
| 56 57 | 
             
                      end
         | 
| 57 58 | 
             
                      window = Mournmail.message_window
         | 
| 58 59 | 
             
                      window.buffer = message_buffer
         | 
| 59 | 
            -
                      mark_as_seen(uid)
         | 
| 60 | 
            +
                      mark_as_seen(uid, !fetched)
         | 
| 60 61 | 
             
                      Mournmail.current_uid = uid
         | 
| 61 62 | 
             
                      Mournmail.current_mail = mail
         | 
| 62 63 | 
             
                    end
         | 
| @@ -99,7 +100,7 @@ module Mournmail | |
| 99 100 | 
             
                  uid = selected_uid
         | 
| 100 101 | 
             
                  Mournmail.background do
         | 
| 101 102 | 
             
                    mailbox = Mournmail.current_mailbox
         | 
| 102 | 
            -
                    mail = Mail.new(Mournmail.read_mail(mailbox, uid))
         | 
| 103 | 
            +
                    mail = Mail.new(Mournmail.read_mail(mailbox, uid)[0])
         | 
| 103 104 | 
             
                    body = mail.render_body
         | 
| 104 105 | 
             
                    next_tick do
         | 
| 105 106 | 
             
                      Window.current = Mournmail.message_window
         | 
| @@ -199,7 +200,7 @@ module Mournmail | |
| 199 200 | 
             
                  uid = selected_uid
         | 
| 200 201 | 
             
                  Mournmail.background do
         | 
| 201 202 | 
             
                    mailbox = Mournmail.current_mailbox
         | 
| 202 | 
            -
                    source = Mournmail.read_mail(mailbox, uid)
         | 
| 203 | 
            +
                    source, = Mournmail.read_mail(mailbox, uid)
         | 
| 203 204 | 
             
                    next_tick do
         | 
| 204 205 | 
             
                      source_buffer = Buffer.find_or_new("*message-source*",
         | 
| 205 206 | 
             
                                                         file_encoding: "ascii-8bit",
         | 
| @@ -221,12 +222,12 @@ module Mournmail | |
| 221 222 | 
             
                def selected_uid
         | 
| 222 223 | 
             
                  uid = @buffer.save_excursion {
         | 
| 223 224 | 
             
                    @buffer.beginning_of_line
         | 
| 224 | 
            -
                    if !@buffer.looking_at?( | 
| 225 | 
            +
                    if !@buffer.looking_at?(/ *\d+/)
         | 
| 225 226 | 
             
                      Mournmail.current_mail = nil
         | 
| 226 227 | 
             
                      Mournmail.current_uid = nil
         | 
| 227 228 | 
             
                      raise EditorError, "No message found"
         | 
| 228 229 | 
             
                    end
         | 
| 229 | 
            -
                    match_string(0).to_i
         | 
| 230 | 
            +
                    @buffer.match_string(0).to_i
         | 
| 230 231 | 
             
                  }
         | 
| 231 232 | 
             
                end
         | 
| 232 233 |  | 
| @@ -253,10 +254,10 @@ module Mournmail | |
| 253 254 | 
             
                  end
         | 
| 254 255 | 
             
                end
         | 
| 255 256 |  | 
| 256 | 
            -
                def mark_as_seen(uid)
         | 
| 257 | 
            +
                def mark_as_seen(uid, update_server)
         | 
| 257 258 | 
             
                  summary_item = Mournmail.current_summary[uid]
         | 
| 258 259 | 
             
                  if summary_item && !summary_item.flags.include?(:Seen)
         | 
| 259 | 
            -
                    summary_item.set_flag(:Seen, update_server:  | 
| 260 | 
            +
                    summary_item.set_flag(:Seen, update_server: update_server)
         | 
| 260 261 | 
             
                    Mournmail.current_summary.save
         | 
| 261 262 | 
             
                    update_flags(summary_item)
         | 
| 262 263 | 
             
                  end
         | 
| @@ -281,8 +282,8 @@ module Mournmail | |
| 281 282 | 
             
                      @buffer.beginning_of_buffer
         | 
| 282 283 | 
             
                      uid = summary_item.uid
         | 
| 283 284 | 
             
                      flags_char = summary_item.flags_char
         | 
| 284 | 
            -
                      if @buffer.re_search_forward( | 
| 285 | 
            -
                        @buffer.replace_match(" | 
| 285 | 
            +
                      if @buffer.re_search_forward(/^( *#{uid}) ./)
         | 
| 286 | 
            +
                        @buffer.replace_match(@buffer.match_string(1) + " " + flags_char)
         | 
| 286 287 | 
             
                      end
         | 
| 287 288 | 
             
                    end
         | 
| 288 289 | 
             
                  end
         | 
| @@ -294,7 +295,7 @@ module Mournmail | |
| 294 295 | 
             
                    raise EditorError, "No more mail"
         | 
| 295 296 | 
             
                  end
         | 
| 296 297 | 
             
                  begin
         | 
| 297 | 
            -
                    @buffer.re_search_forward( | 
| 298 | 
            +
                    @buffer.re_search_forward(/^ *\d+ u/)
         | 
| 298 299 | 
             
                  rescue SearchError
         | 
| 299 300 | 
             
                    @buffer.forward_line
         | 
| 300 301 | 
             
                  end
         | 
    
        data/lib/mournmail/utils.rb
    CHANGED
    
    | @@ -133,13 +133,18 @@ module Mournmail | |
| 133 133 | 
             
                end
         | 
| 134 134 | 
             
              end
         | 
| 135 135 |  | 
| 136 | 
            +
              def self.mailbox_cache_path(mailbox)
         | 
| 137 | 
            +
                dir = CONFIG[:mournmail_directory]
         | 
| 138 | 
            +
                host = CONFIG[:mournmail_imap_host]
         | 
| 139 | 
            +
                File.expand_path("cache/#{host}/#{mailbox}", dir)
         | 
| 140 | 
            +
              end
         | 
| 141 | 
            +
             | 
| 136 142 | 
             
              def self.read_mail(mailbox, uid)
         | 
| 137 | 
            -
                path = File. | 
| 138 | 
            -
                                        CONFIG[:mournmail_directory])
         | 
| 143 | 
            +
                path = File.join(mailbox_cache_path(mailbox), uid.to_s)
         | 
| 139 144 | 
             
                begin
         | 
| 140 145 | 
             
                  File.open(path) do |f|
         | 
| 141 146 | 
             
                    f.flock(File::LOCK_SH)
         | 
| 142 | 
            -
                    f.read
         | 
| 147 | 
            +
                    [f.read, false]
         | 
| 143 148 | 
             
                  end
         | 
| 144 149 | 
             
                rescue Errno::ENOENT
         | 
| 145 150 | 
             
                  imap_connect do |imap|
         | 
| @@ -154,7 +159,7 @@ module Mournmail | |
| 154 159 | 
             
                      f.flock(File::LOCK_EX)
         | 
| 155 160 | 
             
                      f.write(s)
         | 
| 156 161 | 
             
                    end
         | 
| 157 | 
            -
                    s
         | 
| 162 | 
            +
                    [s, true]
         | 
| 158 163 | 
             
                  end
         | 
| 159 164 | 
             
                end
         | 
| 160 165 | 
             
              end
         | 
    
        data/lib/mournmail/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: mournmail
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Shugo Maeda
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017- | 
| 11 | 
            +
            date: 2017-09-18 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: textbringer
         |