1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290
|
2012-03-17 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix the condition of confirmation on posting
a tweet. The variable `twittering-request-confirmation-on-posting'
had been ignored on posting a reply. Thanks to Takashi Masuda who
reported the problem.
(twittering-edit-post-status): fix the condition of confirmation
on posting a tweet.
* twittering-mode.el: Support error messages formatted as JSON.
(twittering-get-error-message): receive a new argument
CONNECTION-INFO and support error messages sent as JSON.
(twittering-http-get-default-sentinel): send CONNECTION-INFO to
the function `twittering-get-error-message'.
(twittering-http-get-list-sentinel-base): likewise.
(twittering-http-post-default-sentinel): likewise.
(twittering-http-post-destroy-status-sentinel): likewise.
* twittering-mode.el: Parse a HTTP response body whose status code
is 401 or 404.
(twittering-get-error-message): try to parse a HTTP respose body
whose status code is 401 or 404.
* twittering-mode.el: Display an error message from the
'help/configuration' API.
(twittering-update-service-configuration-sentinel): display an
error message in a HTTP response body.
* twittering-mode.el: Record HTTP response headers on debug mode.
(twittering-get-response-header): record the extracted HTTP
response header if `twittering-debug-mode' is non-nil.
* twittering-mode.el: Remove the function
`twittering-make-field-properties'. It is unnecessary because
`twittering-render-a-field' automatically add a field property.
(twittering-get-common-properties): update the docstring.
(twittering-make-field-properties): removed.
(twittering-make-field-properties-of-popped-ancestors): removed.
(twittering-make-properties-of-popped-ancestors): new function.
(twittering-show-replied-statuses): use
`twittering-make-properties-of-popped-ancestors' instead of
`twittering-make-field-properties-of-popped-ancestors'.
* twittering-mode.el: Add a new function
`twittering-make-field-id-from-id' which generates a field ID from
a tweet ID instead of a tweet alist.
(twittering-make-field-id-from-id): new function.
(twittering-make-field-id): reimplemented with the new function
`twittering-make-field-id-from-id'.
* twittering-mode.el: Add a new command `retrieve-single-tweet'
to the function `twittering-call-api'.
(twittering-retrieve-single-tweet-sentinel): new function.
(twittering-call-api): add `retrieve-single-tweet' as a new
command.
(twittering-make-alist-of-forbidden-tweet): new function, which
generates a dummy alist for a forbidden tweet.
(twittering-make-alist-of-non-existent-tweet): new function, which
generates a dummy alist for a non-existent tweet.
* twittering-mode.el: Add functions for finding a region of
replied statuses with the common base status.
(twittering-replied-statuses-visible-p): add a docstring.
(twittering-get-beginning-of-visible-replied-statuses): new
function, which returns the beginning position of replied statuses
rendered by `twittering-show-replied-statuses'.
(twittering-get-end-of-visible-replied-statuses): new function,
which returns the end position of replied statuses rendered by
`twittering-show-replied-statuses'.
(twittering-hide-replied-statuses): determine a region being
deleted by using the new functions.
* twittering-mode.el: Fix the behavior of the function
`twittering-replied-statuses-visible-p' on a header or a footer.
(twittering-replied-statuses-visible-p): return nil on a header or
a footer.
* twittering-mode.el: Add a new function
`twittering-render-replied-statuses'.
(twittering-render-replied-statuses): new function, which renders
replied statuses even if some replied statuses have been already
rendered.
(twittering-show-replied-statuses): reimplemented with the new
function `twittering-render-replied-statuses'.
* twittering-mode.el: `twittering-redisplay-status-on-each-buffer'
supports various symbols as a specifier of regions to be
redisplayed.
(twittering-redisplay-status-on-each-buffer): support other
symbols besides `need-to-be-updated' as a specifier of regions to
be redisplayed.
* twittering-mode.el: Support iterative retrieval of a series of
replies.
(twittering-retrieve-single-tweet-sentinel): redisplay some
regions related to the retrieved status.
(twittering-render-a-tweet-with-delay): new function.
(twittering-toggle-or-retrieve-replied-statuses): new function.
(twittering-mode-map): bind "R" to the new function
`twittering-toggle-or-retrieve-replied-statuses'.
* twittering-mode.el: Add a new function `twittering-id-to-time'
that extracts a corresponding time from an ID generated by
Snowflake.
(twittering-snowflake-epoch-time): new function.
(twittering-id-to-time): new function.
* twittering-mode.el: Use the time extracted from ID for forbidden
or non-existent tweets.
(twittering-make-alist-of-forbidden-tweet): use the time extracted
from ID.
(twittering-make-alist-of-non-existent-tweet): likewise.
* twittering-mode.el: Update the docstring of the variable
`twittering-initial-timeline-spec-string'.
(twittering-initial-timeline-spec-string): update the docstring.
2012-03-04 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix the escape of a query string in a search
timeline spec.
(twittering-timeline-spec-to-string): correctly escape a query of
a search timeline spec.
(twittering-extract-timeline-spec): correctly decode a query
string with escaped characters.
* test/test-twittering-mode.el: Add tests for search timeline
specs.
* twittering-mode.el: Support ":exclude-re/REGEXP/SPEC"
timelines.
(twittering-timeline-spec-to-string): support the new timeline
spec ":exclude-re/REGEXP/SPEC".
(twittering-extract-timeline-spec): likewise.
(twittering-timeline-spec-composite-p): likewise.
(twittering-get-base-timeline-specs): likewise.
(twittering-generate-composite-timeline): likewise.
(twittering-current-timeline-referring-id-table): likewise.
(twittering-current-timeline-data): likewise.
* test/test-twittering-mode.el: Add tests for exclude-re timeline
specs.
2012-02-28 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix the function
`twittering-current-timeline-referring-id-table'. There was the
possibility that the function returns nil for a composite timeline
spec. This made native retweets disappear on the composite
timeline. Thanks to Boots_of_Lead who reported the bug.
(twittering-current-timeline-referring-id-table): for a composite
timeline spec, return the table of the first primary base spec
with a non-nil referring table. This function previously returned
the first direct base timeline spec, which might be nil.
* twittering-mode.el: Add an explanation to the docstring of
`twittering-new-tweets-rendered-hook'.
(twittering-new-tweets-rendered-hook): add an explanation to the
docstring.
* twittering-mode.el: Reimplement jojo-mode as a hook.
(twittering-add-statuses-to-timeline-data): remove statements for
jojo-mode.
(twittering-initialize-global-variables-if-necessary): add
`twittering-jojo-mode-hook-function' to the new tweets rendered
hook.
(twittering-jojo-mode-p): removed.
(twittering-update-jojo): removed.
(twittering-post-predicted-message-like-jojo): new function.
(twittering-jojo-mode-hook-function): new function.
* twittering-mode.el: Display the replied tweet on the pop-up
edit buffer.
(twittering-edit-set-help-string): new function.
(twittering-edit-setup-help): add a new argument REPLY-TO-ID.
(twittering-update-status-from-pop-up-buffer): send REPLY-TO-ID to
the function `twittering-edit-setup-help'.
* twittering-mode.el: Generate a description of a edited tweet by
`twittering-generate-format-status-function'.
(twittering-edit-set-help-string): do not add a text property to
STR.
(twittering-edit-setup-help): generate a description by
`twittering-generate-format-status-function'.
* twittering-mode.el: Render a help on a pop-up edit buffer as a
read-only text. The replied tweet can be copied on the edit
buffer. Rendering a help as a read-only text also suppresses
strange behavior of overlays exceeding the size of the current
window.
(twittering-help-overlay): removed.
(twittering-help-overlay-priority): removed.
(twittering-edit-help-end-pos): new variable.
(twittering-edit-mode): remove the parent mode to suppress
invocation of hooks for `text-mode'. The trick for disabling
font-lock mode is introduced. `twittering-edit-help-end-pos' is
prepared as a buffer-local variable.
(twittering-edit-extract-status): determine the region being
extracted with `twittering-edit-help-end-pos'.
(twittering-edit-reset-status): new function.
(twittering-edit-set-help-string): render a help for
`twittering-edit-mdoe' as a read-only text.
(twittering-update-status-from-pop-up-buffer): move the cursor
just behind the help.
(twittering-edit-next-history): extract the edited message by
`twittering-edit-extract-status' and reset it by
`twittering-edit-reset-status'.
(twittering-edit-previous-history): likewise.
* twittering-mode.el: Dynamically determine an end position of a
help on a pop-up edit buffer.
(twittering-edit-help-end-pos): removed.
(twittering-edit-mode): remove the variable
`twittering-edit-help-end-pos'.
(twittering-edit-get-help-end): new function, which replaces the
buffer-local variable `twittering-edit-help-end-pos'.
(twittering-edit-extract-status): use the function
`twittering-edit-get-help-end' instead of the variable
`twittering-edit-help-end-pos'.
(twittering-edit-reset-status): likewise.
(twittering-edit-set-help-string): likewise.
(twittering-update-status-from-pop-up-buffer): likewise.
* twittering-mode.el: Control an attribute of a tweet being edited
with an alist bound to `twittering-edit-mode-info'.
(twittering-reply-recipient): removed.
(twittering-edit-mode-info): new variable, which is an alist
specifying the attribute of the tweet being edited.
(twittering-update-status-from-pop-up-buffer): control the
attribute of the tweet being edited with the new variable
`twittering-edit-mode-info'.
(twittering-edit-post-status): determine the attribute of the
tweet being posted by the variable `twittering-edit-mode-info'.
* twittering-mode.el: Allow a reply where a mention is not placed
on the beginning.
(twittering-edit-post-status): allow a reply where a mention is
not placed on the beginning.
(twittering-update-status-from-minibuffer): likewise.
* twittering-mode.el: Send the cited ID to the function
`twittering-update-status' when editing an organic retweet.
(twittering-edit-skeleton-alist): mention that IN-REPLY-TO is
non-nil when a tweet is edited as an organic retweet.
(twittering-update-status-from-minibuffer): post a tweet as a
reply only if TWEET-TYPE is the symbol `reply'.
(twittering-update-status): mention that REPLY-TO-ID is non-nil
when a tweet cites or replies to a certain tweet.
(twittering-organic-retweet): send the ID of the cited tweet to
`twittering-update-status' as REPLY-TO-ID.
* twittering-mode.el: Generate a help on an edit buffer from the
buffer-local variable `twittering-edit-mode-info'.
(twittering-edit-setup-help): generate a help from the
buffer-local variable `twittering-edit-mode-info'.
(twittering-update-status-from-pop-up-buffer): remove obsolete
arguments from the invocation of `twittering-edit-setup-help'.
* twittering-mode.el: Enable to toggle a reply and a normal tweet
on an edit buffer.
(twittering-edit-mode-map): bind "C-c C-r" to
`twittering-edit-toggle-reply'.
(twittering-edit-setup-help): display a help for
`twittering-edit-toggle-reply'.
(twittering-edit-toggle-reply): new function, which toggles
whether the tweet being edited will be sent as a reply or not.
* twittering-mode.el: Confirm that the edited message should be
sent as a normal tweet when it has been edited as a reply but it
does not include a mention to the cited user.
(twittering-edit-post-status): confirm that the edited message
should be sent as a normal tweet when it has been edited as a
reply but it does not include a mention to the cited user.
* twittering-mode.el: Support a new format specifier "%u" for
`twittering-retweet-format'. It is replaced with the URL of the
cited tweet.
(twittering-retweet-format): update the docstring.
(twittering-get-status-url-from-alist): new function.
(twittering-organic-retweet): support a new format specifier
"%u".
2012-02-12 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Accept a symbol as FUNC of a composite
timeline spec ":exclude-if/FUNC/SPEC".
(twittering-extract-timeline-spec): accept a symbol as FUNC of
a composite timeline spec ":exclude-if/FUNC/SPEC".
* test/test-twittering-mode.el: Add a test of an exclude-if
timeline spec with a symbol as FUNC.
* twittering-mode.el: Give the help overlay a priority specified
by `twittering-help-overlay-priority'.
(twittering-help-overlay-priority): new variable.
(twittering-edit-setup-help): give the overlay a priority
specified by `twittering-help-overlay-priority'.
2012-02-11 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Use an after-string property instead of
a before-string property to show the help on an edit buffer.
Thanks to irie who discoverd the problem and wrote a suitable
code.
(twittering-edit-setup-help): set an after-string property of the
overlay for the help and give high priority to the overlay.
* twittering-mode.el: Remove duplicates in a merge timeline spec.
(twittering-extract-timeline-spec): remove duplicates in a list of
timeline specs in a merge timeline spec.
* test/test-twittering-mode.el: Add a test of reducing duplicates
in a merge timeline spec.
* twittering-mode.el: Remove duplicates in the list of primary
base timeline specs.
(twittering-get-primary-base-timeline-specs): remove duplicates in
the list of primary base timeline specs.
* test/test-twittering-mode.el: Add a test of dependence of
composite timeline specs.
* twittering-mode.el: Fix the behavior of the function
`twittering-get-current-status-head' for the position following
the header. Thanks to lemit who reported the problem.
The previous one made `twittering-replied-statuses-visible-p'
return an incorrect value on the position following the header.
(twittering-get-current-status-head): fix the behavior when POS
points to the beginning of a field and also points to the end of
another field. The function previously returned the head of the
previous field.
* twittering-mode.el: Fix the behavior of `twittering-get-id-at'
on the head of the footer.
(twittering-get-id-at): use `twittering-get-current-status-head'
instead of `twittering-get-previous-status-head'. On the head of
the footer, the former returns the head of the footer and the
latter returns the head of the status followed by the footer.
2012-02-06 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Delete a specified status from composite
timeline buffers.
(twittering-get-dependent-timeline-specs): new function.
(twittering-delete-status-from-data-table): delete the given
status from buffers bound to composite timelines.
* twittering-mode.el: Decode a HTTP response body before invoking
a sentinel.
(twittering-decode-response-body): new function.
(twittering-send-http-request): decode the response body by
`twittering-decode-response-body' before invoking the sentinel.
(twittering-http-get-default-sentinel): do not decode the response
body here.
* twittering-mode.el: Delete a status after the successful
response for the `destroy-status' API is received.
(twittering-http-post-destroy-status-sentinel): new function.
(twittering-call-api): use the new function
`twittering-http-post-destroy-status-sentinel' as the sentinel of
`twittering-http-post' for the command `destroy-status'.
(twittering-delete-status): do not delete the specified status
here.
* twittering-mode.el: `twittering-render-a-field' moves the
cursor even if the given status is not rendered.
(twittering-render-a-field): move the cursor even if the given
status is not rendered.
* twittering-mode.el: Do not use the return value of the function
`twittering-render-a-field'.
(twittering-render-timeline): do not use the return value of
`twittering-render-a-field'.
(twittering-show-replied-statuses): likewise.
* twittering-mode.el: `twittering-render-a-field' returns nil if
the status is not rendered.
(twittering-render-a-field): return nil if the status is not
rendered.
(twittering-render-timeline): show replied statuses only if the
status is rendered.
* twittering-mode.el: Add a docstring for
`twittering-render-timeline'.
(twittering-render-timeline): add a docstring.
* twittering-mode.el: Add `twittering-rerender-timeline-all' that
re-renders tweets after clearing the buffer.
(twittering-render-timeline): modify arguments.
(twittering-rerender-timeline-all): new function.
(twittering-get-managed-buffer): replace the invocation of the
function `twittering-render-timeline' with that of the function
`twittering-rerender-timeline-all'.
(twittering-icon-mode): likewise.
(twittering-toggle-reverse-mode): likewise.
(twittering-erase-old-statuses): likewise.
* twittering-mode.el: Add a new hook
`twittering-new-tweets-rendered-hook'.
(twittering-rendered-new-tweets-spec): new variable.
(twittering-rendered-new-tweets-spec-string): new variable.
(twittering-rendered-new-tweets): new variable.
(twittering-new-tweets-rendered-hook): new hook.
(twittering-http-get-default-sentinel): call
`twittering-render-timeline' with non-nil INVOKE-HOOK.
(twittering-add-statuses-to-timeline-data): likewise.
(twittering-render-timeline): add a new argument INVOKE-HOOK.
(twittering-rerender-timeline-all): call
`twittering-render-timeline' with nil INVOKE-HOOK.
* twittering-mode.el: Unread status notifier uses the new hook
invoked when rendering tweets. This corrects the number of unread
statuses on composite timelines.
(twittering-update-unread-status-info): modified for use in
`twittering-new-tweets-rendered-hook'.
(twittering-enable-unread-status-notifier): use
`twittering-new-tweets-rendered-hook' instead of
`twittering-new-tweets-hook'.
* twittering-mode.el: Add a new hook `twittering-mode-init-hook'.
The new hook is invoked after initializing global variables.
(twittering-mode-init-hook): new hook invoked after initializing
global variables.
(twittering-mode-hook): add a docstring.
(twittering-initialize-global-variables-if-necessary): invoke
hooks specified by `twittering-mode-init-hook'.
2012-01-29 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Follow the header conventions. Thanks to
Jonas Bernoulli who reported the nonfulfillment.
* twittering-mode.el: Expand a path before calling the function
`alpaca-after-find-file'.
(twittering-read-from-encrypted-file): expand FILE into a full
path. Since "alpaca.el" uses the `buffer-file-name' as the prefix
of the temporary file, it must be a full path.
* twittering-mode.el: Add a new argument of the function
`twittering-render-a-field' for rendering a tweet without a
separator.
(twittering-render-a-field): add a new argument for rendering a
tweet without a separator.
* twittering-mode.el: Render the header and footer line.
(twittering-make-field-id-of-timeline-oldest-end): new function.
(twittering-make-field-id-of-timeline-latest-end): new function.
(twittering-field-id-is-timeline-oldest-end): new function.
(twittering-field-id-is-timeline-latest-end): new function.
(twittering-render-timeline): render the header and footer on
rendering the whole of the buffer. In that case, the function now
moves the cursor to the normal field not to the header nor
footer.
(twittering-mode-map): bind "G" to `twittering-goto-last-status'
instead of `end-of-buffer'.
(twittering-enter): update the timeline when the function is
invoked on the header or footer.
(twittering-goto-last-status): new function.
(twittering-get-last-status-head): new function.
(twittering-goto-first-normal-field): new function.
(twittering-goto-last-normal-field): new function.
(twittering-get-first-normal-field-head): new function.
(twittering-get-last-normal-field-head): new function.
(twittering-goto-next-status): move the cursor to the normal field
before instruction for updating the timeline.
(twittering-goto-previous-status): likewise.
* twittering-mode.el: Add variables for customizing the header and
footer.
(twittering-timeline-header-face): new variable.
(twittering-timeline-footer-face): new variable.
(twittering-timeline-header): new variable.
(twittering-timeline-footer): new variable.
(twittering-render-timeline): render the header and footer
according to the customization variables.
(twittering-initialize-global-variables-if-necessary): initialize
the faces for the header and footer.
* twittering-mode.el: The current version of twittering-mode
always behaves as the previous version does on scroll-mode. The
variable `twittering-scroll-mode' is obsolete.
(twittering-scroll-mode): removed.
(twittering-mode-line-buffer-identification): ignore the obsolete
variable `twittering-scroll-mode'.
(twittering-render-timeline): remove expressions for restoring
positions on non-scroll-mode.
(twittering-mode-map): do not bind "s" to the function
`twittering-scroll-mode'.
(twittering-mode-setup): do not call `make-local-variable' for the
variable `twittering-scroll-mode'.
* test/test-twittering-mode.el: Remove tests related to the
scroll-mode.
* twittering-mode.el: Remove invalid timeline specs from the
history after the failure of the retrieval.
(twittering-http-get-default-sentinel): remove the specified
timeline spec string from the history after it becomes clear that
the spec is invalid.
(twittering-remove-timeline-spec-string-from-history): new
function.
(twittering-get-managed-buffer): add the requested timeline spec
string to the history. It may be removed from the history after if
it is invalid.
* twittering-mode.el: Support ":exclude-if/FUNC/SPEC" timelines.
(twittering-http-get-default-sentinel): remove timeline spec
strings depending the invalid spec.
(twittering-timeline-spec-to-string): support the new timeline
spec ":exclude-if/FUNC/SPEC".
(twittering-extract-timeline-spec): likewise.
(twittering-timeline-spec-composite-p): new function.
(twittering-timeline-spec-depending-on-p): new function.
(twittering-get-base-timeline-specs): new function.
(twittering-get-primary-base-timeline-specs): new function.
(twittering-generate-composite-timeline): new function.
(twittering-current-timeline-referring-id-table): support the new
timeline spec ":exclude-if/FUNC/SPEC".
(twittering-current-timeline-data): likewise.
(twittering-add-statuses-to-timeline-data): update composite
timelines that depend on the primary timeline.
(twittering-get-and-render-timeline): add new arguments SPEC and
SPEC-STRING to retrieve timelines that have no buffers but
constitute some composite timelines.
* test/test-twittering-mode.el: Add tests for the timeline spec
":exclude-if/FUNC/SPEC".
* twittering-mode.el: Support merge timelines.
(twittering-timeline-spec-composite-p): support the merge timeline
spec.
(twittering-get-base-timeline-specs): likewise.
(twittering-generate-composite-timeline): likewise.
(twittering-current-timeline-referring-id-table): likewise.
(twittering-current-timeline-data): likewise.
2012-01-14 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Do not record the edit buffer in the list of
recently selected ones. Thanks to tdkn who reported the behavior
related to the list.
(twittering-update-status-from-pop-up-buffer): do not put the
buffer at the front of the list of recently selected ones.
* twittering-mode.el: Add a field property to a tweet on the
function `twittering-render-a-field'.
(twittering-make-common-properties): Do not add a field property.
(twittering-render-a-field): add a field property.
2012-01-08 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Explicitly signal an error when
twittering-mode fails to retrieve a request token.
(twittering-oauth-get-access-token): signal an error when
twittering-mode fails to retrieve a request token.
* test/test-twittering-mode.el: Add a test for parsing JSON with a
character unsupported by Emacs.
* test/test-twittering-mode.el: Add a test for parsing XML with a
character unsupported by Emacs.
* twittering-mode.el: Confirm that a file is readable before
decrypting it.
(twittering-read-from-encrypted-file): confirm that FILE is
readable.
* twittering-mode.el: Expand a path before invoking the function
`epg-decrypt-file'.
(twittering-read-from-encrypted-file): expand FILE before invoking
`epg-decrypt-file'.
2011-12-09 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Retrieve an ID of a tweet replied by a
tweet on a search timeline. You can display replied tweets on a
search timeline if they have been retrieved. This is available
only when tweets are retrieved as the JSON format.
(twittering-json-object-to-a-status-on-search): extract the
"in_reply_to_status_id_str" field, which Twitter begins to serve
recently.
* twittering-mode.el: Replace `json-read' with
`twittering-json-read' in order to prevent abnormal exit caused by
decoding an unknown code point. Thanks to lemit who reported the
problem.
(twittering-http-get-default-sentinel): use `twittering-json-read'
instead of `json-read'.
(twittering-json-read): new function.
2011-12-07 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Rearrange some codes for interpreting a JSON
object.
(twittering-json-object-to-a-status-base): rearrange codes for
interpreting a JSON object.
* twittering-mode.el: Fix the interpretation of JSON objects for
direct messages. Thanks to Alexis who reported the problem.
(twittering-http-get-default-sentinel): use
`twittering-json-object-to-a-status-on-direct-messages' for
timelines related to direct messages.
(twittering-json-object-to-a-status-on-direct-messages): new
function.
2011-11-26 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix the strange behavior on moving the
cursor according to logical lines. Thanks to lemit who reported
the problem.
(twittering-mode-setup): bind `inhibit-field-text-motion' to
non-nil as a buffer-local variable. If it is nil, the field
property attached tweets interferes with the cursor motion based
on logical lines.
* twittering-mode.el: Store the tweet parameters, `truncated' and
`user-protected', as boolean parameters.
(twittering-normalize-raw-status): store the `truncated' and
`user-protected' parameters as boolean parameters.
(twittering-generate-format-table): use the `truncated' and
`user-protected' parameters as boolean.
(twittering-organic-retweet): likewise.
* test/test-twittering-mode.el: Update tests to follow the change
of internal representation of a tweet.
* test/fixture/timeline-data.el: Update data to follow the change
of internal representation of a tweet.
* twittering-mode.el: Store the tweet parameter `created-at' as
Emacs internal time representation. This avoids parsing a time
string whenever a tweet is re-rendered.
(twittering-atom-xmltree-to-status-datum): store `created-at' as
Emacs internal time representation.
(twittering-normalize-raw-status): likewise.
(twittering-created-at-to-seconds): removed.
(twittering-generate-format-table): use the parameters
`created-at' as Emacs internal time representation.
(twittering-generate-formater-for-first-spec): likewise.
* test/test-twittering-mode.el: Update tests to follow the change
of internal representation of a tweet.
* test/fixture/timeline-data.el: Update data to follow the change
of internal representation of a tweet.
* twittering-mode.el: `twittering-call-api' receives `sentinel' as
an argument for the command `retrieve-timeline'.
(twittering-call-api): receive `sentinel' as an argument for
the command `retrieve-timeline'.
* twittering-mode.el: `twittering-call-api' receives `format' as
an argument for the command `retrieve-timeline'.
(twittering-http-get-default-sentinel): refer to `format' in
`connection-info' for parsing the retrieved content.
(twittering-call-api): receive `format' as an argument for the
command `retrieve-timeline'. The `format' is automatically added
to the last of `additional-info' for `twittering-http-get'.
* twittering-mode.el: Support retrieval of tweets as the JSON
format.
(twittering-http-get-default-sentinel): support the JSON format.
(twittering-extract-common-element-from-json): new function.
(twittering-json-object-to-a-status): new function.
(twittering-json-object-to-a-status-base): new function.
(twittering-json-object-to-a-status-on-search): new function.
* twittering-mode.el: Retrieve tweets as the JSON format if
possible.
(twittering-get-and-render-timeline): retrieve tweets as the JSON
format if possible.
* twittering-mode.el: Render a link wrapped by the t.co service as
the original URL on a search timeline if possible. This requires
`json.el'.
(twittering-call-api): retrieve a search timeline with entities.
2011-11-13 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix the bug that unconditionally adds
`emacs21' and `url-emacs21' into `load-path' on byte-compilation.
On byte-compilation, the directories `emacs21' and `url-emacs21',
which are included in the repository of twittering-mode, were
unconditionally added into `load-path'. Due to this bug, some
macros were embedded as obsolete definitions for Emacs21 in the
result of byte-compilation. Some functions in the result cause
errors on Emacs 22 or later because the obsolete definitions
conflict with Emacs newer than 21. On Emacs 22 or later, the
directories are no longer added to `load-path' on
byte-compilation.
Thanks to HKey who has discovered the bug.
2011-10-30 Tadashi MATSUO <tad@mymail.twin.jp>
* test/test-twittering-mode.el: Remove obsolete tests of the
obsolete feature related to `twittering-sign-string-function' and
`twittering-sign-simple-string'.
(test-sign-string): removed.
* twittering-mode.el: A tweet has a greater field ID than that of
its ancestor tweets. The order of field IDs matches with the order
in which tweets should be rendered.
(twittering-make-field-id): attach a greater field ID to normal
tweets than its ancestor tweets.
* twittering-mode.el: Use a common macro for rendering a status.
(twittering-render-a-field): new macro for rendering a status.
(twittering-render-timeline): use `twittering-render-a-field'.
(twittering-show-replied-statuses): use
`twittering-render-a-field'.
* twittering-mode.el: Accept list names including non-ASCII
characters.
(twittering-extract-timeline-spec): accept list names including
non-ASCII characters.
* test/test-twittering-mode.el (timeline-spec): add a test for a
list name including non-ASCII characters.
2011-10-23 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Keep the private information unless the
server explicitly informs that it is invalid.
(twittering-verify-credentials): display the reason of
authorization failure.
(twittering-http-get-verify-credentials-sentinel): keep the
private information for authorization unless the server returns
401(Unauthorized) as the HTTP response status code.
2011-10-09 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Bind `default-directory' to the temporary
directory to avoid problems caused by executing programs on
a removed directory. Thanks to tomykaira who reported the problem.
(twittering-send-http-request-internal): locally bind the variable
`default-directory' to the temporary directory in order to prevent
Emacs from executing an external program in the invalid condition
where `default-directory' points to a directory which has been
already removed.
(twittering-start-http-session-curl-https-p): likewise.
(twittering-sha1): likewise.
(twittering-read-from-encrypted-file): likewise.
(twittering-write-and-encrypt): likewise.
(twittering-convert-image-data): likewise.
(twittering-save-icon-properties): likewise.
(twittering-load-icon-properties): likewise.
(twittering-initialize-global-variables-if-necessary): likewise.
2011-10-07 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix the argument of the function
`twittering-read-username-with-completion'. Thanks to Akira
Tamamori who reported a problem caused by the bug.
(twittering-read-timeline-spec-with-completion): fix the argument
of the function `twittering-read-username-with-completion'.
* twittering-mode.el: Search the content-type header from a HTTP
response in a case-insensitive way according to RFC2616. Thanks to
luozengbin who reported the bug.
(twittering-http-get-default-sentinel): fix the check of the
content-type header of a HTTP response. The content-type is now
searched in a case-insensitive way according to RFC2616.
* twittering-mode.el: Add new functions related to preparation for
invoking APIs.
(twittering-add-application-header-to-http-request): confirm the
existence of OAuth token.
(twittering-api-invocation-is-ready-p): new function for checking
whether prerequisites for invoking APIs have been prepared without
side effects. Strictly speaking, this function may have a side
effect because the function `twittering-lookup-connection-type'
may change some variables.
(twittering-ensure-preparation-for-api-invocation): new function
for ensuring prerequisites for invoking APIs.
(twittering-visit-timeline): use the new function
`twittering-ensure-preparation-for-api-invocation'.
* twittering-mode.el: Signal an error when no valid connection
method is found on sending a HTTP request.
(twittering-send-http-request-internal): signal an error when no
valid connection method is found.
2011-10-03 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Allow users to supplement a username for
timeline specs with a following username afterward.
(twittering-read-timeline-spec-with-completion): allow users to
supplement a username for timeline specs with a following username
afterward.
* twittering-mode.el: Add a username to the variable
`twittering-user-history' after retrieving a user timeline.
(twittering-timeline-spec-is-user-p): new function.
(twittering-add-timeline-history): add a username to the history
bound to `twittering-user-history' if the given spec is a user
timeline.
* twittering-mode.el: Fix the macro
`twittering-revive:prop-get-value'.
(twittering-revive:prop-get-value): use `macroexpand' instead of
`macroexpand-all'.
2011-09-25 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Users can post a tweet consisting of only
mentions from the pop-up buffer.
(twittering-edit-post-status): check a tweet with a simple regexp
instead of `twittering-status-not-blank-p'.
* twittering-mode.el: Add functions for `revive.el'.
(twittering-revive:prop-get-value): new macro defined only when
compiling `twittering-mode.el'.
(twittering-revive:twittering): new function for restoring a
timeline buffer with `revive.el'.
(twittering-setup-revive): new function configuring `revive.el'
for restoring a timeline buffer.
* twittering-mode.el: `twittering-update-status' receives a
tweet-type symbol instead of a timeline spec. It replaces a
timeline spec representing whether the tweet beingedited is a
direct message or not.
(twittering-update-status-function): update docstring.
(twittering-edit-setup-help): receive a tweet-type symbol as the
second argument instead of a timeline spec.
(twittering-update-status-from-pop-up-buffer): receive a
tweet-type symbol as the fourth argument instead of a timeline
spec.
(twittering-update-status-from-minibuffer): likewise.
(twittering-update-status): likewise.
(twittering-direct-message): invoke `twittering-update-status'
with a tweet-type symbol `direct-message' instead of a timeline
spec.
(twittering-enter): invoke `twittering-update-status' with a
tweet-type symbol instead of a timeline spec.
* twittering-mode.el: A skeleton can be used as
`twittering-retweet-format'.
(twittering-retweet-format): update docstring.
(twittering-update-status-from-pop-up-buffer): accept a skeleton
as the first argument.
(twittering-update-status-from-minibuffer): likewise.
(twittering-update-status): likewise.
(twittering-organic-retweet): invoke `twittering-update-status'
with a skeleton for generating an initial string.
* twittering-mode.el: In default, the cursor is placed on the head
when editing an organic retweet.
(twittering-retweet-format): modify the initial value so that the
cursor will be placed previous to the initial string.
* twittering-mode.el: The symbol `organic-retweet' is added as a
tweet type referred by edit skeleton.
(twittering-update-status-function): update docstring.
(twittering-edit-skeleton-alist): likewise.
(twittering-update-status): likewise.
(twittering-organic-retweet): invoke `twittering-update-status'
with the tweet type symbol `organic-retweet' as the explicit
fourth argument.
2011-09-05 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix extraction of hashtags from a XML
response.
(twittering-normalize-raw-status): Fix extraction of hashtags from
a XML response.
* twittering-mode.el: The sign string feature is obsolete. The
feature based on the function `twittering-sign-string-function'
and the variable `twittering-sign-simple-string' is removed. The
edit skeleton feature can be used as its alternative.
(twittering-initialize-global-variables-if-necessary): display a
warning about obsolete sign string feature. The function also
translates the configuration of obsolete sign string into that of
edit skeleton if possible.
(twittering-sign-simple-string): removed.
(twittering-sign-string-function): removed.
(twittering-sign-string-default-function): removed.
(twittering-sign-string): removed.
(twittering-edit-length-check): do not use the obsolete function
`twittering-sign-string'.
(twittering-show-minibuffer-length): likewise.
(twittering-update-status-from-minibuffer): likewise.
2011-09-04 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Remove stickiness of text properties.
(twittering-make-string-with-user-name-property): add front-sticky
and rear-nonsticky property to STR for removing stickiness.
(twittering-make-string-with-source-property): likewise.
(twittering-make-string-with-uri-property): likewise.
(twittering-generate-format-table): add front-sticky and
rear-nonsticky property to the string for "%r" in order to remove
stickiness.
(twittering-generate-formater-for-first-spec): add front-sticky
and rear-nonsticky property to the string for "%@" in order to
remove stickiness.
2011-09-03 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix a comment.
* twittering-mode.el: The properties for hashtags, mentions and
URIs are non-sticky.
(twittering-make-fontified-tweet-text): make the properties
non-sticky for the both direction.
* twittering-mode.el: Render a link wrapped by the t.co service as
the original URL.
(twittering-call-api): call APIs with the option
`include_entities=true' if possible.
(twittering-normalize-raw-status): extract entities.
(twittering-xmltree-to-status): extract entities of direct
messages.
(twittering-make-fontified-tweet-text): do not fontify a region if
it has been already fontified.
(twittering-make-fontified-tweet-text-with-entity): new function.
(twittering-generate-format-table): try to fontify the text with
entities first.
* twittering-mode.el: Fix indices in entities of a timeline
retrieved as XML.
(twittering-make-gap-list): new function.
(twittering-get-gap): new function.
(twittering-normalize-raw-status): correct indices in entities so
that they mean the position in the decoded text.
* twittering-mode.el: Suppress redundant decoding.
(twittering-normalize-raw-status): decode entities with
`twittering-decode-entities-after-parsing-xml'.
(twittering-decode-entities-after-parsing-xml): new function.
2011-08-27 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: A list timeline includes native retweets.
(twittering-call-api): retrieve a list timeline with native
retweets.
* twittering-mode.el: Update the service configuration with the
'help/configuration' API periodically.
(twittering-call-api): add `get-service-configuration' as a new
command.
(twittering-service-configuration-default): new constant.
(twittering-service-configuration): new variable.
(twittering-service-configuration-queried): new variable.
(twittering-service-configuration-update-interval): new variable.
(twittering-get-service-configuration): new function.
(twittering-update-service-configuration): new function.
(twittering-update-service-configuration-sentinel): new function.
(twittering-update-service-configuration-clean-up-sentinel): new
function.
(twittering-update-active-buffers): invoke
`twittering-update-service-configuration'.
* twittering-mode.el: Count characters with considering the t.co
link wrapper.
(twittering-effective-length): new function.
(twittering-edit-length-check): check the length with
`twittering-effective-length'.
(twittering-edit-post-status): likewise.
(twittering-show-minibuffer-length): likewise.
* twittering-mode.el: Ad-hoc support for non-ASCII hashtags.
(twittering-extract-timeline-spec): support non-ASCII hashtags by
an ad-hoc way.
(twittering-make-fontified-tweet-text): likewise.
(twittering-edit-skeleton-inherit-hashtags): likewise.
2011-08-18 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Display the requested URI if a HTTP request
has failed.
(twittering-send-http-request): display the requested method and
URI if the request has failed.
2011-08-17 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Correctly store icons when
`twittering-convert-fix-size' is nil.
(twittering-save-icon-properties): correctly generate stored
representation of icon images when its size is not specified
explicitly.
2011-08-14 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Update the API for a list timeline.
(twittering-call-api): use the current API for retrieving a list
timeline.
* twittering-mode.el: Support ":retweeted_to_user/USER" timeline.
(twittering-timeline-spec-to-string): support `retweeted_to_user'
timeline.
(twittering-extract-timeline-spec): support a string like
":retweeted_to_user/USER" as a `retweeted_by_user' timeline.
(twittering-timeline-spec-primary-p): add `retweeted_to_user'
as a primary timeline.
(twittering-call-api): support `retweeted_to_user' timeline.
(twittering-read-timeline-spec-with-completion): add
":retweeted_to_user/" as a candidate.
* twittering-mode.el: Support ":retweeted_by_user/USER" timeline.
(twittering-timeline-spec-to-string): support `retweeted_by_user'
timeline.
(twittering-extract-timeline-spec): support a string like
":retweeted_by_user/USER" as a `retweeted_by_user' timeline.
(twittering-timeline-spec-primary-p): add `retweeted_by_user'
as a primary timeline.
(twittering-call-api): support `retweeted_by_user' timeline.
(twittering-read-timeline-spec-with-completion): add
":retweeted_by_user/" as a candidate.
2011-08-13 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Add `migre.me' as a URL shortening serivce.
(twittering-tinyurl-services-map): add an entry for `migre.me'.
* twittering-mode.el: Save icons correctly when
`twittering-icon-storage-limit' is nil. Thanks to HufflepuffBR who
reported this problem.
(twittering-save-icon-properties): fix the list representation of
stored data when `twittering-icon-storage-limit' is nil.
2011-07-29 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: The hash by newer algorithm introduced in
OpenSSL 1.0.0 is also generated for each certificate. This is
required because OpenSSL 1.0.0 and later fails to find an
appropriate certificate if its name is based on the hash by the
older algorithm which has been used by OpenSSL before 1.0.0.
Thanks to Sakuma who reported this problem.
(twittering-ca-cert-alist): redefined as a constant. And each
entry has the hash generated by OpenSSL 1.0.0 and later.
(twittering-delete-ca-cert): delete multiple files for each
certificate.
(twittering-ensure-ca-cert): generate two files for each
certificate, where their names are the hash by the older algorithm
used by OpenSSL before 1.0.0 and the other hash by the newer
algorithm used by OpenSSL 1.0.0 and later.
* twittering-mode.el: Embed a new root CA certificate to follow
an update of the server.
(twittering-ca-cert-alist): add a new root CA certificate,
`GeoTrust Global CA' in order to follow the update of the server
certificate of `search.twitter.com'.
* twittering-mode.el: Output embedded certificates as a single
file instead of a directory including them. This avoids the
management of multiple hashes for each certificate.
(twittering-cert-file): new variable replacing
`twittering-cert-directory'.
(twittering-cert-directory): removed.
(twittering-ca-cert-list): new variable replacing
`twittering-ca-cert-alist'.
(twittering-ca-cert-alist): removed.
(twittering-delete-ca-cert): remove a single file including
multiple certificates.
(twittering-ensure-ca-cert): prepare a single file including
multiple certificates instead of a directory including multiple
files.
(twittering-make-connection-info): replace the parameter
`cacert-directory-fullpath' with `cacert-file-fullpath'.
(twittering-send-http-request-curl): use the option `--cacert'
instead of `--capath'.
(twittering-send-http-request-wget): use the option
`--ca-certificate' instead of `--ca-directory'.
2011-07-25 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix the API call for `user_timeline' in
order to prevent Twitter from confusing a username consisting of
digits with a user id. Thanks to Makoto Fujiwara who reported this
problem.
(twittering-call-api): fix the API call for `user_timeline'. The
new implementation gives a username as a query parameter. This
prevents Twitter from confusing a username consisting of digits
with a user id.
* twittering-mode.el: Fix a bug that moves the cursor by calling
`twittering-update-status-interactive' from buffers which are not
managed by `twittering-mode'. Thanks to mofigan who reported this
problem.
(twittering-ensure-whole-of-status-is-visible): do not change
window configuration unless the given window is bound to a buffer
managed by `twittering-mode'.
2011-07-20 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix indentation of the function
`twittering-verify-credentials'.
(twittering-verify-credentials): fix indentation.
* twittering-mode.el: Display exit status of the process for
authorization if it exited abnormally.
(twittering-http-get-verify-credentials-clean-up-sentinel):
display exit status of the process if it exited abnormally.
* twittering-mode.el: Embed another root CA certificate to follow
an update of the server. Now, the server certificate for
`api.twitter.com' is updated and it cannot be verified by the
already embedded certificate `Equifax Secure Certificate
Authority'. So, a root CA certificate `VeriSign Class 3 Public
Primary CA - G2' is also embedded, which is used for verifying the
server `api.twitter.com'.
(twittering-cert-file): removed.
(twittering-delete-ca-cert-file): removed.
(twittering-cert-directory): new variable.
(twittering-delete-ca-cert): new function.
(twittering-ensure-ca-cert): prepare a directory including
multiple CA certificates instead of a single file. Now this
function generates "VeriSign Class 3 Public Primary CA - G2".
(twittering-make-connection-info): replace the parameter
`cacert-fullpath' with `cacert-directory-fullpath'.
(twittering-send-http-request-native): remove redundant bindings.
(twittering-send-http-request-curl): follow the modification of
the parameter generated by `twittering-make-connection-info'.
(twittering-send-http-request-wget): likewise.
* cert/equifax.pem: removed. This certificate had not been used.
* cert/Equifax_Secure_Certificate_Authority.cer: Add a certificate
that has been used. It was retrieved from
https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certificate_Authority.cer ,
which is used only for verifying the server `search.twitter.com'.
* cert/PCA-3G2.pem: Add a root certificate. It is retrieved from
https://www.verisign.com/repository/roots/root-certificates/PCA-3G2.pem ,
which is used for verifying the server `api.twitter.com'.
2011-07-16 Tadashi MATSUO <tad@mymail.twin.jp>
* test/test-twittering-mode.el: Add tests for HMAC-SHA1.
* twittering-mode.el: Fix the function for HMAC-SHA1 so that it
always return a correct digest.
(twittering-sha1): new function. This function can return a
correct digest without regard to the current coding system.
For very long object, the function `sha1' uses an external program
and coding system for the program is not correctly specified.
Therefore, the result may depend on the current coding system.
The new function is an alternative without the above problem.
(twittering-hmac-sha1): use `twittering-sha1' instead of `sha1'.
* twittering-mode.el: `twittering-wait-while' is reimplemented
with `lexical-let'.
(twittering-wait-while): reimplemented with `lexical-let'.
Redundant statements are no longer added. This suppresses warnings
on byte-compilation.
* twittering-mode.el: Fix docstring of
`twittering-edit-skeleton-alist'.
(twittering-edit-skeleton-alist): fix docstring.
* twittering-mode.el: Load private information before
initialization.
(twittering-private-info-file-loaded): new variable.
(twittering-private-info-loaded-p): new function.
(twittering-ensure-private-info): new function.
(twittering-verify-credentials): do not try to load private
information.
(twittering-visit-timeline): ensure that private information is
loaded if necessary.
* twittering-mode.el: Initialize global variables before ensuring
a connection method.
(twittering-visit-timeline): invoke
`twittering-initialize-global-variables-if-necessary' first.
* twittering-mode.el: Open the timeline buffer only if
authorization succeeded.
(twittering-verify-credentials): return t or nil according to
whether the authorization succeeded or not.
(twittering-visit-timeline): open the timeline buffer only if
authorization succeeded.
* twittering-mode.el: In `twittering-start', bind a local variable
only if necessary.
(twittering-start): bind `action' only if necessary.
* twittering-mode.el: Start timers only when an active timeline
buffer is opened.
(twittering-verify-credentials): do not invoke `twittering-start'.
(twittering-http-get-verify-credentials-sentinel): likewise.
* twittering-mode.el: `twittering-account-authorization' must be
reset if `twittering-verify-credentials' exited non-locally.
(twittering-verify-credentials): do not manage the global variable
`twittering-account-authorization', which will be managed by the
new function `twittering-ensure-account-verification'.
`twittering-verify-credentials' raises an error if the function
`twittering-account-authorization-queried-p` returns non-nil.
(twittering-ensure-account-verification): new function. This
function can correctly reset the global variable
`twittering-account-authorization' if authorization is failed and
the function `twittering-verify-credentials' exits non-locally.
(twittering-visit-timeline): call
`twittering-ensure-account-verification' instead of
`twittering-verify-credentials'.
2011-06-26 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Revise the routine for the format specifier
"%C".
(twittering-make-string-with-uri-property): new function.
(twittering-generate-formater-for-first-spec): use the function
`twittering-make-string-with-uri-property' for the format
specifier "%C".
(twittering-make-time-string): removed.
* twittering-mode.el: Add a function to go to the next/previous
URI explicitly written in a tweet.
(twittering-make-fontified-tweet-text): add uri-origin property to
URIs explicitly written in a tweet.
(twittering-get-next-thing-pos): new function.
(twittering-goto-next-thing): ignore things except URIs explicitly
written in a tweet if a prefix argument is given.
(twittering-goto-previous-thing): likewise.
(twittering-goto-next-uri): new function.
(twittering-goto-previous-uri): new function.
* twittering-mode.el: Wait a moment after finding that the process
is dead and the query has not been finished. This prevents Emacs
from canceling the query on the middle of evaluating the
sentinel.
(twittering-wait-while): new macro.
(twittering-oauth-get-token-alist): wait a moment after finding
that the process is dead and the query has not been finished. This
prevents Emacs from canceling the query on the middle of
evaluating the sentinel.
(twittering-tinyurl-get): likewise.
(twittering-verify-credentials): likewise.
(twittering-get-list-sync): likewise.
* twittering-mode.el: Correctly ensure an available connection
method even if SSL is unavailable.
(twittering-ensure-connection-method): return correct value in the
case with compromise.
* twittering-mode.el: `twittering-ensure-connection-method'
displays an error message if no connection methods available.
(twittering-ensure-connection-method): display an error message if
no connection methods are available.
(twittering-visit-timeline): do not display an error message if no
connection methods are available.
2011-06-21 Takashi Masuda <masutaka@nifty.com>
* twittering-mode.el: Add text properties to "%C".
(twittering-generate-formater-for-first-spec): use
`twittering-make-time-string' instead of `format-time-string'.
(twittering-make-time-string): new function.
* twittering-mode.el: Add timeline spec aliases as completion
candidates on specifying a timeline spec.
(twittering-read-timeline-spec-with-completion): add timeline spec
aliases, defined in `twittering-timeline-spec-alias', as
completion candidates.
2011-05-21 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix the message for dead process on basic
authentication.
(twittering-verify-credentials): make the message for dead process
on basic authentication similar as that on OAuth/xAuth
authentication.
* twittering-mode.el: Fix the display of messages about
authorization.
(twittering-send-http-request): do not display a message on
authorization.
(twittering-http-get-verify-credentials-sentinel): directly
display a message whether the authorization succeeded or not.
`twittering-send-http-request' does not display it.
* twittering-mode.el: Add the variable
`twittering-disable-overlay-on-too-long-string' in order to avoid
interference between the update of overlay and some input
methods.
(twittering-disable-overlay-on-too-long-string): new variable.
(twittering-edit-length-check): do not update the overlay if
`twittering-disable-overlay-on-too-long-string' is non-nil.
2011-05-16 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Ensure that a sentinel is invoked when a
process is started successfully.
(twittering-process-alive-p): new function.
(twittering-start-process-with-sentinel): new function.
(twittering-send-http-request-native): ensure that the given
sentinel is invoked when the process is started successfully.
(twittering-send-http-request-curl): replace `start-process' with
`twittering-start-process-with-sentinel' in order to ensure that
the sentinel is invoked.
(twittering-send-http-request-wget): likewise.
* twittering-mode.el: Confirm that the process is alive on waiting
for its sentinel.
(twittering-oauth-get-token-alist): check whether the process is
alive on waiting for the invocation of the sentinel for the
process.
(twittering-tinyurl-get): likewise.
(twittering-verify-credentials): likewise.
(twittering-get-list-sync): use `twittering-process-alive-p'.
* twittering-mode.el: Ignore errors on `xml-parse-region'.
(twittering-xml-parse-region): return nil if an error happens on
`xml-parse-region'.
* twittering-mode.el: Fix uri property of a list name in a
tweet. Thanks to Naohiro Aota who reported the problem.
(twittering-get-list-url): new function.
(twittering-make-fontified-tweet-text): correctly generate uri
property for a list name in a tweet.
2011-05-08 Tadashi MATSUO <tad@mymail.twin.jp>
* test/test-twittering-mode.el: Fix and add tests of proxy
configuration. Now they do not depend on environment variables.
2011-05-06 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Replace the symbol `us-ascii' for a
coding-system with `iso-safe', which is valid even on Emacs21.
(twittering-ensure-ca-cert): use `iso-safe' instead of `us-ascii'
as a coding-system for ASCII.
(twittering-start-http-session-curl-https-p): likewise.
(twittering-initialize-global-variables-if-necessary): likewise.
* twittering-mode.el: Add some directories for Emacs21 to
`load-path' even when byte-compiling the file on Emacs21.
* twittering-mode.el: embed a timeline spec string such as
"#HASHTAG" for `goto-spec' of a hashtag instead of a search
timeline spec as an internal representation.
(twittering-make-hashtag-timeline-spec-string-direct): new macro.
(twittering-make-fontified-tweet-text): embed a timeline spec
string such as "#HASHTAG" for `goto-spec' of a hashtag instead of
a search timeline spec as an internal representation.
* twittering-mode.el: Add `twittering-update-status' as a function.
(twittering-update-status-function): update docstring.
(twittering-update-status-from-pop-up-buffer): rename the argument
`spec' `tweet-type-as-spec'.
(twittering-update-status-from-minibuffer): likewise.
(twittering-update-status): new function.
(twittering-direct-message): call `twittering-update-status'
instead of referring `twittering-update-status-function'.
(twittering-reply-to-user): likewise.
(twittering-organic-retweet): likewise.
(twittering-enter): likewise.
* twittering-mode.el: Edit skeletons can refer to the current
timeline spec.
(twittering-update-status-function): update the docstring to
follow the additional argument CURRENT-SPEC.
(twittering-edit-skeleton-alist): update the docstring.
(twittering-edit-skeleton-insert-base): support the new argument
CURRENT-SPEC.
(twittering-edit-skeleton-insert): likewise.
(twittering-edit-skeleton-inherit-hashtags): likewise.
(twittering-edit-skeleton-inherit-mentions): likewise.
(twittering-update-status-from-pop-up-buffer): likewise.
(twittering-update-status-from-minibuffer): likewise.
(twittering-update-status): add a new argument
IGNORE-CURRENT-SPEC.
* twittering-mode.el: The predefined edit skeletons
`inherit-hashtags' and `inherit-any' insert hashtags if the
current timeline is a search timeline where the query string
includes hashtags.
(twittering-timeline-spec-is-search-p): new function.
(twittering-extract-query-string-from-search-timeline-spec): new
function.
(twittering-edit-skeleton-alist): change the definition of
`inherit-hashtags' and `inherit-any' so that they add hashtags if
the current timeline is a search timeline.
(twittering-edit-skeleton-inherit-hashtags): insert hashtags if
CURRENT-SPEC is a search timeline where the query string includes
hashtags.
2011-04-23 Tadashi MATSUO <tad@mymail.twin.jp>
* NEWS, NEWS.ja, LAST-VERSION, VERSION, doc/web/index.text:
Version 2.0.0 released.
* twittering-mode.el: Fix coding system for some operations so
that they work well even if the default coding system is
`utf-16le-dos'. Thanks to Moto_Dong who reported the problem.
(twittering-ensure-ca-cert): explicitly specify coding-system.
(twittering-start-http-session-curl-https-p): likewise.
(twittering-read-from-encrypted-file): likewise.
(twittering-write-and-encrypt): likewise.
(twittering-load-icon-properties): likewise.
(twittering-initialize-global-variables-if-necessary): likewise.
(twittering-status-not-blank-p): likewise.
* test/test-twittering-mode.el: add a test for a timeline spec
string like "#hashtag".
* twittering-mode.el: Store the formatter function before
compilation.
(twittering-format-status-function-without-compile): new
variable.
(twittering-update-status-format): store the formatter function as
a lambda expression before being compiled.
* twittering-mode.el: Embed expressions for fontification in the
formatter function instead of calling them as a function.
(twittering-make-fontified-tweet-text): return an expression that
fontifies a given string. The regular expressions of strings being
fontified are concatenated on generating a formatter function.
(twittering-generate-format-table): embed the expression
fontifying a string in the formatter function. The expression will
be byte-compiled by `twittering-update-status-format'.
* twittering-mode.el: Redefine some functions as inline in order
to make the formatter function more efficient.
(twittering-make-common-properties): redefined as an inline
function.
(twittering-make-string-with-user-name-property): likewise.
(twittering-make-string-with-source-property): likewise.
(twittering-fill-string): likewise.
(twittering-update-filled-string): likewise.
(twittering-make-passed-time-string): likewise.
* twittering-mode.el: Reduce redundant calls of `string-match' on
formatting a tweet. When generating a timeline spec from a string
with obvious meaning, the new macros are used instead of the
general function, `twittering-extract-timeline-spec'.
(twittering-make-user-timeline-spec-direct): new macro.
(twittering-make-list-timeline-spec-direct): new macro.
(twittering-make-hashtag-timeline-spec-direct): new macro.
(twittering-extract-timeline-spec): use new macros.
(twittering-make-string-with-user-name-property): call the new
macro `twittering-make-user-timeline-spec-direct' instead of
calling `twittering-extract-timeline-spec'.
(twittering-make-fontified-tweet-text): call the new macros
`twittering-make-{user,list,hashtag}-timeline-spec-direct' instead
of calling `twittering-extract-timeline-spec'.
2011-04-09 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix headers for a proxy.
(twittering-make-connection-info): extract proxy information from
`connection-info' instead of directly referring to
`twittering-http-proxy-user', `twittering-http-proxy-password',
etc.
(twittering-send-http-request-native): generate the
"Proxy-Authorization" header correctly and give the absolute URI
as the request URI when the connection is peformed via a proxy.
(twittering-send-http-request-urllib): add "Proxy-Authorization"
header if necessary.
(twittering-http-application-headers): do not add headers related
to a proxy. They are added in functions for each connection
method.
* twittering-mode.el: "U" pushes a URI of a tweet on text without
a uri property.
(twittering-push-uri-onto-kill-ring): push a URI of a tweet unless
the currently pointed character has a uri property.
* twittering-mode.el: `twittering-direct-message' always posts a
tweet with direct message API.
(twittering-direct-message): always post a tweet with direct
message API.
* twittering-mode.el: Introduce "edit skeleton".
(twittering-edit-skeleton-footer): new variable.
(twittering-edit-skeleton-footer-history): new variable.
(twittering-edit-skeleton-alist): new variable.
(twittering-switch-edit-skeleton): new function.
(twittering-edit-skeleton-change-footer): new function.
(twittering-edit-skeleton-insert-base): new function.
(twittering-edit-skeleton-insert): new function.
(twittering-update-status-from-pop-up-buffer): insert the current
edit skeleton before editing a tweet.
(twittering-update-status-from-minibuffer): likewise.
* twittering-mode.el: Add pre-defined edit skeletons.
(twittering-extract-matched-substring-all): new function.
(twittering-edit-skeleton-alist): add some examples of edit
skeletons.
(twittering-edit-skeleton-inherit-hashtags): new function for an
edit skeleton.
(twittering-edit-skeleton-inherit-mentions): likewise.
* twittering-mode.el: Add the variable
`twittering-fallback-image-format'.
(twittering-fallback-image-format): new variable.
(twittering-create-image-pair): use the value of
`twittering-fallback-image-format' as the fallback format instead
of directly using 'xpm.
2011-03-27 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Discard standard error of the program
"convert". On an environment where the option "-flatten" cause a
warning for a non-animated image, Emacs must exclude such
warnings.
(twittering-convert-image-data): discard standard error of the
program "convert".
* twittering-mode.el: Entrust image type estimation to the command
"convert".
(twittering-create-image-pair): do not send image type estimated by
Emacs to the function `twittering-convert-image-data'.
2011-03-26 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: `twittering-other-user-list-interactive'
works well when the specified user follows no list.
(twittering-other-user-list-interactive): fix an error occurring
when the specified user follows no list or selection is
cancelled.
* twittering-mode.el: `twittering-other-user-list-interactive'
displays a subscription as a string like timeline spec string.
(twittering-http-get-list-subscriptions-sentinel): exclude
preceding "@" from a string corresponding to a subscription.
(twittering-other-user-list-interactive): follow the above
modification.
* twittering-mode.el: Modify the prompts for subscription.
(twittering-read-subscription-list-name): modify the prompt for
subscription.
(twittering-other-user-list-interactive): likewise.
* twittering-mode.el: Add an advice for avoiding an error occuring
when `getenv' returns an empty string on Emacs21. The bug had been
fixed on Emacs22 and later.
* test/test-twittering-mode.el: Fix a test of formating a status
according to a change of behavior of `fill-region'. It does not
keep white spaces and tabs adjacent to hard newlines on Emacs21,
but it keeps them on Emacs22 and later.
* twittering-mode.el: Remove opacity on converting an image into
a XPM image on Emacs22 and earlier.
(twittering-convert-image-data): add an option "+matte" to the
command "convert" in order to avoid color allocation error
occurring when Emacs22 and earlier try to decode a XPM image with
opacity.
* twittering-mode.el: Convert an image, which may be animated,
into a single static image if Emacs does not support animated
images.
(twittering-convert-image-data): add an option "-flatten" to the
command "convert" unless `create-animated-image'.
* twittering-mode.el: Always convert a GIF image into a XPM image
if Emacs does not support animated images.
(twittering-create-image-pair): always convert a GIF image into a
XPM image if Emacs does not support animated images.
2011-03-26 Naohiro Aota <naota@elisp.net>
* twittering-mode.el (twittering-http-get-list-sentinel-base): New
macro: from `twittering-http-get-list-index-sentinel'.
(twittering-http-get-list-index-sentinel): Use it.
(twittering-http-get-list-subscriptions-sentinel): Ditto.
(twittering-call-api): Add `get-list-subscriptions' description;
Implement `get-list-subscriptions'.
(twittering-get-list-subscriptions): New function.
(twittering-get-list-sync): New function from
`twittering-get-list-index-sync'.
(twittering-get-list-index-sync): Rewrite to use it.
(twittering-get-list-subscriptions-sync): New function. Use it.
(twittering-read-timeline-spec-with-completion): New function.
(twittering-other-user-list-interactive): Accept prefix to read
other users' subscription list.
2011-03-15 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Support cancel of retweets posted by the
authenticated user.
(twittering-delete-status): cancel a retweet if it has been
retweeted by the authenticated user.
* twittering-mode.el: Explicitly use binary coding system on I/O
of icon properties. Thanks to Naohiro Aota.
(twittering-save-icon-properties): explicitly use binary coding
system on writing icon properties.
(twittering-load-icon-properties): likewise.
2011-02-19 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Disable the persistent icon storage if
`jka-compr' is unavailable.
(twittering-save-icon-properties): confirm that `jka-compr' is
available.
(twittering-load-icon-properties): likewise.
(twittering-initialize-global-variables-if-necessary): disable
the persistent icon storage if `jka-compr' is unavilable.
* twittering-mode.el: Add `twittering-add-to-history' for
Emacs21.
(twittering-add-to-history): new function.
(twittering-add-timeline-history): use
`twittering-add-to-history'.
* twittering-mode.el: Introduce the limit of number of
icons being stored persistently.
(twittering-icon-storage-file): add docstring about
`twittering-icon-storage-limit'.
(twittering-icon-storage-recent-icons): new variable to which
properties of recently rendered icons are stored.
(twittering-icon-storage-limit): new variable.
(twittering-update-icon-storage-recent-icons): new function.
(twittering-get-display-spec-for-icon): invoke
`twittering-update-icon-storage-recent-icons' whenever this
function is invoked.
(twittering-save-icon-properties): write properties of icons
within the limit specified by `twittering-icon-storage-limit'. In
addition, this function records properties in the new format.
(twittering-load-icon-properties): support the new format for
storing properties of icons.
2011-02-15 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Confirm validity of a format string before
updating the function formatting a tweet.
(twittering-update-status-format): update the function only if the
given format string is valid.
* twittering-mode.el: Support a new format specifier "%RT{...}".
(twittering-status-format): update docstring.
(twittering-generate-formater-for-first-spec): support a new
format specifier "%RT{...}".
2011-02-13 Tadashi MATSUO <tad@mymail.twin.jp>
* test/test-twittering-mode.el (test-hmac-sha1): Fix a typo.
* twittering-mode.el: Rearrange internal representation of a
retweet.
(twittering-add-statuses-to-timeline-data): use `retweeted-id'
instead of `source-id'.
(twittering-normalize-raw-status): rearrange internal
representation of a retweet. The information as a tweet posted by
the retweeter is stored with keys prefixed with `retweeting-'. The
information as a tweet posted by the original author is stored
with keys prefixed with `retweeted-'. Keys prefixed with
`original-' or `source-' are obsolete.
(twittering-make-common-properties): use `retweeted-id' instead of
`source-id'.
(twittering-get-common-properties): likewise.
(twittering-generate-format-table): use
`retweeting-user-screen-name' instead of
`original-user-screen-name'.
(twittering-generate-formater-for-first-spec): use `retweeted-id'
instead of `source-id'.
(twittering-render-timeline): likewise.
(twittering-native-retweet): likewise.
* twittering-mode.el: `created_at' for an official retweet means
when the original tweet was posted instead of when it was
retweeted.
(twittering-normalize-raw-status): do not override
`created_at'. The key `created_at' in an alist representing a
retweet means when the original tweet was posted.
* twittering-mode.el: When `twittering-follow' is invoked on an
official retweet, ask a subject.
(twittering-follow): ask a subject when this function is invoked
on an official retweet.
* twittering-mode.el: Add a function to report a user as a spammer.
(twittering-call-api): support a new command
`block-and-report-as-spammer'.
(twittering-block-and-report-as-spammer): new function.
* twittering-mode.el: Add a function to block a user.
(twittering-call-api): support a new command `block'.
(twittering-block): new function.
* twittering-mode.el: Support persistent icon storage.
(twittering-icon-storage-file): new variable.
(twittering-use-icon-storage): new variable.
(twittering-register-image-spec): new function.
(twittering-register-image-data): reimplemented with
`twittering-register-image-spec'.
(twittering-save-icon-properties): new function.
(twittering-load-icon-properties): new function.
2011-02-05 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Remove a trailing newline from strings
received from `bit.ly' and `j.mp'. Thanks to mm_o_ig.
(twittering-tinyurl-services-map): add a post-processing function
that removes a trailing newline from result of `bit.ly' and
`j.mp'.
* twittering-mode.el: Revise some messages. Thanks to Server.
(twittering-http-get-default-sentinel): revise messages.
(twittering-show-replied-statuses): likewise.
(twittering-hide-replied-statuses): likewise.
(twittering-edit-post-status): likewise.
(twittering-read-timeline-spec-with-completion): likewise.
(twittering-other-user-list-interactive): likewise.
(twittering-direct-message): likewise.
(twittering-goto-next-status): likewise.
(twittering-goto-previous-status): likewise.
2011-01-29 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Reimplement `twittering-tinyurl-get' with
`twittering-send-http-request'.
(twittering-url-wrapper): removed.
(twittering-url-insert-file-contents): removed.
(twittering-url-retrieve-synchronously): removed.
(twittering-tinyurl-get): reimplemented with
`twittering-send-http-request'. In addition, the query parameter
is correcly encoded by `twittering-percent-encode'.
* twittering-mode.el: Add `is.gd' as a URL shortening service.
Thanks to Michael Kohl.
(twittering-tinyurl-service): update the document.
(twittering-tinyurl-services-map): add an entry for `is.gd'.
* twittering-mode.el: Extend the format of
`twittering-tinyurl-services-map'. One can register a service that
requires a special HTTP request and/or post-processing.
(twittering-tinyurl-services-map): extend the meaning of the
variable.
(twittering-tinyurl-get): support new format of
`twittering-tinyurl-services-map'.
* twittering-mode.el: Add `goo.gl' as a URL shortening service.
(twittering-tinyurl-services-map): add an entry for `goo.gl'.
* twittering-mode.el: Add `bit.ly' and `j.mp' as URL shortening
services. Thanks to Lars Gregori.
(twittering-tinyurl-services-map): add entries for `bit.ly' and
`j.mp'.
(twittering-bitly-login): new variable.
(twittering-bitly-api-key): new variable.
(twittering-make-http-request-for-bitly): new function.
* twittering-mode.el: Reimplement normalization of alists from XML
structure.
(twittering-atom-xmltree-to-status-datum): change the value
corresponding to the key `source' into a URL with a tag.
(twittering-status-to-status-datum): removed.
(twittering-normalize-raw-status): new function to generate
normalized alist representing a tweet.
(twittering-xmltree-to-status): use
`twittering-normalize-raw-status' instead of
`twittering-status-to-status-datum'.
* twittering-mode.el: `twittering-make-clickable-status-datum'
does not redefine `source'.
(twittering-atom-xmltree-to-status-datum): define `source' as
a text surrounded by A-tag.
(twittering-normalize-raw-status): likewise.
(twittering-make-clickable-status-datum): do not redefine
`source'.
* twittering-mode.el: Add text properties to tweets on rendering.
(twittering-http-get-default-sentinel): do not call
`twittering-make-clickable-status-datum'.
(twittering-make-clickable-status-datum): removed.
(twittering-make-string-with-user-name-property): new function.
(twittering-make-string-with-source-property): new function.
(twittering-make-fontified-tweet-text): new function.
(twittering-generate-format-table): add text properties.
2011-01-23 Tadashi MATSUO <tad@mymail.twin.jp>
* test/test-twittering-mode.el: Add some tests for the format
specifiers "%FILL[prefix]{...}" and "%FOLD[prefix]{...}".
* twittering-mode.el (twittering-status-format): add a document
for the format specifier "%FOLD[prefix]{...}".
* test/test-twittering-mode.el: Fix an error of
`url-generic-parse-url' on Emacs21 by calling
`url-scheme-get-property' before `url-generic-parse-url' is called.
2011-01-21 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Decode received XML document as UTF-8 before
parsing it.
(twittering-http-get-default-sentinel): decode received XML
document as UTF-8 before parsing it if Content-Type in response
header has a parameter "charset=utf-8".
* twittering-mode.el: The format specifier "%FOLD[prefix]{...}"
does not squeeze white spaces.
(twittering-fill-string): does not squeeze white spaces if
`keep-newline' is non-nil.
2011-01-16 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Ensure that the pointed tweet is visible on
editing a tweet.
(twittering-ensure-whole-of-status-is-visible): new function.
* twittering-mode.el: Isolate addition of text properties from a
function parsing XML.
(twittering-http-get-default-sentinel): call
`twittering-make-clickable-status-datum' here.
(twittering-atom-xmltree-to-status): do not add text properties to
statuses.
(twittering-status-to-status-datum): likewise.
* twittering-mode.el: Render statuses in order of field property
instead of id property.
(twittering-make-common-properties): add field property as a
common property.
(twittering-get-common-properties): likewise.
(twittering-field-id<): new function.
(twittering-field-id=): new function.
(twittering-make-field-id): new function.
(twittering-make-field-properties): new function.
(twittering-render-timeline): render statuses in order of their
field properties.
(twittering-show-replied-statuses): add special field property to
replied statuses.
* twittering-mode.el: Move point by using field property instead
of id property.
(twittering-get-current-status-head): redefined with field
property instead of id property.
(twittering-get-first-status-head): likewise.
(twittering-get-next-status-head): likewise.
(twittering-get-previous-status-head): likewise.
* twittering-mode.el: Use rendered-as property for rendering
replied statuses instead of a trick with id and original-id
properties.
(twittering-get-common-properties): add rendered-as property as a
common property.
(twittering-make-field-properties): add rendered-as property if
necessary.
(twittering-make-field-properties-of-popped-ancestors): new
function.
(twittering-rendered-as-ancestor-status-p): new function.
(twittering-get-base-id-of-ancestor-at): new function.
(twittering-replied-statuses-visible-p): use the new function
`twittering-get-base-id-of-ancestor-at' instead of directly
referring id and original-id properties.
(twittering-hide-replied-statuses): likewise.
(twittering-show-replied-statuses): use
`twittering-make-field-properties-of-popped-ancestors'.
* twittering-mode.el: Remove a trick using id and original-id
properties for rendering replied statuses.
(twittering-get-common-properties): remove original-id from common
properties.
(twittering-show-replied-statuses): do not overwrite id and
original-id properties.
(twittering-enter): do not refer original-id property.
* twittering-mode.el: Support favorites timeline.
(twittering-timeline-spec-to-string): support favorites timeline
spec.
(twittering-extract-timeline-spec): likewise.
(twittering-timeline-spec-primary-p): add favorites timeline spec
is a primary timeline spec.
(twittering-call-api): support favorites timeline spec.
(twittering-read-timeline-spec-with-completion): add ":favorites"
as a candidate of completion. In addition, one can input a
username with completion for ":favorites/".
(twittering-goto-next-status): display an error message on the
oldest tweet on favorites timeline.
(twittering-goto-previous-status): likewise.
* test/test-twittering-mode.el: Add tests for favorites timeline
spec.
2011-01-09 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Ensure that encrypted strings are written
with no conversion. Thanks to Sakuma.
(twittering-write-and-encrypt): ensure that encrypted strings are
written with no conversion.
2010-12-17 Yuto HAYAMIZU <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-organic-retweet): prohibit
retweeting protected tweets.
2010-11-30 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Ensure that the methods using url library
works well for HTTP redirection.
(twittering-send-http-request-urllib): make the variable,
`url-http-attempt-keepalives', buffer-local in order to send the
local value to the sentinel invoked for HTTP redirection. If the
variable is not made buffer-local, the connection with redirection
may not be closed according to its global value.
* twittering-mode.el: Introduce an ad-hoc treatment for url
library on Emacs21 again. This ensures that the sentinel for an
redirect HTTP request, such as asynchronous retrieval of icon
images, works well.
(twittering-send-http-request): introduce an ad-hoc treatment for
the url library again. It is required because the process for a
redirected HTTP request is alive when the url library for Emacs21
invokes the callback.
(twittering-send-http-request-urllib): add an ad-hoc treatment for
HTTP redirection on Emacs21.
2010-11-27 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix a bug of retrieving a URI repeatedly.
(twittering-resolve-url-request): bind `additional-info' to the
appropriate alist storing the URI that will be retrieved. The
alist is referred by `twittering-url-retrieve-async-sentinel' and
`twittering-url-retrieve-async-clean-up-sentinel'. Since the alist
was null, a URI might be retrieved repeatedly.
2010-11-25 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Delay next asynchronous retrieval until all
sentinels for the current retrieval finish.
(twittering-url-retrieve-async-sentinel): call
`twittering-resolve-url-request' after sentinels finish.
(twittering-url-retrieve-async-clean-up-sentinel): call
`twittering-resolve-url-request' only when the current retrieval
is failed.
* twittering-mode.el: Periodically invoke actions associated with
idle-timer even if Emacs remains idle long time.
(twittering-timer-interval-for-redisplaying): extended to 5.0.
(twittering-url-retrieve-async-sentinel): use
`twittering-run-on-idle' instead of `run-with-idle-timer'.
(twittering-idle-timer-for-redisplay): new variable.
(twittering-run-on-idle): new function.
(twittering-run-repeatedly-on-idle): new function.
(twittering-start): use `twittering-run-repeatedly-on-idle'
instead of `run-with-idle-timer'.
(twittering-stop): also cancel the idle timer for redisplaying.
* twittering-mode.el: Add retrieved timeline spec string to
history even if it includes no new statuses.
(twittering-http-get-default-sentinel): add `spec-string' on
successful retrieval even if there are no new statuses.
* twittering-mode.el: `twittering-url-retrieve-async' immediately
invokes the sentinel if the url has been already retrieved.
(twittering-url-retrieve-async): immediately invoke the sentinel
if the given url has been already retrieved.
* twittering-mode.el: Call `url-retrieve' without attempting
keep-alive.
(twittering-send-http-request): remove special treatment according
to `status-str' for the connection method by url library. It was
necessary because `url-retrieve' invoked its sentinel before the
process exits.
(twittering-send-http-request-urllib): call `url-retrieve' with
binding `url-http-attempt-keepalives' to nil.
* twittering-mode.el: The property symbol `belongs-to' is renamed
`source-spec'.
(twittering-render-timeline): add `source-spec' to each status
instead of `belongs-to'.
(twittering-direct-message): use `source-spec' instead of
`belongs-to'.
(twittering-enter): likewise.
* twittering-mode.el: Fix a bug that some text properties of a
tweet rendered on a buffer may be lost by redisplaying it.
(twittering-make-common-properties): new function.
(twittering-get-common-properties): new function.
(twittering-generate-format-status-function): use
`twittering-make-common-properties'.
(twittering-format-status-for-redisplay): use
`twittering-get-common-properties'.
(twittering-update-filled-string): likewise.
* twittering-mode.el: `twittering-redisplay-status-on-each-buffer'
restores common properties of re-rendered tweets.
(twittering-format-status-for-redisplay): do not restore
properties.
(twittering-update-filled-string): likewise.
(twittering-redisplay-status-on-each-buffer): restore common
properties.
* twittering-mode.el: Add `source-spec' as an entry of alist
storing a tweet.
(twittering-add-statuses-to-timeline-data): add the `source-spec'
property to each new status.
(twittering-make-common-properties): add `source-spec' as a common
property.
(twittering-get-common-properties): update docstring.
(twittering-render-timeline): do not add the `source-spec'
property.
* twittering-mode.el: Correctly define the alias of
`open-ssl-stream' for Emacs21 even if `url-gw.el' has been already
loaded and unavailable autoload has been declared.
(twittering-start-http-session-urllib-https-p): ignore the
autoload declaration of `open-ssl-stream' in `url-gw.el' if
"ssl.el" is unavailable.
* twittering-mode.el: Fix a bug that `twittering-username' is not
initialized when using encryption of authorized token with OAuth.
(twittering-http-get-verify-credentials-sentinel): apropriately
initialize `twittering-username' even if encryption of authorized
token is used with OAuth.
2010-11-14 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix a bug in registration of a sentinel for
asynchronous retrieval.
(twittering-url-retrieve-async): fix registration of sentinels to
avoid registering a sentinel repeatedly.
* twittering-mode.el: Contents retrieved by url library are copied
as unibyte string. Without this modification, binary data may be
retrieved incorrectly.
(twittering-send-http-request-urllib): copy contents retrieved by
url library as unibyte string. Without this modification, binary
data may be retrieved incorrectly.
* twittering-mode.el: Sentinels for `twittering-send-http-request'
are called with a process status symbol instead of a process
status symbol. This is necessary for faking a status of a process
generated by url library.
(twittering-send-http-request): call sentinels with a process
status symbol instead of a process status string.
(twittering-http-get-default-sentinel): receives `status' instead
of `status-str'.
(twittering-http-get-list-index-sentinel): likewise.
(twittering-http-post-default-sentinel): likewise.
(twittering-http-get-verify-credentials-sentinel): likewise.
(twittering-http-get-verify-credentials-clean-up-sentinel):
likewise.
(twittering-oauth-get-token-alist): define sentinels so that they
receive `status' instead of `status-str'.
(twittering-get-and-render-timeline): likewise.
* twittering-mode.el: Redisplay tweets with idle timer.
(twittering-timer-interval-for-redisplaying): change the meaning.
(twittering-start): `twittering-redisplay-status-on-buffer' is
called by `run-with-idle-timer'.
* twittering-mode.el: `twittering-resolve-url-request' uses
`twittering-send-http-request' instead of `url-retrieve'.
(twittering-resolve-url-request): use
`twittering-send-http-request' instead of `url-retrieve'.
(twittering-url-retrieve-async-sentinel): new function.
(twittering-url-retrieve-async-clean-up-sentinel): new function.
* twittering-mode.el: Sentinels for asynchronous retrieval are
invoked with `run-with-idle-timer'. The delay will prevent Emacs
from stucking on inputting characters on other buffer.
(twittering-url-request-sentinel-delay): new variable.
(twittering-url-retrieve-async-sentinel): invoke sentinels with
`run-with-idle-timer'.
2010-11-13 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: `twittering-send-http-request' correctly
transfer `additional-info'.
(twittering-send-http-request): call
`twittering-send-http-request-internal' with correct arguments.
* twittering-mode.el: Remove redundant entries from an argument of
`twittering-send-http-request'.
(twittering-http-get): remove redundant entries from
`additional-info', an argument of `twittering-send-http-request'.
(twittering-http-post): likewise.
* twittering-mode.el: Fix docstring of `twittering-call-api'.
(twittering-call-api): fix docstring.
* twittering-mode.el: `twittering-call-api' extracts a query
string from the given timeline spec.
(twittering-call-api): extract a query string of search timeline
from the given timeline spec.
(twittering-get-and-render-timeline): remove a query string
from the second argument of `twittering-call-api'.
* twittering-mode.el: `twittering-call-api' can calculate how many
tweets should be retrieved.
(twittering-call-api): let the argument `number' of the command
`retrieve-timeline' be optional.
(twittering-get-and-render-timeline): remove explicit calculation
of number of tweets which will be retrieved.
* twittering-mode.el: Add a new argument `additional-info' to
`twittering-http-{get,put}'. It can be used to send information to
generated processes.
(twittering-http-get): replace the argument `noninteractive' with
a new argument `additional-info', which will be sent to
`twittering-send-http-request'.
(twittering-http-post): add a new argument `additional-info',
which will be sent to `twittering-send-http-request'.
(twittering-call-api): send the information of `noninteractive' as
a member of `additional-info' to `twittering-http-get'.
* twittering-mode.el: Timeline spec is sent to a sentinel via
`connection-info' instead of `twittering-process-info-alist'.
(twittering-http-get-default-sentinel): receive the timeline spec
from `connection-info' instead of `twittering-process-info-alist'
via `twittering-get-timeline-spec-from-process'.
(twittering-get-and-render-timeline): send timeline spec to the
sentinel via `additional-info', which is an argument of
`twittering-call-api'.
* twittering-mode.el: Confirm that `twittering-proxy-use' is nil
when trying the connection method `native'.
(twittering-start-http-session-native-tls-p): return nil if
`twittering-proxy-use' is non-nil.
* twittering-mode.el: Display the current connection method on the
mode-line.
(twittering-display-connection-method): new variable.
(twittering-lookup-connection-type): add the entry `display-name'
if necessary.
(twittering-get-connection-method-name): new function.
(twittering-mode-line-buffer-identification): display the current
connection method on the mode-line.
* twittering-mode.el: The default value of
`twittering-url-show-status' is changed to nil.
(twittering-url-show-status): initialized as nil.
* twittering-mode.el: Postpone configuring the global variables
`twittering-username' and `twittering-password' until the account
is authenticated.
(twittering-prepare-account-info): return a pair of username and
password instead of setting them as global variables.
(twittering-verify-credentials): do not set the global variables
`twittering-username' and `twittering-password' until the account
is authenticated.
(twittering-http-get-verify-credentials-sentinel): set the global
variables `twittering-username' and `twittering-password' if
necessary.
* twittering-mode.el: Add new connection method `urllib-http' and
`urllib-https'.
(twittering-connection-type-order): add `urllib-http' and
`urllib-https'.
(twittering-connection-type-table): add new entries for
`urllib-http' and `urllib-https'.
(twittering-send-http-request): add special treatment for the
connection method using the url library.
(twittering-start-http-session-urllib-p): new function.
(twittering-start-http-session-urllib-https-p): new function.
(twittering-send-http-request-urllib): new function.
(twittering-pre-process-buffer-urllib): new function.
2010-10-14 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: `twittering-get-error-message' generates an
error message with explanation if possible.
(twittering-get-error-message): generate an error message with
explanation if possible. `twittering-xml-parse-region' is called
only when it is required. It is determined by the new argument
`header-info'.
(twittering-http-get-default-sentinel): use
`twittering-get-error-message' for generating a total error
message, not only explanation.
(twittering-http-get-list-index-sentinel): likewise.
(twittering-http-post-default-sentinel): likewise.
* twittering-mode.el: The second argument of `twittering-call-api'
is replaced with `additional-info', which is sent to
`twittering-send-http-request' via `twittering-http-get' or
`twittering-http-put'.
(twittering-call-api): replace the argument `noninteractive' with
`additional-info', which is sent to `twittering-send-http-request'
via `twittering-http-get' or `twittering-http-put'.
(twittering-get-and-render-timeline): send `noninteractive' via
the new argument `additional-info' of `twittering-call-api'.
2010-10-09 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Correctly render the format specifier "%L"
with a preceding whitespace. Thanks to Tom X. Tobin.
(twittering-generate-format-table): add a preceding whitespace to
the format specifier "%L". The previous routine contradicts the
docstring of `twittering-status-format'.
* test/test-twittering-mode.el: Correct the test for the format
specifier "%L".
* test/test-twittering-mode.el: Fix the test for HMAC.
* twittering-mode.el (twittering-connection-type-table): remove
obsolete entries.
* twittering-mode.el: `twittering-release-process' is called as a
clean-up sentinel.
(twittering-call-api): accept new option `clean-up-sentinel' for
`retrieve-timeline'.
(twittering-http-default-sentinel): do not call
`twittering-release-process'.
(twittering-get-and-render-timeline): explicitly register
`twittering-release-process' as a clean-up sentinel.
* twittering-mode.el: Classify functions into some groups.
* twittering-mode.el: Add a new function
`twittering-send-http-request-with-default-sentinel'.
(twittering-send-http-request-with-default-sentinel): new function.
* twittering-mode.el: Adapt some functions to
`twittering-send-http-request-with-default-sentinel'.
(twittering-get-response-body): removed.
(twittering-start-http-session): use
`twittering-send-http-request-with-default-sentinel' instead of
`twittering-send-http-request' and
`twittering-http-default-sentinel'.
(twittering-get-error-message): assume that the given buffer
consists of HTTP response body without headers.
(twittering-http-default-sentinel): removed.
(twittering-http-get-default-sentinel): modified so that it can be
invoked via `twittering-send-http-request-with-default-sentinel'.
(twittering-http-get-list-index-sentinel): likewise.
(twittering-http-post-default-sentinel): likewise.
(twittering-oauth-get-token-alist): likewise.
(twittering-http-get-verify-credentials-sentinel): likewise.
(twittering-http-get-verify-credentials-clean-up-sentinel):
likewise.
(twittering-get-status-from-http-response): removed.
(twittering-get-and-render-timeline): modify arguments of
`clean-up-sentinel' to adapt it to
`twittering-send-http-request-with-default-sentinel'.
* twittering-mode.el: Rename
`twittering-send-http-request-with-default-sentinel'
`twittering-send-http-request'.
(twittering-send-http-request-internal): renamed from
`twittering-send-http-request'.
(twittering-send-http-request): renamed from
`twittering-send-http-request-with-default-sentinel'.
(twittering-start-http-session): use
`twittering-send-http-requeset' instead of
`twittering-send-http-request-with-default-sentinel'.
(twittering-oauth-get-token-alist): likewise.
* twittering-mode.el: Validity of a HTTP request is confirmed by
`twittering-make-http-request'.
(twittering-make-http-request): check the validity of arguments.
(twittering-start-http-session): remove validity check.
* twittering-mode.el: Remove `twittering-start-http-session'.
(twittering-start-http-session): removed.
(twittering-http-get): use `twittering-send-http-request' instead
of `twittering-start-http-session'.
(twittering-http-post): likewise.
* twittering-mode.el: "Content-Length" for OAuth is calculated by
`twittering-make-http-request'.
(twittering-oauth-get-token-alist): remove explicit specification
of "Content-Length". The header value is determined by
`twittering-make-http-request'.
* twittering-mode.el: Add `encoded-query-alist' entry to an alist
of a HTTP request. This is required for generating "Authorization"
header of OAuth.
(twittering-make-http-request): add `encoded-query-alist' entry to
an alist corresponding to a HTTP request.
* twittering-mode.el: Add `uri-without-query' entry to an alist of
a HTTP request. This is required for generating "Authorization"
header of OAuth.
(twittering-make-http-request): add `uri-without-query' entry to
an alist corresponding to a HTTP request.
* twittering-mode.el: Introduce
`twittering-add-application-header-to-http-request'.
(twittering-http-application-headers-with-auth): removed.
(twittering-add-application-header-to-http-request): new
function.
(twittering-http-get): use
`twittering-add-application-header-to-http-request' instead of
`twittering-http-application-headers-with-auth'.
(twittering-http-post): likewise.
* twittering-mode.el: Fix `twittering-buffer-related-p' in order
to support multiple edit buffers.
(twittering-buffer-related-p): fix a condition so that it works
well even when multiple edit buffer exists.
* twittering-mode.el: Solve cyclic reference on definition of
`twittering-unicode-replacement-char'.
(twittering-ucs-to-char-internal): new function.
(twittering-unicode-replacement-char): initialized by
`twittering-ucs-to-char-internal'.
(twittering-ucs-to-char): redefined with
`twittering-unicode-replacement-char' and
`twittering-ucs-to-char-internal'.
* twittering-mode.el: Modify some codes to avoid warnings on
byte-compile.
(twittering-start-http-session-native-tls-p): load the tls library
before byte-compiling this function. This avoids a warning of the
reference to `tls-program' on byte-compile.
(twittering-read-from-encrypted-file): likewise. The epa library
and "alpaca.el" are loaded before byte-compiling this function.
(twittering-modeline-properties): new constant.
(twittering-modeline-active): defined with
`twittering-modeline-properties'.
(twittering-modeline-inactive): likewise.
2010-09-26 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Remove redundant pre-processing of HTTP
response buffer for SSL via a proxy.
(twittering-oauth-get-response-alist): remove redundant
pre-processing of HTTP response buffer for SSL via proxy. Instead
of it, `twittering-oauth-get-token-alist' invokes an appropriate
function for pre-processing.
* twittering-mode.el: Correct schemes of URIs used in OAuth/xAuth
procedures.
(twittering-oauth-request-token-url): removed.
(twittering-oauth-authorization-url-base): removed.
(twittering-oauth-access-token-url): removed.
(twittering-oauth-request-token-url-without-scheme): new variable.
(twittering-oauth-authorization-url-base-without-scheme): new
variable.
(twittering-oauth-access-token-url-without-scheme): new variable.
(twittering-oauth-get-token-alist): refer to the scheme of the
given URI instead of `twittering-oauth-use-ssl'.
(twittering-verify-credentials): make a URI with correct scheme
for OAuth or xAuth procedure. The scheme is determined by
`twittering-oauth-use-ssl'.
* twittering-mode.el: A HTTP request alist is included in the
connection info for the request.
(twittering-oauth-get-token-alist): add an HTTP request alist into
`connection-info'.
(twittering-send-http-request-curl): extract the HTTP request
alist from `connection-info' instead of an argument.
(twittering-send-http-request-wget): likewise.
(twittering-send-http-request-native): likewise.
(twittering-make-connection-info): generate connection info
according to an arugment `request'.
(twittering-send-http-request): register the sentinel so that it
will be invoked with three arguments, process, status-string and
connection-info. The connection-info is automatically generated
from the given HTTP request alist.
(twittering-start-http-session): do not bind `connection-info'.
* twittering-mode.el: `twittering-send-http-request' receives
optional arguments for connection method.
(twittering-send-http-request): add two optional arguments for
customizing connection method.
* twittering-mode.el: Fix docstring of
`twittering-make-http-request'.
(twittering-make-http-request): fix docstring.
* twittering-mode.el: `twittering-make-http-request' automatically
adds the header field "Content-Length" if necessary.
(twittering-make-http-request): add the header field
"Content-Length" if it is missing on "POST" method.
(twittering-http-application-headers): do not add the header field
"Content-Length".
* twittering-mode.el: Add `twittering-make-http-request-from-uri'.
(twittering-make-http-request): accept a string as the argument
`query-parameters', which is treated as an encoded query string.
(twittering-make-http-request-from-uri): new function, which
generates a HTTP request alist from URI.
* twittering-mode.el: Rearrange `twittering-oauth-get-token-alist'.
(twittering-oauth-get-token-function-table): removed. Instead of
the variable, `twittering-connection-type-table' is used.
(twittering-oauth-get-token-function-type): removed. Instead of
the variable, `twittering-connection-type-order' is used.
(twittering-oauth-get-token-alist): use
`twittering-make-http-request-from-uri' and
`twittering-send-http-request'.
(twittering-verify-credentials): remove unnecessary statements.
(twittering-ensure-connection-method): take account of
`twittering-oauth-use-ssl'.
* twittering-mode.el: Transfer sentinel functions to
`twittering-default-sentinel' via `connection-info'.
(twittering-start-http-session): transfer the variable `sentinel'
to `twittering-http-default-sentinel' via `connection-info'.
(twittering-http-default-sentinel): remove the arguments `func'
and `clean-up-sentinel'. The sentinel functions are retrieved from
`connection-info'.
2010-09-19 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix `twittering-push-uri-onto-kill-ring'.
(twittering-push-uri-onto-kill-ring): confirm that `kill-ring' is
non-nil before calling `current-kill'.
* twittering-mode.el: Copy tweets by "C-<mouse-3>".
Thanks to Faried Nawaz.
(twittering-mode-menu-on-uri-map): new keymap for menu on URI.
(twittering-mode-on-uri-map): new keymap used on URI.
(twittering-mode-map): bind "C-<down-mouse-3>" to
`mouse-set-point' to move the point and bind "C-<mouse-3>" to
`twittering-push-tweet-onto-kill-ring'.
(twittering-make-clickable-status-datum): embed new keymap
`twittering-mode-on-uri-map' in texts that have `uri' property.
(twittering-generate-format-table): likewise.
(twittering-generate-formater-for-first-spec): likewise.
(twittering-push-tweet-onto-kill-ring): new function.
* twittering-mode.el: Introduce a function sending a HTTP requests
with `curl'.
(twittering-connection-type-table): use new functions
`twittering-start-http-session-generic' and
`twittering-send-http-request-curl' for connection-type `curl'.
(twittering-oauth-get-token-function-table): register the
pre-processing function for `curl'.
(twittering-oauth-get-token-alist-generic): new function. This
works with a function sending HTTP request.
(twittering-oauth-get-token-alist-curl): removed. The function is
replaced with the combination of
`twittering-oauth-get-token-alist-generic' and
`twittering-send-http-request-curl'.
(twittering-oauth-get-token-alist): use
`twittering-oauth-get-token-alist-generic' if the found entry is a
cons pair of functions.
(twittering-send-http-request-curl): new function. This is
abstract interface for sending HTTP request via `curl'.
(twittering-start-http-session): add more entries to
`connection-info'. `twittering-send-http-request-curl' requires
them.
(twittering-start-http-session-generic): new function.
(twittering-start-http-session-curl): removed. The function is
replaced with the combination of
`twittering-start-http-session-generic' and
`twittering-send-http-request-curl'.
* twittering-mode.el: Introduce a function sending a HTTP request
with native functions.
(twittering-connection-type-table): use generic function for
connection-type `native'.
(twittering-oauth-get-token-function-table): likewise.
(twittering-oauth-get-token-alist-native): removed. The function
is replaced with the combination of
`twittering-oauth-get-token-alist-generic' and
`twittering-send-http-request-native'.
(twittering-start-http-session-native): removed. The function is
replaced with the combination of
`twittering-start-http-session-generic' and
`twittering-send-http-request-native'.
* twittering-mode.el: Integrate generic function into
`twittering-start-http-session'.
(twittering-connection-type-table): remove the entry `start' and
rename `start-process' `send-http-request'.
(twittering-lookup-http-start-function): use `send-http-request'
instead of `start-process'.
(twittering-start-http-session): unified with
`twittering-start-http-session-generic'.
(twittering-start-http-session-generic): removed.
* twittering-mode.el: The HTTP header field "Expect" will be added
only when using `curl'.
(twittering-send-http-request-curl): add the field "Expect".
(twittering-start-http-session): remove the field "Expect".
* twittering-mode.el: Integrate generic function into
`twittering-oauth-get-token-alist'.
(twittering-oauth-get-token-alist): unified with
`ftwittering-oauth-get-token-alist-generic'.
(twittering-oauth-get-token-alist-generic): removed.
* twittering-mode.el: Add new connection method `wget'.
(twittering-wget-program): new variable.
(twittering-connection-type-order): add an entry for `wget'.
(twittering-connection-type-table): add entries for
new connection-method `wget'.
(twittering-oauth-get-token-function-table): likewise.
(twittering-find-wget-program): new function.
(twittering-start-http-session-wget-p): new function.
(twittering-send-http-request-wget): new function.
(twittering-pre-process-buffer-wget): new function.
* twittering-mode.el: Use an alist for representing parameters of
a HTTP request.
(twittering-oauth-get-token-alist): use an alist for representing
a HTTP request.
(twittering-send-http-request-curl): receive a HTTP request as an
alist.
(twittering-send-http-request-wget): likewise.
(twittering-send-http-request-native): likewise.
* twittering-mode.el: Rearrange `twittering-make-http-request'.
(twittering-make-http-request): return an alist representing
parameters of a HTTP request instead of a function.
(twittering-start-http-session): generate a HTTP request alist by
`twittering-make-http-request'.
* twittering-mode.el: Ensure an available connection method before
visiting a timeline.
(twittering-lookup-http-start-function): do not retry finding
connection-method with compromise. It is assumed that an available
connection method is already determined here.
(twittering-ensure-connection-method): new function.
(twittering-visit-timeline): ensure that an available connection
method is determined.
* twittering-mode.el: Add `twittering-make-connection-info'.
(twittering-make-connection-info): new function.
(twittering-send-http-request): new function.
(twittering-start-http-session): use new functions.
2010-09-12 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Add an edited tweet into the history without
text properties.
(twittering-edit-extract-status): extract a status without text
properties. They may cause `session.el' to fail to save
`twittering-edit-history' because
`twittering-make-clickable-status-datum' adds text properties with
self-reference to tweets.
* twittering-mode.el (twittering-auth-method): fix docstring.
(twittering-timeline-spec-alias): likewise.
2010-09-04 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-push-uri-onto-kill-ring): avoid
pushing the same URL repeatedly.
* twittering-mode.el: Fix xAuth with `gnutls-cli'.
(twittering-oauth-get-token-alist-native): add a CRLF following
the POST body. `gnutls-cli', which may be invoked by
`open-tls-stream', requires the CRLF at the end of input.
* twittering-mode.el: Introduce `connection-info', which is
transferred to a sentinel.
(twittering-start-http-session): introduce the variable
`connection-info' to transfer the connection information to a
sentinel. Since `connection-info' includes `noninteractive', the
argument `noninteractive' is replaced with `connection-info'.
(twittering-start-http-session-curl): likewise.
(twittering-start-http-session-native): likewise.
(twittering-http-default-sentinel): use `connection-info' instead
of the current `twittering-use-ssl' and `twittering-proxy-use'.
* twittering-mode.el (twittering-http-post): remove use of unbound
variable `noninteractive'.
* twittering-mode.el (twittering-call-api): use the argument
`noninteractive' correctly.
* twittering-mode.el: Introduce a framework to pre-process HTTP
response buffer.
(twittering-connection-type-table): add the entries for
`pre-process-buffer'.
(twittering-oauth-get-response-alist): remove redundant
pre-processing for `openssl s_client'.
(twittering-oauth-get-token-alist-native): pre-process buffer
according to the variable `connection-info'.
(twittering-oauth-get-token-alist-curl): likewise.
(twittering-pre-process-buffer-curl): new function.
(twittering-pre-process-buffer-native): new function.
(twittering-http-default-sentinel): pre-process buffer with the
function registered as `pre-process-buffer' in `connection-info'.
* twittering-mode.el: Fix replying to tweets displayed as replied
tweets. Thanks to Naohiro Aota.
(twittering-enter): correctly use `original-id' for tweets
displayed by `twittering-show-replied-statuses'.
2010-08-25 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Confirm that a buffer associated with a
process hs not been killed.
(twittering-oauth-get-token-alist-native): confirm that the buffer
associated with the process has not been killed.
(twittering-oauth-get-token-alist-curl): likewise.
* twittering-mode.el: Verify an account synchronously.
(twittering-verify-credentials): wait for the authorization to
finish.
2010-08-22 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-atom-xmltree-to-status-datum):
retrieve `user-screen-name' and optional `user-name' from XML for
StatusNet correctly. Thanks to Takashi Masuda.
* twittering-mode.el: Introduce `clean-up-sentinel' to
`twittering-call-api'. It is executed whenever the process
sentinel is invoked.
(twittering-call-api): add new argument `clean-up-sentinel' for
the command `get-list-index' and `verify-credentials'.
(twittering-start-http-session): add new argument
`clean-up-sentinel' executed whenever the process sentinel is
invoked.
(twittering-start-http-session-curl): likewise.
(twittering-start-http-session-native): likewise.
(twittering-http-get): likewise.
(twittering-http-post): likewise.
(twittering-http-default-sentinel): invoke `clean-up-sentinel' if
it is non-nil.
* twittering-mode.el: Fix the race condition on resetting
authorization information when the process exits abnormally.
(twittering-verify-credentials): use `clean-up-sentinel' for
resetting variables when the process exits abnormally or the HTTP
response is invalid.
(twittering-http-get-verify-credentials-clean-up-sentinel): new
function for resetting some variables when the process for
`verify-credentials' API exits abnormally.
2010-08-21 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Restore `twittering-get-{search,status}-url'.
(twittering-lookup-get-status-url): removed.
(twittering-lookup-get-search-url): removed.
(twittering-get-status-url): look up a function suitable for
`twittering-service-method' and call it.
(twittering-get-search-url): likewise.
(twittering-make-clickable-status-datum): directly call
`twittering-get-status-url' and `twittering-get-search-url'
instead of calling them via `twittering-lookup-get-status-url' or
`twittering-lookup-get-search-url'.
(twittering-generate-format-table): likewise.
(twittering-generate-formater-for-first-spec): likewise.
* twittering-mode.el: Switch ways to parse XML depending on
`twittering-service-method'.
(twittering-atom-xmltree-to-status-datum): switch ways to parse
XML depending on `twittering-service-method'.
* twittering-mode.el: Simplify `twittering-call-api'.
(twittering-call-api): reduce calls of `twittering-api-path'.
* twittering-mode.el: Replace direct calls of
`twittering-http-post' with calls of `twittering-call-api'.
(twittering-update-status-from-minibuffer): use
`twittering-call-api' instead of `twittering-http-post'.
2010-08-20 Takashi Masuda <masutaka@nifty.com>
* twittering-mode.el: Support StatusNet.
(twittering-api-prefix): new variable.
(twittering-search-api-method): new variable.
(twittering-web-path-prefix): new variable.
(twittering-service-method): new variable.
(twittering-service-method-table): new variable.
(twittering-api-path): new function.
(twittering-lookup-get-status-url): new function.
(twittering-get-status-url-twitter): new function.
(twittering-get-status-url-statusnet): new function.
(twittering-lookup-get-search-url): new function.
(twittering-get-search-url-twitter): new function.
(twittering-get-search-url-statusnet): new function.
(twittering-call-api): generate a path of API by
`twittering-api-path'. (API のパスは twittering-api-path から取得
するようにした。)
(twittering-edit-post-status): likewise.
(twittering-update-status-from-minibuffer): likewise.
(twittering-atom-xmltree-to-status-datum): support the format
used in StatusNet.(いずれも検索関連の修正。
「interpret-time-diff.patch」「user-name が設定されていないユーザ
に対応」「検索時のユーザアイコンを取得出来るように修正」)
(twittering-make-clickable-status-datum): retrieve `status-url'
and `search-url' via `twittering-lookup-get-status-url' and
`twittering-lookup-get-search-url'. (twittering-lookup-get-status-url
と twittering-lookup-get-search-url を介して status-url と
search-url を取得するようにした。
(twittering-generate-format-table): likewise.
(twittering-generate-formater-for-first-spec): likewise.
* twittering-mode.el: fix statusnet user URL
(twittering-get-status-url-statusnet): fix user URL
* twittering-mode.el (twittering-generate-format-table):
Do not use icon images scaled by API unless Twitter.
* twittering-mode.el: fix statusnet URL
(twittering-get-status-url-statusnet): fix id URL
(twittering-get-status-url-statusnet): fix hashtag URL
2010-08-20 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-edit-post-status): call
`twittering-call-api' instead of calling `twittering-http-post'
directly.
* twittering-mode.el: Do not add unnecessary parameter `source' to
API calls.
(twittering-http-post): do not add unnecessary parameter `source'.
(twittering-call-api): add the parameter `source' when using BASIC
authentication.
* twittering-mode.el (twittering-call-api): Change parameters in
order to follow the update of Twitter API.
* twittering-mode.el: Add `twittering-push-uri-onto-kill-ring' and
bind "U" to it. Thanks to Faried Nawaz.
(twittering-push-uri-onto-kill-ring): new function for pushing the
uri property of the current position onto the kill-ring.
(twittering-mode-map): bind "U" to
`twittering-push-uri-onto-kill-ring'.
* twittering-mode.el: Add `twittering-new-tweets-statuses' for the
hook functions of `twittering-new-tweets-hook'. Thanks to Faried
Nawaz.
(twittering-new-tweets-statuses): new variable.
(twittering-add-statuses-to-timeline-data): bind
`twittering-new-tweets-statuses' to `new-statuses' so that the
hook functions can refer to the new tweets.
2010-08-15 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Confirm that sufficient information is
loaded from the private file.
(twittering-load-private-info): load only variables that are
enumerated in `twittering-variables-stored-with-encryption'.
(twittering-has-oauth-access-token-p): new function for checking
whether `twittering-oauth-access-token-alist' has sufficient
information.
(twittering-verify-credentials): confirm that sufficient
information is loaded from the private file.
2010-08-06 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix options of `curl' for POST with an empty
body.
(twittering-start-http-session-curl): add an option "-d" whenever
`method' equals to "POST".
* twittering-mode.el: Use the ID of the retweeted original tweet
on generating a URL or retweeting it.
(twittering-status-to-status-datum): add new property `source-id'
specifying a source tweet of a retweet.
(twittering-generate-formater-for-first-spec): generate a URL for
a retweet from the ID of its source.
(twittering-generate-format-status-function): add `source-id' as a
common property.
(twittering-native-retweet): use `source-id' for a retweet.
* twittering-mode.el: Update the embedded CA certificate into
`Equifax Secure Certificate Authority'.
(twittering-ensure-ca-cert): replace the CA certificate with
`Equifax Secure Certificate Authority' currently referred by
`api.twitter.com' and `search.twitter.com'.
2010-07-25 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-mode): avoid repeating
authorization when `twittering-initial-timeline-spec-string' is a
list of multiple timeline spec strings.
* twittering-mode.el (twittering-http-default-sentinel): display
an error message when waiting for a response of an authorization
query.
* twittering-mode.el: Replace functions `mapcan' and `map' defined
in `cl-extra' with built-in functions in order to prevent the
byte-compiled `twittering-mode' from depending on `cl-extra'.
(twittering-oauth-get-token-alist-curl): replace `mapcan' with a
combination of `apply', `append' and `mapcar'.
(twittering-start-http-session-curl): likewise.
2010-07-04 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-redisplay-status-on-buffer): Fix
the condition of redisplaying a timeline.
* twittering-mode.el: If it fails to retrieve an image a certain
times, retry no longer.
(twittering-create-image-pair): return
`twittering-error-icon-data-pair' if the argument `image-data' is
nil.
(twittering-make-icon-string): fix the condition of
`image-data'. If it is an integer, it means the time of retries.
* twittering-mode.el: Use icon images scaled by API if possible.
(twittering-generate-format-table): generate the URL of the scaled
icon image by API.
* twittering-mode.el: Use `GET users/profile_image' API only if
the variable `twittering-use-profile-image-api' is non-nil. Since
the API is rate limited, it may cause troubles on other API calls.
(twittering-use-profile-image-api): new variable.
(twittering-generate-format-table): call `GET users/profile_imagne'
API only if `twittering-use-profile-image-api' is non-nil.
2010-07-03 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Replace `xml-parse-region' with
`twittering-xml-parse-region' in order to prevent abnormal exit
caused by decoding unknown numeric character references.
(twittering-unicode-replacement-char): new variable.
(twittering-ucs-to-char): return
`twittering-unicode-replacement-char' if decoding failed.
(decode-char): new advice in order to return
`twittering-unicode-replacement-char' for unknown code-points.
(twittering-xml-parse-region): new function. This function does
not exit abnormally even if given XML includes unknown numeric
references. Unknown numeric references are replaced with
`twittering-unicode-replacement-char'.
(twittering-get-error-message): replace `xml-parse-region' with
`twittering-xml-parse-region'.
(twittering-http-get-list-index-sentinel): likewise.
(twittering-get-status-from-http-response): likewise.
* twittering-mode.el (twittering-oauth-get-token-alist-url): fix a
list of bindings.
2010-07-02 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-oauth-get-token-alist-native):
use `twittering-tls-program' correctly.
* twittering-mode.el: Detect abnormal exit of an invoked process.
(twittering-oauth-get-token-alist-native): confirm the exit
status of the invoked process.
(twittering-oauth-get-token-alist-curl): likewise.
(twittering-http-default-sentinel): likewise.
* twittering-mode.el: Allow insecure server certificates if
`twittering-allow-insecure-server-cert' is non-nil.
(twittering-allow-insecure-server-cert): new variable.
(twittering-oauth-get-token-alist-curl): add "--insecure" option
to the arguments for `curl' if
`twittering-allow-insecure-server-cert' is non-nil.
(twittering-start-http-session-curl): likewise.
(twittering-start-http-session-native-tls-p): add options to the
programs in `tls-program' in order to allow insecure server
certificates if `twittering-allow-insecure-server-cert' is
non-nil.
* twittering-mode.el (twittering-verify-credentials): display an
error message if the variable `twittering-auth-method' is
invalid.
2010-07-01 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Support the url library included in Emacs 23
and later.
(twittering-oauth-get-token-alist-native): support the function
`url-generic-parse-url' that returns parsed URL object generated
as `structure'.
(twittering-oauth-get-token-alist-curl): likewise.
* twittering-mode.el (twittering-call-api): `user', `friends',
`mentions' and `public' timelines include native retweets.
2010-06-30 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-verify-credentials): reset
`twittering-username' when authentication via xAuth failed.
* twittering-mode.el (twittering-verify-credentials): invoke
`twittering-prepare-account-info' before authentication method
requiring account information.
(twittering-visit-timeline): invoke
`twittering-verify-credentials' before reading timeline spec.
2010-06-29 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Confirm process status for avoiding
dead-lock.
(twittering-oauth-get-token-alist-native): confirm the process
status in order to avoid dead-lock. If the process exited
abnormally, the variable `result' becomes nil.
(twittering-oauth-get-token-alist-curl): likewise.
(twittering-verify-credentials): wait for the process to exit
in order to avoid dead-lock.
(twittering-get-list-index-sync): likewise.
* twittering-mode.el (twittering-verify-credentials): wait for the
process to exit in order to avoid dead-lock.
* twittering-mode.el: Support authentication via xAuth.
(twittering-get-list-index-sync): likewise.
(twittering-xauth-auth-str-access-token): new function.
(twittering-oauth-get-token-alist-url): add an argument
`post-body'.
(twittering-oauth-get-token-alist-native): likewise.
(twittering-oauth-get-token-alist-curl): likewise.
(twittering-oauth-get-token-alist): add an optional argument
`post-body'.
(twittering-xauth-get-access-token): new function.
(twittering-prepare-account-info): support xAuth.
(twittering-verify-credentials): likewise.
(twittering-http-application-headers-with-auth): likewise.
(twittering-visit-timeline): call
`twittering-prepare-account-info' for xAuth.
2010-06-13 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-write-and-encrypt): fix arguments
of `epg-context-set-progress-callback' because of the difference
between EasyPG 0.0.16 and that included in Emacs23.
* twittering-mode.el (twittering-save-private-info): change the
permission of the encrypted file in order to prevent others from
reading the file.
(twittering-write-and-encrypt): return t explicitly when it
succeeded in encrypting private information.
* twittering-mode.el (twittering-write-and-encrypt): In order to
prevent `epa-file' to encrypt the file double,
`epa-file-name-regexp' is temorarily changed into the null regexp
that never matches any string.
2010-06-12 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix bugs.
(twittering-hmac-sha1): remove invalid arguments.
(twittering-oauth-auth-str): correct a variable.
* twittering-mode.el: Support master password for storing private
information in an encrypted file.
(twittering-use-master-password): new variable.
(twittering-private-info-file): new variable.
(twittering-variables-stored-with-encryption): new variable.
(twittering-load-private-info): new function.
(twittering-load-private-info-with-guide): new function.
(twittering-save-private-info): new function.
(twittering-save-private-info-with-guide): new function.
(twittering-capable-of-encryption-p): new function.
(twittering-read-from-encrypted-file): new function.
(twittering-write-and-encrypt): new function.
(twittering-verify-credentials): support master password.
* twittering-mode.el: Add codes for debugging functions for
OAuth.
(twittering-oauth-get-token-alist-url): add codes for debug.
(twittering-oauth-get-token-alist-native): likewise.
(twittering-oauth-get-token-alist-curl): likewise.
2010-06-09 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-oauth-get-access-token): reject
invalid PIN code input and strip extra white spaces.
2010-06-05 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: confirm that a valid access token has been
retrieved.
(twittering-oauth-make-response-alist): do not decode a null entry.
(twittering-verify-credentials): confirm that the retrieved
`token-alist' is valid as an access token.
2010-06-04 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el: removed (set-terminal-coding-system 'utf-8)
(twittering-mode-map): changed key bindings:
twittering-public-timeline: C-c C-g -> C-c C-p,
twittering-set-current-hashtag: C-c C-h -> C-c C-t
2010-06-03 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el: add encrypted oauth consumer key/secret
(twittering-auth-method): changed default value to 'oauth
(twittering-oauth-get-access-token): give users a choise to open
authrization URL with browser or not when
twittering-oauth-invoke-browser is nil.
2010-06-03 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Use `twittering-oauth-use-ssl' instead of
`twittering-use-ssl' on functions for OAuth.
(twittering-oauth-use-ssl): add docstring.
(twittering-oauth-get-response-alist): use
`twittering-oauth-use-ssl' instead of `twittering-use-ssl'.
(twittering-oauth-get-token-alist-native): likewise.
(twittering-oauth-get-token-alist-curl): likewise.
(twittering-verify-credentials): likewise.
* twittering-mode.el: Restore window parameters after automatic
redisplaying.
(twittering-current-window-config): new function.
(twittering-restore-window-config-after-modification): new function.
(twittering-redisplay-status-on-each-buffer): restore window
parameters after redisplaying.
* twittering-mode.el: Suppress automatic redisplaying if
unnecessary.
(twittering-redisplay-status-on-each-buffer): do not modify buffer
if updated string is same as the current string in the meaning of
`string='.
(twittering-make-icon-string): give different strings for
displayed and undisplayed icon.
* twittering-mode.el: Stop automatic redisplaying of buffers in
which the mark and region are active.
(twittering-redisplay-status-on-buffer): do not update buffer
in which the mark and region are active.
* twittering-mode.el: Reimplement the status formater that allows
recursive specifiers such as "%FILL{%FACE[bold]{%C{%m/%d}}: %T}".
(twittering-parse-format-string): removed.
(twittering-generate-formater): removed.
(twittering-generate-status-formater-base): removed.
(twittering-generate-format-table): new function.
(twittering-generate-formater-for-first-spec): new function.
(twittering-generate-formater-for-current-level): new function.
(twittering-generate-format-status-function): new function.
(twittering-generate-format-status-function): use new
implementation.
* twittering-mode.el: Add an optional argument for the format
specifier `FILL'. The argument specifies the prefix for the filled
region.
(twittering-status-format): use 2 white spaces as fill-prefix in
default.
(twittering-fill-string): use an additional argument `prefix' as
`fill-prefix' for `fill-region-as-paragraph' if the argument is
non-nil.
(twittering-update-filled-string): transfer the local prefix for
`twittering-fill-string'.
(twittering-generate-formater-for-first-spec): recognize an
optional argument for the format specifier `FILL'.
* twittering-mode.el: Add a new format specifier
"%FOLD[prefix]{...}".
(twittering-fill-string): add an argument `keep-newline'. If it is
non-nil, do not remove newlines in given string.
(twittering-update-filled-string): add an argument
`keep-newline'.
(twittering-generate-formater-for-first-spec): add a new specifier
"%FOLD[prefix]{...}".
* twittering-mode.el: Fix unintended cursor motion caused by
automatic redisplaying.
(twittering-redisplay-status-on-each-buffer): fix the incorrect
cursor motion occurring when it points the beginning of region
that will be be modified.
2010-05-27 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-toggle-activate-buffer): restart
the timer if it is not active when activating a buffer.
2010-05-24 Naohiro Aota <naota@elisp.net>
* twittering-mode.el (twittering-native-retweet): Check if tweet
is my own one.
2010-05-22 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Use the coding-system `utf-8-unix' for
reading data retrieved from Twitter.
(twittering-start-http-session-curl): use the coding-system
`utf-8-unix' for reading data retrieved from Twitter.
(twittering-start-http-session-native): likewise.
* twittering-mode.el: Omit a successful HTTP response and headers
if they seem to be sent from a proxy for CONNECT method.
(twittering-http-default-sentinel): omit a successful HTTP
response and headers from a proxy if using SSL via the proxy.
(twittering-get-response-header): do not remove headers from a
proxy.
* twittering-mode.el: Do not initialize `twittering-tls-program'
multiple times.
(twittering-start-http-session-native-tls-p): check `tls-program'
only if `twittering-tls-program' is nil.
* twittering-mode.el: Cache the result of capability confirmation
for `curl'.
(twittering-start-http-session-curl-p): do not initialize
`twittering-curl-program' multiple times.
(twittering-start-http-session-curl-https-p): do not execute
`curl' multiple times.
* twittering-mode.el: Look-up of connection type is rearranged.
(twittering-lookup-http-start-function): reimplemented.
(twittering-lookup-connection-type): new function.
* twittering-mode.el: Confirm an available connection method
before visiting a timeline.
(twittering-visit-timeline): confirm connection method.
* twittering-mode.el: Support authentication via OAuth. The
authentication requires a consumer information registered with
Twitter and an external WWW browser to authorize a request token.
(twittering-auth-method): new variable.
(twittering-oauth-consumer-key, twittering-oauth-consumer-secret):
new variables for specifying an OAuth consumer.
(twittering-oauth-access-token-alist): new variable for storing
access token.
(twittering-oauth-url-encode): new function.
(twittering-oauth-unhex): new function.
(twittering-oauth-url-decode): new function.
(twittering-oauth-make-signature-base-string): new function.
(twittering-oauth-make-random-string): new function.
(twittering-hmac-sha1): imported from
http://www.emacswiki.org/emacs/HmacShaOne .
(twittering-oauth-auth-str): new function.
(twittering-oauth-auth-str-request-token): new function.
(twittering-oauth-auth-str-exchange-token): new function.
(twittering-oauth-auth-str-access): new function.
(twittering-oauth-make-response-alist): new function.
(twittering-oauth-get-response-alist): new function.
(twittering-oauth-get-token-alist-url): new function.
(twittering-oauth-get-token-alist-native): new function.
(twittering-oauth-get-token-alist-curl): new function.
(twittering-oauth-get-token-function-table): new variable.
(twittering-oauth-get-token-function-type): new variable.
(twittering-oauth-invoke-browser): new variable.
(twittering-oauth-get-token-alist): new function.
(twittering-oauth-get-request-token): new function.
(twittering-oauth-exchange-request-token): new function.
(twittering-oauth-get-access-token): new function.
(twittering-prepare-account-info): acquire username and password
only if `twittering-auth-method' is symbol `basic'.
(twittering-verify-credentials): support Authentication via OAuth.
(twittering-http-application-headers): do not add Authorization
header.
(twittering-http-application-headers-with-auth): new function for
generating headers adapted for each authentication method.
(twittering-http-get): use
`twittering-http-application-headers-with-auth'.
(twittering-http-post): likewise.
(twittering-percent-encode): encode a string according to
Percent-Encoding defined in RFC3986 instead of RFC1738. It simply
calls `twittering-oauth-url-encode'.
(twittering-url-reserved-p): removed.
* test/test-twittering-mode.el: add new test `test-oauth'.
* emacs21/hex-util.el: imported from Emacs22.
* emacs21/sha1.el: imported from Emacs22.
* twittering-mode.el (twittering-oauth-get-access-token): fix the
guide string of authorization via OAuth.
* twittering-mode.el (twittering-hmac-sha1): fix indentation.
* twittering-mode.el: Fix `twittering-hmac-sha1' so that it works
well on Emacs23 and later.
(twittering-hmac-sha1): ensure that internal variables are unibyte
strings even on Emacs23 and later.
* test/test-twittering-mode.el: add new test `test-hmac-sha1'.
* emacs21/sha1.el: Imported from Gnus distributed with Emacs
22.2.1 on Debian 5.0 for Emacs21 that does not include `sha1.el'.
* emacs21/hex-util.el: Imported from Gnus distributed with Emacs
22.2.1 on Debian 5.0 for Emacs21 that does not include
`hex-util.el'.
2010-05-20 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: The configuration of a proxy is referred via
the function `twittering-proxy-info'.
(twittering-proxy-info): return all configuration of the proxy for
the scheme.
* twittering-mode.el: Give priority to the variable
`twittering-proxy-*' over `twittering-http-proxy-*' and
`twittering-https-proxy-*'.
(twittering-proxy-server): defined as a variable.
(twittering-proxy-port): likewise.
(twittering-proxy-keep-alive): likewise.
(twittering-proxy-user): likewise.
(twittering-proxy-password): likewise.
(twittering-normalize-proxy-vars): normalize
`twittering-proxy-port'.
(twittering-proxy-info): return configuration generated from
`twittering-proxy-*' regardless of the scheme (HTTP or HTTPS) if
`twittering-proxy-server' and `twittering-proxy-port' are
non-nil.
2010-05-17 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-start-http-session-curl): fix
extraction of the scheme from the variable `request'.
* twittering-mode.el: Use a relative path to specify the temporary
cert file for `curl' to ignore the difference of path
representation between Windows and Cygwin.
(twittering-start-http-session-curl): change directory before
invoking `curl' and specify the temporary cert file with relative
path.
2010-05-15 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Add copyright of the ACTIVE/INACTIVE
indicators derived from Wanderlust.
(twittering-active-indicator-image): add the copyright as a
comment.
(twittering-inactive-indicator-image): likewise.
* twittering-mode.el: The function `twittering-icon-mode' keeps
the current cursor point.
(twittering-render-timeline): add a new argument `keep-point'.
(twittering-icon-mode): keep the current cursor point.
* test/test-twittering-mode.el: Remove an obsolete test and update
`test-format-status'.
* twittering-mode.el: The proxies for HTTP and HTTPS can be
configured individually. The variables
`twittering-proxy-{server,port,user,password,keep-alive}' are now
aliases.
(twittering-http-proxy-server): new variable.
(twittering-http-proxy-port): new variable.
(twittering-http-proxy-user): new variable.
(twittering-http-proxy-password): new variable.
(twittering-http-proxy-keep-alive): new variable.
(twittering-https-proxy-server): new variable.
(twittering-https-proxy-port): new variable.
(twittering-https-proxy-user): new variable.
(twittering-https-proxy-password): new variable.
(twittering-https-proxy-keep-alive): new variable.
(twittering-proxy-server): changed into an alias to
`twittering-http-proxy-server'.
(twittering-proxy-port): changed into an alias to
`twittering-http-proxy-port.
(twittering-proxy-user): changed into an alias to
`twittering-http-proxy-user.
(twittering-proxy-password): changed into an alias to
`twittering-http-proxy-password.
(twittering-proxy-keep-alive): changed into an alias to
`twittering-http-proxy-keep-alive.
(twittering-normalize-proxy-vars): new function.
(twittering-proxy-info): new function.
(twittering-url-proxy-services): new function.
(twittering-setup-proxy): initialize individual proxy
configurations for HTTP and HTTPS.
* twittering-mode.el: Enable to retrieve icon images silently.
(twittering-url-show-status): new variable.
(twittering-url-wrapper): control display of status even if the
retrieval is asynchronous.
2010-05-11 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix initialization of `twittering-tls-program'.
(twittering-start-http-session-native-tls-p): use
`twittering-tls-program' if it is non-nil.
2010-05-09 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Use "\\`" as the regexp for the head of a
tweet instead of "^". This prevents misinterpretation of tweets
including multiple lines.
(twittering-edit-post-status): correct the regexp for determining
whether the "in-reply-to" ID should be attached or not.
(twittering-update-status-from-minibuffer): likewise.
(twittering-status-not-blank-p): correct the regexp for
distinguish a blank tweet from a non-blank tweet.
* twittering-mode.el: Prevent applying improper functions to a
failed connection.
(twittering-verify-credentials): give up authorization if
`twittering-call-api' returns nil.
(twittering-start-http-session-curl): return nil if it failed to
open a connection.
(twittering-start-http-session-native): likewise.
* twittering-mode.el: Support HTTPS with `tls' library.
(twittering-tls-program): new variable.
(twittering-connection-type-table): register
`twittering-start-http-session-native-tls-p' as the "https" entry
for "native".
(twittering-start-http-session-native-tls-p): new function.
(twittering-start-http-session-native): call `open-tls-stream' if
`twittering-use-ssl' is non-nil.
* emacs21/tls.el: Imported from Emacs 22.2.1 on Debian 5.0 for
Emacs21 that does not include `tls.el'.
2010-05-08 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Add an abstract layer for Twitter API.
(twittering-call-api): new function.
(twittering-timeline-spec-to-host-method): removed.
(twittering-host-method-to-timeline-spec): removed.
(twittering-manage-friendships): removed.
(twittering-manage-favorites): removed.
(twittering-get-tweets): removed.
(twittering-verify-credentials): use `twittering-call-api' instead
of calling `twittering-http-get' directly.
(twittering-get-list-index): likewise.
(twittering-get-and-render-timeline): use `twittering-call-api'
instead of calling `twittering-get-tweets'. The function also
calculates how many tweets should be retrieved.
(twittering-update-lambda): use `twittering-call-api' instead of
calling `twittering-http-post' directly.
(twittering-update-jojo): likewise.
(twittering-native-retweet): likewise.
(twittering-follow): use `twittering-call-api'.
(twittering-favorite): likewise.
* twittering-mode.el: Bind "C-c D" to `twittering-delete-status',
which is a new function deleting a tweet.
(twittering-delete-status): new function.
(twittering-call-api): add a new command `destroy-status'.
(twittering-delete-status-from-data-table): new function.
(twittering-mode-map): bind "C-c D" to `twittering-delete-status'.
2010-05-08 Takashi Masuda <masutaka@nifty.com>
* twittering-mode.el (twittering-update-jojo): 自分のツイートには返
信しないようにした。
* twittering-mode.el (twittering-update-jojo): do not reply to
tweets posted by the current user itself.
2010-05-08 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-jojo-mode-p): confirm that the
buffer has not been killed.
2010-05-06 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix the format specifier "%r" for direct
message.
(twittering-status-to-status-datum): add `recipient-screen-name'
as a element of a status.
(twittering-xmltree-to-status): store `recipient_screen_name'
without modificaiton.
(twittering-generate-status-formater-base): replace "%r" with
`recipient-screen-name' if it exists.
2010-05-05 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Use a dummy buffer to prevent the cursor
from moving without intention after invoking `url-retrieve'.
(twittering-url-request-dummy-buffer-name): new constant for dummy
buffer.
(twittering-resolve-url-request): switch to the dummy buffer just
after killing the content buffer generated by `url-retrieve'. This
prevents multiple threads from having different cursor points for
the same buffer.
2010-05-05 Takashi Masuda <masutaka@nifty.com>
* twittering-mode.el: twittering-jojo-mode の判定ミスを修正。
(twittering-add-statuses-to-timeline-data): 判定方法を変更した。
(twittering-jojo-mode-p): new function
* twittering-mode.el: `twittering-jojo-mode' for each spec is
correctly referred in order to decide whether to invoke
`twittering-update-jojo'.
(twittering-add-statuses-to-timeline-data): correct the condition
for invoking `twittering-update-jojo'.
(twittering-jojo-mode-p): new function.
2010-05-04 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-ask-post): renamed
`twittering-request-confirmation-on-posting'.
* twittering-mode.el (twittering-edit-post-status): correct the
condition for requesting confirmation on posting a status.
2010-05-03 Takashi Masuda <masutaka@nifty.com>
* twittering-mode.el: Tweet する時に y-or-n-p で問い合わせを出来る
ようにした。デフォルトは聞かれない。
(twittering-ask-post): new variable
* twittering-mode.el: Add confirmation on posting a status edited
in pop-up buffer. It is disabled on default.
(twittering-ask-post): new variable.
* twittering-mode.el: `V' の補完対象に :direct_messages や :home を
追加した。
(twittering-read-timeline-spec-with-completion): dummy-hist に追加。
* twittering-mode.el: Add some primary timeline specs, such as
":direct_messages" and ":home", to candidates of completion.
(twittering-read-timeline-spec-with-completion): add some timeline
specs to dummy-hist.
2010-05-03 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-edit-setup-help): generate help
message by using `substitute-command-keys'.
* twittering-mode.el: The format specifier "@" can receive the
time format string, which is used to format the time of
sufficiently old statuses.
(twittering-generate-status-formater-base): add new parameter
'time-format' to the specifier "@".
(twittering-make-passed-time-string): receive new argument
`time-format'.
* twittering-mode.el: Functions for retrieving URLs asynchronously
are added.
(twittering-url-data-hash): new variable for retrieved data.
(twittering-url-request-list): new variable for additional requests.
(twittering-url-request-sentinel-hash): new variable for sentinels.
(twittering-internal-url-queue): new variable.
(twittering-url-request-resolving-p): new variable.
(twittering-url-request-retry-limit): new variable.
(twittering-remove-redundant-queries): new function.
(twittering-resolve-url-request): new function.
(twittering-url-retrieve-async): new function.
* twittering-mode.el: Icons are retrieved asynchronously.
(twittering-icon-prop-hash): new variable.
(twittering-image-data-table): removed.
(twittering-get-display-spec-for-icon): new function.
(twittering-convert-image-data): new function.
(twittering-error-icon-data-pair): new constant.
(twittering-create-image-pair): new function.
(twittering-register-image-data): new function.
(twittering-make-slice-spec): new function.
(twittering-make-display-spec-for-icon): rearranged.
(twittering-make-icon-string): new function.
(twittering-retrieve-image): removed.
(twittering-generate-status-formater-base): use
`twittering-make-icon-string'.
(twittering-image-stack): removed.
(twittering-image-type): removed.
(twittering-image-type-cache): removed.
2010-05-01 Immad Naseer <immad.naseer@gmail.com>
* twittering-mode.el: New interactive functions for direct
messages are added.
(twittering-direct-messages-timeline): new function.
(twittering-sent-direct-messages-timeline): new function.
2010-04-25 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix mode-line to display the rate limit.
(twittering-mode-line-buffer-identification): add the remaining
number of API requests if `twittering-display-remaining' is
non-nil.
* twittering-mode.el: Stop keeping undo information for buffers
managed by `twittering-mode'. Thanks to irie for pointing it out.
(twittering-mode-setup): call `buffer-disable-undo'.
* twittering-mode.el: Verify the account in advance of retrieving
statuses.
(twittering-account-authorization): new variable.
(twittering-account-authorized-p): new function.
(twittering-account-authorization-queried-p): new function.
(twittering-prepare-account-info): new function for completing
username and password.
(twittering-verify-credentials): new function.
(twittering-http-get-verify-credentials-sentinel): new function.
(twittering-get-managed-buffer): start the timer after
authorization.
(twittering-mode-init-global): initialize neither
`twittering-username' nor `twittering-password'.
(twittering-mode): call `twittering-prepare-account-info'.
(twittering-get-and-render-timeline): ignore requests unless
authorization is completed.
(twittering-update-active-buffers): do not retrieve statuses
unless authorization is completed.
(twittering-visit-timeline): verify the account.
(twittering-get-username): use `twittering-username' directly.
(twittering-get-password): use `twittering-password' directly.
(twittering-username-active): removed.
(twittering-password-active): removed.
* twittering-mode.el: `twittering-visit-timeline' initializes
global variables if necessary.
(twittering-visit-timeline): initialize global variables and
prepare account information.
(twittering-mode): delegate the initialization to
`twittering-visit-timeline'.
(twittering-mode-init-global): renamed
`twittering-initialize-global-variables-if-necessary'.
* twittering-mode.el: Support multiple timelines on initialization.
(twittering-initial-timeline-spec-string): mean multiple timelines
if the value is a list of strings.
(twittering-mode): support multiple timeline specs on
initialization.
2010-04-24 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Reimplement indicators.
(twittering-ssl-indicator-image): new constant.
(twittering-modeline-ssl): defined as a constant, which is
initialized on loading `twittering-mode.el'.
(twittering-ssl-image, twittering-ssl-indicator): removed.
(twittering-ssl-icon): removed.
(twittering-active-image, twittering-inactive-image): removed.
(twittering-active-indicator, twittering-inactive-indicator):
removed.
(twittering-icon-directory): removed.
(twittering-active-icon, twittering-inactive-icon): removed.
(twittering-display-image-p): removed.
(twittering-init-mode-line-icons): removed. Images are initialized
as constants on loading `twittering-mode.el'.
(twittering-active-indicator-image): new constant.
(twittering-inactive-indicator-image): new constant.
(twittering-modeline-active): defined as a constat.
(twittering-modeline-inactive): likewise.
(twittering-mode-init-global): remove the call of
`twittering-init-mode-line-icons'.
* twittering-mode.el: Display the buffer state as
`mode-line-buffer-identification' instead of `mode-name'.
(twittering-mode-line-buffer-identification): new function for
generating a mode-line string for `twittering-mode'.
(twittering-mode-string): removed.
(twittering-modeline-ssl): remove brackets from the mode-line
string.
(twittering-modeline-active): use a whitespace with `display' face
as a mode-line string.
(twittering-modeline-inactive): remove brackets from the mode-line
string.
(twittering-update-mode-line): call `force-mode-line-update' only.
(twittering-mode-setup): initialize `mode-name' and
`mode-line-buffer-identification'.
2010-04-19 Takashi Masuda <masutaka@nifty.com>
* twittering-mode.el : 関数名が古かったので、リネーム。
(twittering-init-mode-line-icons):
(twittering-mode-init-global):
twittering-init-active-inactive-icons から
twittering-init-mode-line-icons にリネーム。
* twittering-mode.el : rename old functions.
(twittering-init-mode-line-icons): rename
`twittering-init-active-inactive-icons'
`twittering-init-mode-line-icons'.
* twittering-mode.el : SSL と ACTIVE/INACTIVE の状態をモードライン
アイコンに表示するようにした。-nw 時は文字列を表示する。
(twittering-update-mode-line): mode-line-buffer-identification の設
定を追加。INACTIVE と ssl の mode-name への設定を削除した。
(twittering-display-image-p): 新規マクロ
(twittering-init-active-inactive-icons): 新規関数
(twittering-mode-init-global):
twittering-init-active-inactive-icons を呼ぶように修正。
* twittering-mode.el : display graphical indicators for SSL and
ACTIVE/INACTIVE state on mode-line.
(twittering-update-mode-line): add graphical indicators to
`mode-line-buffer-identification' instead of `mode-name'.
(twittering-display-image-p): new macro.
(twittering-init-active-inactive-icons): new function.
(twittering-mode-init-global): call
`twittering-init-active-inactive-icons'.
* icons/ssl.xpm: 上記に伴い Mew から拝借。
* icons/ssl.xpm: imported from Mew.
* offline.patch: 上記に伴い削除。元々私がブログに公開したものを
Hayamizu 氏が拾って下さったもの。
* offline.patch: removed. (Mr.Hayamizu imported it, which
originated from Masuda's blog.)
2010-04-19 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-get-buffer-from-spec): return nil
if the corresponding buffer has been already killed.
(twittering-update-unread-status-info): do not count statuses for
a killed buffer.
(twittering-http-get-default-sentinel): do not render a timeline
for a killed buffer.
2010-04-17 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Reimplement support of multiple buffers. The
timeline spec and active-mode flag of each managed buffer are
stored as buffer-local variables.
(twittering-timeline-spec): new buffer-local variable.
(twittering-timeline-spec-string): new buffer-local variable.
(twittering-active-mode): new buffer-local variable.
(twittering-buffer-info-list): redefined as a list of buffers.
(twittering-get-buffer-list): follow the redefinition of
`twittering-buffer-info-list'.
(twittering-get-active-buffer-list): likewise.
(twittering-buffer-p): likewise.
(twittering-get-buffer-from-spec): likewise.
(twittering-unregister-buffer): likewise.
(twittering-unregister-killed-buffer): likewise.
(twittering-buffer-active-p): use buffer-local
`twittering-active-mode'.
(twittering-get-timeline-spec-for-buffer): use buffer-local
`twittering-timeline-spec'.
(twittering-get-timeline-spec-string-for-buffer): use buffer-local
`twittering-timeline-spec-string'.
(twittering-register-buffer): removed. Its body is integrated into
`twittering-get-managed-buffer'.
(twittering-replace-spec-string-for-buffer): set buffer-local
`twittering-timeline-spec-string' directly.
(twittering-set-active-flag-for-buffer): use
`twittering-toggle-activate-buffer'.
(twittering-toggle-activate-buffer): set buffer-local
`twittering-active-mode' directly.
(twittering-get-managed-buffer): rearranged.
(twittering-mode-setup): set up `twittering-timeline-spec',
`twittering-timeline-spec-string' and `twittering-active-mode'.
And register the current buffer to `twittering-buffer-info-list'.
* twittering-mode.el: Add functions to switch timelines.
(twittering-switch-to-next-timeline): new function.
(twittering-switch-to-previous-timeline): new function.
(twittering-mode-map): bind "f" and "b" to
`twittering-switch-to-next-timeline' and
`twittering-switch-to-previous-timeline', respectively.
2010-04-09 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-mode-init-global): initialize
faces without using `copy-face' because it does not change the
default face for new frames.
2010-04-07 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Fix a bug on updating timeline history.
(twittering-http-get-default-sentinel): call
`twittering-add-timeline-history' with correct timeline spec
string.
(twittering-add-timeline-history): receive timeline spec string
instead of timeline spec.
* twittering-mode.el (twittering-mode-setup): omit redundant call
of `run-hook'.
* twittering-mode.el (twittering-direct-message): fix a lack of
separator. Thanks to Takashi Masuda.
2010-04-06 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-new-tweets-spec): new variable
for timeline spec on running `twittering-new-tweets-hook'.
* twittering-mode.el: Add an experimental notifier for unread
statuses on mode-line. You can enable it by invoking
`twittering-enable-unread-status-notifier'. To disable it, invoke
`twittering-disable-unread-status-notifier'.
(twittering-unread-status-info): new variable.
(twittering-reset-unread-status-info-if-necessary): new function.
(twittering-set-number-of-unread): new function.
(twittering-make-unread-status-notifier-string): new function.
(twittering-update-unread-status-info): new function.
(twittering-enable-unread-status-notifier): new function.
(twittering-disable-unread-status-notifier): new function.
* twittering-mode.el: Support fixed fill-column for the format
specifier "%FILL{...}". Thanks to William Xu.
(twittering-fill-column): new variable.
2010-04-04 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el: Improve compatibility with global-font-lock mode.
(twittering-mode-init-global): use `bold' instead of
`font-lock-string-face' if it has not been bound yet.
`twittering-mode' does not require loading `font-lock'.
(twittering-mode-setup): prevent `global-font-lock-mode' enabling
`font-lock-mode' by using buffer-local `font-lock-global-modes'.
`twittering-mode' can be used with/without any configuration for
font-lock mode.
* twittering-mode.el: Replace hard-coded hostnames with
variables and functions. Thanks to William Xu.
(twittering-api-host): new variable.
(twittering-api-search-host): new variable.
(twittering-web-host): new variable.
(twittering-get-search-url): new function.
(twittering-make-clickable-status-datum): call
`twittering-get-search-url' instead of using hard-coded hostname.
* twittering-mode.el (twittering-start-http-session-curl): do not
overwrite headers that `curl' will define internally. Thanks to
William Xu.
2010-04-03 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-buffer-active-p): renamed
`twittering-buffer-related-p'.
* twittering-mode.el (twittering-start): check the value of
`twittering-timer-for-redisplaying' before setting timer.
* twittering-mode.el: Multiple buffers are supported.
(twittering-buffer-info-list): new variable for managing multiple
buffers.
(twittering-buffer): both of the function and the variable are
removed.
(twittering-update-mode-line): remove timeline spec from mode-line
because it is displayed as the name of buffer.
(twittering-switch-timeline): removed.
(twittering-get-buffer-list): new function.
(twittering-get-active-buffer-list): new function.
(twittering-buffer-related-p): modified to support multiple buffers.
(twittering-buffer-p): new function.
(twittering-buffer-active-p): new function.
(twittering-get-buffer-from-spec): new function.
(twittering-get-buffer-from-spec-string): new function.
(twittering-get-timeline-spec-for-buffer): new function.
(twittering-get-timeline-spec-string-for-buffer): new function.
(twittering-current-timeline-spec): return timeline spec for the
current buffer.
(twittering-current-timeline-spec-string): return timeline spec
string for the current buffer.
(twittering-register-buffer): new function.
(twittering-unregister-buffer): new function.
(twittering-unregister-killed-buffer): new function.
(twittering-replace-spec-string-for-buffer): new function.
(twittering-set-active-flag-for-buffer): new function.
(twittering-toggle-activate-buffer): new function.
(twittering-activate-buffer): new function.
(twittering-deactivate-buffer): new function.
(twittering-kill-buffer): new function.
(twittering-generate-new-buffer): new function.
(twittering-switch-timeline): removed.
(twittering-get-managed-buffer): new function.
(twittering-mode-map): `twittering-toggle-activate-buffer' is
bound to "a". `twittering-kill-buffer' is bound to "q" instead of
`twittering-suspend'.
(twittering-mode-init-global): new function for initializing
global variables.
(twittering-initialized): new variable.
(twittering-mode-setup): new function for initializing a buffer
being managed by `twittering-mode'.
(twittering-mode): reimplemented.
(twittering-icon-mode): support multiple buffers.
(twittering-http-get-default-sentinel): render the retrieved
statuses on the buffer bound to the timeline spec.
(twittering-redisplay-status-on-buffer): support multiple buffers.
(twittering-redisplay-status-on-each-buffer): new function.
(twittering-render-timeline): require the target buffer.
(twittering-timer-action): support multiple buffers.
(twittering-get-tweets): support multiple buffers.
(twittering-get-and-render-timeline): retrieve and render the
timeline bound to the current buffer.
(twittering-start): use `twittering-update-active-timeline'
instead of `twittering-current-timeline-noninteractive' for
`twittering-timer'.
(twittering-toggle-reverse-mode): support multiple buffers.
(twittering-friends-timeline): call `twittering-visit-timeline'
instead of `twittering-get-and-render-timeline'.
(twittering-home-timeline): likewise.
(twittering-replies-timeline): likewise.
(twittering-public-timeline): likewise.
(twittering-user-timeline): likewise.
(twittering-other-user-timeline): likewise.
(twittering-other-user-timeline-interactive): likewise.
(twittering-other-user-list-interactive): likewise.
(twittering-search): likewise.
(twittering-update-active-buffers): new function for retrieving
timelines for active buffers.
(twittering-current-timeline): retrieve statuses for current
buffer.
(twittering-erase-old-statuses): erase statuses of the timeline
bound to the current buffer.
(twittering-visit-timeline): switch to the buffer generated by
`twittering-get-managed-buffer'.
* twittering-mode.el (twittering-update-server-info): update
mode-lines for all buffers managed by `twittering-mode' if
`twittering-display-remaining' is non-nil.
2010-03-30 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-get-response-header): return nil
if an empty line as a separater is not found in the given buffer.
(twittering-http-default-sentinel): generate `header-info' only if
`header' is non-nil.
2010-03-29 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-url-wrapper): new wrapper
function for using URL library with proxy configuration for
`twittering-mode'.
(twittering-url-insert-file-contents): likewise.
(twittering-url-retrieve-synchronously): likewise.
(twittering-setup-proxy): call `url-scheme-get-property' to avoid
`url-proxy-services' to be reset.
(twittering-retrieve-image): use the wrapper function instead of
a function in URL library.
(twittering-tinyurl-get): likewise.
* twittering-mode.el (twittering-update-status-from-minibuffer):
fix infinite loop on updating a status from minibuffer.
* twittering-mode.el (twittering-start-http-session-curl): modify
the order of arguments for `curl', where the URL is placed last.
2010-03-25 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-get-status-url): change the
format of a URL of a certain status into that used in the web
interface on `http://twitter.com/'.
2010-03-24 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-register-process): store timeline
spec string.
(twittering-get-and-render-timeline): register a process together
with timeline spec string.
(twittering-release-process): use `delq' instead of `delete'.
(twittering-get-timeline-spec-string-from-process): new function
for registered timeline spec string.
* twittering-mode.el (twittering-http-get-default-sentinel):
display the timeline spec string in notification.
2010-03-23 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-mode-map): bind "SPC" and "C-v" to
`twittering-scroll-up', and bind "<backspace>" and "M-v" to
`twittering-scroll-down'.
(twittering-scroll-up): new function. Thanks to Jim Crossley.
(twittering-scroll-down): new function.
2010-03-20 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-edit-post-status): Don't add
parameter `in_reply_to_status_id' if the tweet does not begin with
`@' and username which is passed from callers.
(twittering-update-status-from-minibuffer): Likewise.
(twittering-generate-status-formater-base): Make the specifier
"%r" work similarly to web interface.
2010-03-19 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-retrieve-image): Use
`create-image'.
2010-03-19 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-regexp-hash): New defvar.
(twittering-regexp-atmark): Likewise.
(twittering-extract-timeline-spec): Use these.
(twittering-make-clickable-status-datum): Likewise.
2010-03-19 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-remove-inactive-processes): add
`exit' and `signal' to `inactive-statuses'.
2010-03-18 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-other-user-list-interactive):
Revert part of 2010-03-12 change to prevent an overwrite of a
message which is outputted by `twittering-read-list-name'.
* twittering-mode.el (twittering-http-default-sentinel): Check
process-status before processing sentinel.
* twittering-mode.el (twittering-make-clickable-status-datum): Add
a text property `goto-spec'.
(twittering-other-user-timeline): Refer it.
(twittering-make-clickable-status-datum): Add a text property
`screen-name-in-text' to both `user-name' and `user-screen-name'.
(twittering-make-clickable-status-datum): No longer add text
properties `hashtag-in-text' and `uri-in-text'.
(twittering-enter): Don't refer these properties.
(twittering-make-clickable-status-datum): Reduce loops.
* twittering-mode.el (twittering-follow): Copy username and clear
its text properties before using it for display on minibuffer.
(twittering-other-user-list-interactive): Likewise.
(twittering-read-list-name): Likewise.
(twittering-native-retweet): Likewise for text.
(twittering-favorite): Likewise for text.
2010-03-17 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-generate-status-formater-base):
fix the formater for "%FACE[...]{...}".
2010-03-13 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el: Improve a support of sending direct
messages.
* twittering-mode.el (twittering-update-status-from-pop-up-buffer):
Use twitter API which is related of direct_messages if necessary.
(twittering-update-status-from-minibuffer): Likewise.
(twittering-timeline-spec-is-direct-messages-p): New defun.
(twittering-reply-recipient): Rename from
`twittering-reply-to-id'.
(twittering-update-status-from-pop-up-buffer): Adjust callers.
(twittering-render-timeline): Add a text property `belongs-spec'.
(twittering-update-status-from-pop-up-buffer): Add optional
arguments `username' and `spec'.
(twittering-update-status-from-minibuffer): Likewise.
(twittering-enter): Adjust callers.
* twittering-mode.el (twittering-edit-setup-help): Add optional
arguments `username' and `spec'.
(twittering-update-status-from-pop-up-buffer): Call it here.
(twittering-edit-mode): Don't call it here.
* twittering-mode.el (twittering-direct-message): Call
`twittering-read-username-with-completion'.
* twittering-mode.el (twittering-make-display-spec-for-icon): Use
`create-animated-image' if present (on Emacs24 or later).
2010-03-12 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-http-get-default-sentinel):
Revert part of 2010-03-06 change because the scheduled removing of
public_timeline from twitter API had been canceled on 2010-03-11.
* twittering-mode.el (twittering-other-user-list-interactive): Fix
condition to detect a null string.
(twittering-other-user-timeline-interactive): Likewise.
(twittering-extract-timeline-spec): Modify the condition for
detecting a null string same as others.
(twittering-get-replied-statuses): Likewise.
(twittering-generate-status-formater-base): Likewise.
(twittering-search): Likewise.
(twittering-follow): Likewise.
(twittering-direct-message): Add the condition for `username' is
nil.
(twittering-reply-to-user): Likewise.
(twittering-other-user-list-interactive): Likewise for
`list-name'.
2010-03-11 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-update-status-format): kill
newly generated `*Compile-Log*' buffer if it is empty.
* twittering-mode.el (twittering-mode-init-variables): initialize
account information explicitly.
(twittering-get-username): simplified.
(twittering-get-password): simplified.
2010-03-11 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-render-timeline): Call
`twittering-show-replied-statuses' if necessary.
(twittering-show-replied-tweets): New defvar.
(twittering-get-replied-statuses): Add optional argument `count'.
(twittering-show-replied-statuses): Likewise.
(twittering-have-replied-statuses-p): New defun.
(twittering-show-replied-statuses): Add optional argument
`interactive'.
(twittering-hide-replied-statuses): Likewise.
(twittering-toggle-show-replied-statuses): Adjust callers.
(twittering-show-replied-statuses): Show a reason to do nothing.
(twittering-hide-replied-statuses): Likewise.
* twittering-mode.el (twittering-get-replied-statuses): Fix
condition because `replied-id' always non-nil.
(twittering-hide-replied-statuses): Fix condition to avoid an
infinite loop.
* twittering-mode.el (twittering-hide-replied-statuses): Go to the
head of parent status before hiding replied statuses.
* twittering-mode.el (twittering-default-show-replied-tweets): New
defvar.
(twittering-render-timeline): Use it instead of
`twittering-show-replied-tweets'.
(twittering-toggle-show-replied-statuses): Pass
`twittering-show-replied-tweets' into
`twittering-show-replied-statuses'.
(twittering-show-replied-tweets): Add a docstring.
2010-03-11 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-lookup-http-start-function):
rearranged.
2010-03-10 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-lookup-http-start-function):
Don't use `booleanp' to work on Emacs21.
* twittering-mode.el (twittering-mode-map): Use `kbd' macro same
as other keymaps.
* twittering-mode.el (twittering-goto-next-status): Show a
progress message.
(twittering-goto-previous-status): Likewise.
2010-03-10 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-fill-string): receive adjustment
width as the second argument.
(twittering-update-status-format): support formating status with a
prefix.
(twittering-generate-formater): likewise.
(twittering-generate-status-formater-base): likewise.
(twittering-generate-format-status-function): likewise.
(twittering-update-filled-string): likewise.
(twittering-format-status-for-redisplay): new function for
redisplaying a formated status with a prefix.
* twittering-mode.el (twittering-find-status): new function for
finding a status from an ID.
(twittering-get-replied-statuses): new function for making a list
of replied statuses.
(twittering-mode-map): add
`twittering-toggle-show-replied-statuses' to keymap as "r".
(twittering-replied-statuses-visible-p): new function.
(twittering-show-replied-statuses): new function.
(twittering-hide-replied-statuses): new function.
(twittering-toggle-show-replied-statuses): new function.
(twittering-get-id-at): new function.
(twittering-get-current-status-head): new function.
2010-03-09 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-redisplay-status-on-buffer): call
`func' with the region.
(twittering-make-passed-time-string): restore the original
properties.
* twittering-mode.el (twittering-timeline-data-table): store ID
table and referring ID table, too.
(twittering-current-timeline-id-table): new function.
(twittering-add-statuses-to-timeline-data): store updated ID
tables.
* twittering-mode.el (twittering-generate-status-formater-base):
redisplay filled string including substring that should be
redisplayed.
(twittering-update-filled-string): new function for updating
filled string with `need-to-be-update' property.
2010-03-07 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-edit-replace-at-point): New defun
to call `twittering-edit-length-check' forcefully.
(twittering-edit-mode-map): Bind F4 to it instead of
`twittering-tinyurl-replace-at-point'.
(twittering-edit-length-check): Make all arguments optional.
2010-03-06 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-server-info-alist): new variable
for storing server information.
(twittering-http-status-line-regexp): removed.
* twittering-mode.el (twittering-display-remaining): new variable
for specifying whether the remaining of rate limit should be
displayed on the mode line or not.
(twittering-update-mode-line): display the remaining of rate limit
if `twittering-display-remaining' is non-nil.
(twittering-get-ratelimit-remaining): new function.
(twittering-get-ratelimit-limit): new function.
2010-03-06 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el: Use the new versioned API endpoint at
"api.twitter.com/1" instead of the legacy API endpoint to fit
twitter API specification as of 2010-02-17.
(twittering-timeline-spec-to-host-method): Likewise.
(twittering-host-method-to-timeline-spec): Likewise.
(twittering-edit-post-status): Likewise.
(twittering-update-status-from-minibuffer): Likewise.
(twittering-manage-friendships): Likewise.
(twittering-manage-favorites): Likewise.
(twittering-update-lambda): Likewise.
(twittering-update-jojo): Likewise.
(twittering-http-post): Update a comment.
* twittering-mode.el (twittering-http-get-default-sentinel): Add
an additional information which is related to obsolete
public_timeline.
* twittering-mode.el (twittering-http-post): Set parameter
`source' here.
(twittering-edit-post-status): Adjust callers.
(twittering-update-status-from-minibuffer): Likewise.
(twittering-manage-friendships): Likewise.
(twittering-manage-favorites): Likewise.
(twittering-update-lambda): Likewise.
(twittering-update-jojo): Likewise.
(twittering-native-retweet): Likewise.
* twittering-mode.el (twittering-http-default-sentinel): Call
`twittering-switch-timeline' and `twittering-release-process' only
when `proc' is non-nil.
* twittering-mode.el (twittering-http-get-default-sentinel):
Change style of an additional error message.
(twittering-http-get-list-index-sentinel): Likewise.
(twittering-http-post-default-sentinel): Likewise.
2010-03-03 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-toggle-reverse-mode): invoke
`twittering-render-timeline' correctly.
* twittering-mode.el (twittering-make-display-spec-for-icon): add
2 pixels margin to icons in order to make the cursor stand out.
2010-03-01 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el: Add a support of direct messages (which was
originally written by me in 2010-02-16)
* twittering-mode.el (twittering-xmltree-to-status): Convert a XML
tree retrieved with "direct_messages{,/sent}" request into a list
of status alists which is retrieved from a standard timeline.
(twittering-host-method-to-timeline-spec): Add condition for
`direct_messages' and `direct_messages_sent'.
(twittering-timeline-spec-to-host-method): Modify condition for
`direct_messages' and `direct_messages_sent'.
* twittering-mode.el (twittering-status-format): Modify the
meaning of the specifier "%r" to display a recipient on both
`direct_messages' and `direct_messages_sent'.
* twittering-mode.el (twittering-format-status): Add `url'
property for `direct_messages' and `direct_messages_sent'.
(twittering-get-status-url): Change the second argument ID as
optional.
(twittering-make-clickable-status-datum): Call it.
2010-03-01 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-generate-formater): changed into
a function.
(twittering-generate-status-formater-base): likewise.
(twittering-generate-format-status-function): likewise.
* twittering-mode.el (twittering-find-curl-program): replace
`find' with `memq' in order to execute this function without
loading `cl-seq.el' .
(twittering-start-http-session): likewise.
(twittering-goto-next-thing): likewise.
2010-02-28 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-format-status-function-source):
new variable for the status format used for generating
`twittering-format-status-function'.
(twittering-format-status-function): new variable for
byte-compiled formating function.
(twittering-parse-format-string): new function.
(twittering-generate-formater): new macro for generating a lambda
expression for given a format string and specifiers.
(twittering-generate-status-formater-base): new macro for
generating a lambda expression for given a format string.
(twittering-generate-format-status-function): new macro for
generating format status function.
(twittering-update-status-format): new function for adjusting
`twittering-format-status-function' with the current value of
`twittering-status-format'.
(twittering-mode-init-variables): invoke
`twittering-update-status-format'.
(twittering-render-timeline): call
`twittering-update-status-format' before rendering statuses.
(twittering-format-status): changed into a function receiving one
argument. It only calls `twittering-format-status-function'.
2010-02-27 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-retweet): If `C-u' prefix is
given, `twittering-use-native-retweet' is temporarily reversed
before use.
(twittering-follow): Handle a prefix `C-u' correctly.
(twittering-favorite): Likewise.
* twittering-mode.el (twittering-edit-cancel-status): Show a
message when cancelling a request.
(twittering-native-retweet): Likewise.
(twittering-follow): Likewise.
(twittering-favorite): Likewise.
2010-02-26 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-fill-string): Calculate a column
with `fill-prefix'.
2010-02-25 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-format-status): Use the return
value of the flet'ed function `attr' directly for the specifier
"%L", forgotten in the 2010-02-18 changing.
* twittering-mode.el (twittering-retrieve-image): Check the return
value of `call-process-region'.
(twittering-make-display-spec-for-icon): Check the return value of
`twittering-retrieve-image'.
* twittering-mode.el (twittering-format-status): Don't check
`twittering-image-data-table' here.
(twittering-format-status): Don't define `profile-image' as
flet'ed function for the specifier "%i".
* twittering-mode.el (twittering-get-tweets): Don't call
`twittering-retrieve-image' here.
* twittering-mode.el (twittering-retrieve-image): Bind
`url-show-status' locally to inhibit showing a progress message.
(twittering-tinyurl-get): Likewise.
* twittering-mode.el (twittering-image-type): Don't use the
external command `file' because Emacs can display only an image
which is recongnized by `image-type-from-data'.
(twittering-retrieve-image): Don't look up
`twittering-image-data-table' here.
(twittering-make-display-spec-for-icon): Call
`twittering-retrieve-image' only when `gethash' returns nil.
2010-02-22 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-atom-xmltree-to-status-datum):
Call `twittering-decode-html-entities' to decode entities
properly.
* twittering-mode.el (twittering-get-error-message): Change the
first argument to `buffer' from `proc'.
(twittering-http-get-default-sentinel): Adjust callers.
(twittering-http-get-list-index-sentinel): Likewise.
(twittering-http-post-default-sentinel): Likewise.
2010-02-20 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-current-timeline-spec): Check
`spec-string' is a string before calling
`twittering-string-to-timeline-spec'.
(twittering-get-and-render-timeline): Likewise.
(twittering-read-timeline-spec-with-completion): Likewise.
* twittering-mode.el (twittering-read-timeline-spec-with-completion):
Return nil explicitly when `twittering-string-to-timeline-spec'
return nil.
* twittering-mode.el (twittering-retrieve-image): Use `unless'
instead of `when'.
(twittering-icon-mode): Likewise.
(twittering-scroll-mode): Likewise.
(twittering-jojo-mode): Likewise.
(twittering-toggle-reverse-mode): Likewise.
2010-02-19 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-delete-ca-cert-file): New defun.
(twittering-ensure-ca-cert): Add it as a hook into
`kill-emacs-hook'.
* twittering-mode.el (twittering-get-error-message): New defun to
pickup an error message from a xmltree.
(twittering-http-get-default-sentinel): Use it.
(twittering-http-get-list-index-sentinel): Likewise.
(twittering-http-post-default-sentinel): Likewise.
* twittering-mode.el (twittering-http-get-list-index-sentinel):
Call `twittering-get-response-body' instead of `xml-parse-region'.
2010-02-19 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-set-window-end): use
`window-text-height' instead of `window-body-height' for Emacs21.
2010-02-18 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-native-retweet): Add a margin for
wide characters.
(twittering-favorite): Likewise.
* twittering-mode.el (twittering-extract-timeline-spec): Delete an
unused argument to `error'.
* twittering-mode.el (twittering-format-status): Use the return
value of the flet'ed function `attr' directly for the specifier
"%r".
(twittering-format-status): Reverse condition for the specifier
"%R".
* twittering-mode.el (twittering-lookup-http-start-function): New
defun to decide a connection method from currently available
methods.
(twittering-connection-type-table): New defvar.
(twittering-connection-type-order): Likewise.
* twittering-mode.el (twittering-curl-program): New defvar to
cache a result of `twittering-find-curl-program'.
(twittering-start-http-session-curl-p): New defun.
(twittering-start-http-session-curl-https-p): Likewise.
(twittering-start-http-session-curl): Rename from
`twittering-start-http-ssl-session'.
(twittering-start-http-session-native): Rename from
`twittering-start-http-non-ssl-session'.
2010-02-18 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-current-timeline-spec): return
nil if `twittering-current-timeline-spec-string' returns nil.
(twittering-current-timeline-data): return nil if
`twittering-current-timeline-spec' returns nil.
(twittering-extract-timeline-spec): raise an error if the argument
`str' is nil.
2010-02-17 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-extract-timeline-spec): Check STR
is non-nil first for avoiding an error caused by `string-match'.
* twittering-mode.el (twittering-icon-mode): Add an argument "P"
to `interactive'.
(twittering-scroll-mode): Likewise.
(twittering-jojo-mode): Likewise.
(twittering-toggle-reverse-mode): Likewise.
2010-02-16 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-timeline-spec-to-string): Replace
`-' with `_' in symbol name `direct-messages' and
`direct-messages-sent' to fit the parameters of twitter API.
(twittering-extract-timeline-spec): Likewise.
(twittering-timeline-spec-primary-p): Likewise.
(twittering-timeline-spec-to-host-method): Likewise.
(twittering-timeline-spec-alias): Likewise in a comment.
* twittering-mode.el (twittering-icon-mode): Call
`twittering-update-mode-line' and `twittering-render-timeline'
only when mode was changed.
(twittering-scroll-mode): Likewise.
(twittering-jojo-mode): Likewise.
(twittering-toggle-reverse-mode): Likewise.
2010-02-16 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-get-first-status-head): return
nil if no statuses are rendered in the current buffer.
(twittering-goto-first-status): go to the beginning of buffer if
no statuses are rendered in the current buffer.
(twittering-render-timeline): render tweets from the beginning of
buffer if no statuses are rendered.
* twittering-mode.el (twittering-reverse-mode): new variable for
reverse alignment of tweets in timeline.
(twittering-update-mode-line): add "reverse" to mode-line.
(twittering-render-timeline): support reverse alignment of
statuses.
(twittering-toggle-reverse-mode): new interactive function to
toggle reverse mode.
(twittering-goto-next-status): support reverse mode.
(twittering-goto-previous-status): likewise.
(twittering-set-window-end): add new function.
2010-02-15 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-http-get-list-index-sentinel):
Get a listname from `slug' element which is only in `list' node.
2010-02-15 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-get-and-render-timeline): copy
spec-string and clear its text properties.
* twittering-mode.el (twittering-http-default-sentinel): use
buffer object directly.
(twittering-http-get-default-sentinel): likewise.
* twittering-mode.el (twittering-current-timeline): keep the
current timeline spec string.
* twittering-mode.el (twittering-switch-timeline): adjust the
current timeline spec string to the given `spec-string' even if
they mean the same timeline.
* twittering-mode.el (twittering-http-get-default-sentinel):
invoke `twittering-render-timeline' only if necessary.
(twittering-add-statuses-to-timeline-data): return newly retrieved
statuses.
* twittering-mode.el (twittering-render-timeline): receive
`timeline-data' as an optional argument.
(twittering-http-get-default-sentinel): invoke
`twittering-render-timeline' with new statuses.
2010-02-14 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-get-usernames-from-timeline): new
function for collecting user screen names in a timeline.
(twittering-make-list-from-assoc): removed.
(twittering-read-username-with-completion): use
`twittering-get-usernames-from-timeline' instead of
`twittering-make-list-from-assoc'.
(twittering-read-timeline-spec-with-completion): likewise.
2010-02-14 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-http-get-list-index-sentinel):
Parse current-buffer as a xmltree.
2010-02-14 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-current-timeline-spec-string):
new variable for storing the current timeline spec string.
(twittering-last-requested-timeline-spec-string): removed.
(twittering-last-retrieved-timeline-spec-string): removed.
(twittering-set-current-timeline-spec-string): new function for
referring the current timeline spec string.
(twittering-current-timeline-spec-string): new function for
referring the current timeline spec.
(twittering-switch-timeline-if-necessary): new function for
switching timeline.
(twittering-mode-init-variables): explicitly initialize the
current timeline spec.
(twittering-http-get-default-sentinel): store the retrieved
timeline even if it is not the current timeline.
(twittering-get-and-render-timeline): switch timeline just after
requested.
(twittering-erase-old-statuses): reimplemented.
(twittering-update-mode-line): use
`twittering-current-timeline-spec-string'.
(twittering-add-timeline-history): likewise.
(twittering-current-timeline): likewise.
(twittering-goto-next-status): likewise.
* twittering-mode.el (twittering-add-statuses-to-timeline-data):
integrated with `twittering-cache-status-datum'.
(twittering-cache-status-datum): removed.
2010-02-13 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-mode-init-variables): make local
variables by using `make-local-variable' in order to initialize
the variables with the global values when invoking
`twittering-mode'. You can initialize `twittering-icon-mode',
`twittering-jojo-mode' and `twittering-scroll-mode' by using
`setq' in your `.emacs'.
2010-02-12 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-format-status): remove a newline
from `icon-string' that underlies the icon image.
(twittering-status-format): add a newline to the default value in
order to keep the interval of displayed tweets.
2010-02-12 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-get-tweets): Add optional
argument `since_id'.
(twittering-get-and-render-timeline): Adjust callers.
(twittering-get-tweets): Set parameter `since_id' instead of
`since' because twitter API had dropped support for `since'
parameter on 2009-04-08.
(twittering-http-get-default-sentinel): Modify the condition for
if retrieving statuses is nil.
(twittering-erase-old-statuses): Don't add parameter `since'.
(twittering-status-to-status-datum): No longer use
`twittering-timeline-last-update'.
(twittering-get-and-render-timeline): Likewise.
(twittering-timeline-last-update): Delete variable.
(twittering-local-strftime, twittering-global-strftime): Delete
functions.
(twittering-setftime): Delete function.
* twittering-mode.el (twittering-get-status-from-http-response):
No longer make a reverse list.
(twittering-http-get-default-sentinel): Adjust callers.
2010-02-12 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el
(twittering-find-processes-for-timeline-spec): new function for
finding processes retrieving a specific timeline spec.
(twittering-remove-inactive-processes): new function for removing
inactive processes from `twittering-process-info-alist'.
(twittering-process-active-p): new function for checking whether
the processes for a specific timeline spec are active or not.
(twittering-get-and-render-timeline): use
`twittering-process-active-p' instead of referring
`twittering-process-info-alist' directly.
* twittering-mode.el (twittering-http-get-default-sentinel): run
`twittering-new-tweets-hook' even if the retrieval is
non-interactive.
* twittering-mode.el (twittering-timeline-data): removed.
(twittering-current-timeline-spec): new function for the current
timeline spec.
(twittering-current-timeline-data): new function for the current
timeline data.
(twittering-remove-timeline-data): new function for clearing a
specific timeline data from `twittering-timeline-data-table`.
(twittering-add-statuses-to-timeline-data): new function for
adding statuses to `twittering-timeline-data-table'.
(twittering-http-get-default-sentinel): use
`twittering-add-statuses-to-timeline-data'.
(twittering-cache-status-datum): change the third argument into
non-optional because the global `twittering-timeline-data' is
obsoleted.
(twittering-get-and-render-timeline): do not modify
`twittering-timeline-data'.
(twittering-render-timeline): use
`twittering-current-timeline-data' instead of
`twittering-timeline-data'.
(twittering-erase-old-statuses): likewise.
(twittering-read-username-with-completion): likewise.
(twittering-read-timeline-spec-with-completion): likewise.
2010-02-11 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-fill-string): load "kinsoku.el"
in advance if necessary.
2010-02-11 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el: No longer clear fetched timeline when
switching to another timeline.
* twittering-mode.el (twittering-timeline-data-table): New defvar.
(twittering-http-get-default-sentinel): Save current timeline into
`twittering-timeline-data-table' when retrieving it successfully.
(twittering-get-and-render-timeline): Load target timeline from
`twittering-timeline-data-table' when switching to another
timeline.
2010-02-10 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-status-not-blank-p): Fix the
regexp for case of "text @user".
* test/test-twittering-mode.el (test-status-not-blank-p): Add a
testcase.
* twittering-mode.el (twittering-setup-proxy): Return t explicitly
when the proxy related configurations are consistent.
(twittering-toggle-proxy): Call `twittering-setup-proxy'.
2010-02-09 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-http-get-default-sentinel): Get a
buffer associate with the process from calling `process-buffer'
instead of `current-buffer'.
* twittering-mode.el (twittering-edit-cancel-status): Confirm
before calling `twittering-edit-close' when an edit buffer was
modified.
(twittering-update-status-from-pop-up-buffer): Mark an edit buffer
as unmodified.
* twittering-mode.el (twittering-edit-length-check): Calculate
length of a tweet with a sign string.
* twittering-mode.el (twittering-native-retweet): Truncate a tweet
by width instead of length.
(twittering-favorite): Likewise.
* twittering-mode.el (twittering-http-default-sentinel): Get a
buffer associate with the process from calling `process-buffer'
instead of taking from an argument.
(twittering-http-default-sentinel): Delete an unnecessary
argument.
(twittering-start-http-ssl-session): Adjust callers.
(twittering-start-http-non-ssl-session): Likewise.
2010-02-09 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-goto-previous-status): simplified.
* twittering-mode.el (twittering-goto-next-status): retrieve
additional statuses if the function is called at the end of the
buffer.
* twittering-mode.el (twittering-render-timeline): use `insert'
when inserting a status at the end of the buffer in order to keep
the marker pointing the end of the buffer.
* twittering-mode.el (twittering-render-timeline): move the
position correctly even if the buffer is invisible.
2010-02-08 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-http-default-sentinel): Delete a
call to `twittering-release-process' in the BODYFORM to avoid a
double release.
2010-02-08 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-http-default-sentinel): call
`twittering-release-process' even if some errors happen.
(twittering-http-get-default-sentinel): remove invocation of
`twittering-release-process'.
2010-02-08 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-http-get-default-sentinel): Call
`twittering-release-process' when status code is not equal to
"200", forgotten in the 2010-02-06 changing.
* twittering-mode.el (twittering-status-to-status-datum): Change
`regex-index' variable to local scope from global one.
(twittering-status-to-status-datum): Rename `regex-index' to
`regexp-index'.
* twittering-mode.el (debug-print): Reduce redundant calls of
`insert' because it can take multiple arguments.
(debug-printf): Remove an unnecessary call to `concat' because
`insert' can take multiple arguments.
* twittering-mode.el (twittering-extract-timeline-spec): Fix the
regexp for "search" timeline spec; same as for "filter".
* twittering-mode.el (twittering-make-clickable-status-datum):
When trying to add a text property to `source', check it is
non-nil first for avoiding an error caused by `string-match'.
2010-02-07 Tadashi MATSUO <tad@mymail.twin.jp>
* test/test-twittering-mode.el (test-format-status): replace the
format specifier "%t" with "%T".
* twittering-mode.el (twittering-extract-timeline-spec): fix the
regexp for "filter" timeline spec.
* test/test-twittering-mode.el (timeline-spec): add a test for
trailing backslashes.
* twittering-mode.el (twittering-extract-timeline-spec): add error
messages for some conditions.
* twittering-mode.el
(twittering-read-timeline-spec-with-completion): fix the regexp
for judging whether a list name is required or not.
* twittering-mode.el
(twittering-read-timeline-spec-with-completion): catch errors on
interpreting timeline spec string.
2010-02-07 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-http-get): Add an optional
argument for a response data format.
(twittering-http-post): Likewise.
(twittering-get-list-index): Adjust callers.
(twittering-http-post): Delete unused argument `contents'.
* twittering-mode.el (twittering-http-get-default-sentinel): Check
status-code here instead of `twittering-http-default-sentinel'.
(twittering-http-get-list-index-sentinel): Likewise.
(twittering-http-post-default-sentinel): Likewise.
(twittering-http-default-sentinel): Adjust callers.
* twittering-mode.el (twittering-http-get-list-index-sentinel):
Set a null string explicitly if user does not have a list.
2010-02-06 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-http-default-sentinel): New defun
to share code between `twittering-http-get-default-sentinel',
`twittering-http-get-list-index-sentinel', and
`twittering-http-post-default-sentinel'.
(twittering-http-get-default-sentinel): Adjust function.
(twittering-http-get-list-index-sentinel): Likewise.
(twittering-http-post-default-sentinel): Likewise.
(twittering-start-http-ssl-session): Adjust callers.
(twittering-start-http-non-ssl-session): Likewise.
2010-02-06 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-edit-post-status): Don't add
parameter `in_reply_to_status_id' if the tweet does not begin
with `@'.
(twittering-update-status-from-minibuffer): Likewise.
* twittering-mode.el (twittering-status-not-blank-p): Fix a regexp
pattern for USER.
(twittering-status-to-status-datum): Likewise.
(twittering-http-get-list-index-sentinel): Change a regexp pattern
for LISTNAME.
2010-02-06 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-get-and-render-timeline): ignore
non-interactive request if a process is waiting for responses.
* twittering-mode.el (twittering-mode): set `buffer-read-only' to
t explicitly.
(twittering-render-timeline): bind `buffer-read-only' with `let*'
locally.
2010-02-05 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-update-status-from-pop-up-buffer):
Use the current hashtag if set; same as
`twittering-update-status-from-minibuffer'.
2010-02-05 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-format-status): replace a lacked
property by an empty string.
* twittering-mode.el (twittering-get-status-from-http-response):
use ATOM format instead of JSON format.
(twittering-atom-xmltree-to-status-datum): new function for
converting an entry of ATOM into a status alist.
(twittering-atom-xmltree-to-status): new function for converting a
XML tree of ATOM into a list of status alists.
(twittering-json-to-status-datum): removed.
(twittering-json-to-status): removed.
(twittering-get-tweets): retrieve "search" timeline in ATOM format
instead of JSON format.
(twittering-get-and-render-timeline): remove dependence on
`json.el'.
(twittering-search): likewise.
2010-02-04 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-status-to-status-datum): assign a
retweet the ID issued when it is retweeted. `source-id', which is
the ID of the original tweet, is also assigned to the retweet.
(twittering-cache-status-datum): do not register multiple retweets
referring the same tweet.
* twittering-mode.el (twittering-http-get-default-sentinel): make
a hash table for already retrieved IDs.
(twittering-cache-status-datum): use a hash table of IDs to avoid
registering redundant tweets.
* twittering-mode.el (twittering-status-to-status-datum): fix
lacked binding of `source-id' and `source-created-at'.
* twittering-mode.el (twittering-cache-status-datum): register IDs
with ID-TABLE when a tweet is added to DATA-VAR. This prevents
duplicated tweets in one retrieval from being registered.
2010-02-03 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-http-get-default-sentinel): sort
`twittering-timeline-data' by ID.
2010-02-03 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-status-to-status-datum): Don't
rewrite `created-at' by a same name element in `retweeted_status'
node.
2010-02-02 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-get-response-body): Add an
optional second argument to share code between this and
`twittering-get-response-body-string'.
(twittering-get-response-body-string): Delete function.
(twittering-get-status-from-http-response): Adjust callers.
2010-02-02 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-http-get-default-sentinel): use
`twittering-get-status-from-http-response'.
(twittering-get-status-from-http-response): new function for
extracting statuses from HTTP response.
(twittering-get-tweets): use
`twittering-http-get-default-sentinel' for the "search" timeline
spec.
(twittering-http-get-search-sentinel): removed.
2010-01-31 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-http-get-default-sentinel):
rearranged.
* twittering-mode.el (twittering-start-http-ssl-session): return
the process object.
(twittering-start-http-non-ssl-session): likewise.
(twittering-get-tweets): likewise.
* twittering-mode.el (twittering-process-info-alist): new variable
for managing active process and timeline spec being retrieved by
the process.
(twittering-register-process): new function for registering a pair
of process and timeline spec.
(twittering-release-process): new function for releasing a process.
(twittering-get-timeline-spec-from-process): new function for
getting timeline spec retrieved by the given process.
(twittering-http-get-default-sentinel): discard statuses if
the retrieved spec differs from the last requested one.
(twittering-get-and-render-timeline): register a pair of the
requested timeline spec and process for retrieving it.
2010-01-30 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-fill-string): use `frame-width'
only if no windows display the `*twittering*' buffer.
* twittering-mode.el (twittering-for-each-property-region): new
function to process each region with a certain property.
* twittering-mode.el (twittering-timer-for-redisplaying): new
variable for timer of redisplaying statuses.
(twittering-timer-interval-for-redisplaying): new variable
specifying the interval of redisplaying statuses.
(twittering-redisplay-status-on-buffer): new function to redisplay
statuses on buffer.
(twittering-format-status): append `need-to-be-update' property to
the specifier "%@" and "%FILL{...}" including "%@".
(twittering-start): start the timer of redisplaying statuses.
(twittering-stop): stop the timer of redisplaying statuses.
* twittering-mode.el (twittering-make-passed-time-string): new
function to generate a string displayed as passed time of a
status.
(twittering-format-status): use
`twittering-make-passed-time-string' for the specifier "%@".
2010-01-29 Daiji Kanematsu <daijik@gmail.com>
* twittering-mode.el (toplevel): add `easy-menu-define' in order
to add the menu `Twitter'.
2010-01-29 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-fill-string): Add an extra
argument to `min' for avoiding error "Wrong number of arguments:
min, 0".
* twittering-mode.el (twittering-extract-timeline-spec): On
search-mode, return a spec only when the length of `escaped-query'
is greater than zero.
2010-01-28 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-render-timeline): simplified by
using `insert-before-markers' instead of `insert'. This removes
additional movement of points for scroll-mode.
2010-01-26 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-status-to-status-datum): Add
`original-user-name' and `original-user-screen-name' to return
an alist; fix an incomplete merge on 2010-01-22.
(twittering-json-to-status-datum): Likewise.
* twittering-mode.el (twittering-json-to-status-datum): Use
`retweeted-status-data' as variable instead of `retweeted-status';
same as `twittering-status-to-status-datum'.
2010-01-26 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (toplevel): Require 'unicode explicitly on
Emacs21. See a comment of `twittering-ucs-to-char' for more
details.
(twittering-ucs-to-char): Check (featurep 'unicode) instead of
(featurep 'mucs).
(twittering-ucs-to-char): Update comment.
* twittering-mode.el (toplevel): On Emacs21, always call
`set-terminal-coding-system'.
2010-01-25 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-format-status): Call
`twittering-make-display-spec-for-icon' only when `window-system'
is non-nil to avoid error "Non-X frame used" under Emacs which is
using a text-only terminal.
2010-01-25 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-extract-timeline-spec): add new
timeline spec string for hashtag.
2010-01-23 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-json-to-status-datum): Don't
refer to `twittering-use-native-retweet'; same as
`twittering-status-to-status-datum'.
2010-01-23 Naohiro Aota <naota@elisp.net>
* twittering-mode.el (twittering-home-timeline): Add new funciton.
2010-01-23 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-fill-string): adjust
`fill-column' to the minimum width of windows displaying
`*twittering*' buffer. Thanks to Naohiro Aota.
* twittering-mode.el (twittering-render-timeline): take account of
multiple windows displaying `*twittering*' buffer.
Thanks to Naohiro Aota.
* twittering-mode.el (twittering-format-status): fix an incorrect
index on filling text for the specifier "%t".
2010-01-24 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-extract-timeline-spec): support
functional alias.
2010-01-23 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-timeline-spec-to-host-method):
return query string as a element of returned list.
(twittering-host-method-to-timeline-spec): receive query string as
a optional argument.
(twittering-http-get): remove special adjustment for search
method, which is now unnecessary.
(twittering-get-tweets): always receive query string as an
argument for search method.
(twittering-get-search): removed.
(twittering-get-and-render-timeline): send query string if the
given spec is `search'.
(twittering-search): execute search via
`twittering-get-and-render-timeline'.
* twittering-mode.el (twittering-timeline-spec-to-string): modify
the string format of `search' spec.
(twittering-extract-timeline-spec): likewise.
2010-01-22 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-initial-timeline-spec-string):
Change value to ":home" from ":friends".
* twittering-mode.el (twittering-status-to-status-datum): Don't
refer to `twittering-use-native-retweet'.
* twittering-mode.el (twittering-http-get-list-index-sentinel):
Fix a reference to `mes' as a variable, not as a function.
2010-01-22 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-fill-string): add new function
for generating filled string.
(twittering-format-status): use `twittering-fill-string'.
(twittering-render-timeline): remove unnecessary binding of the
variable `fill-column'.
2010-01-22 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el: Add search support (which was originally
written by Kensuke Matsuzaki in December 2009)
* twittering-mode.el (twittering-json-to-status-datum): Add code
for native retweets.
(twittering-http-get-search-sentinel): Sync with HEAD.
(twittering-get-response-body-string): Likewise.
* twittering-mode.el (twittering-get-tweets): Rewrite to match
this to the new-timeline spec.
(twittering-get-search): Call `twittering-get-tweets' instead of
`twittering-http-get'
(twittering-search): Call `twittering-get-search' instead of
`twittering-get-tweets'.
* twittering-mode.el (twittering-timeline-spec-to-string): Add a
condition for search-mode.
(twittering-extract-timeline-spec): Likewise.
(twittering-timeline-spec-to-host-method): Likewise.
(twittering-host-method-to-timeline-spec): Likewise.
* twittering-mode.el (twittering-http-get): Add an adjusting code.
In search-mode, a `method' variable is now contains a query word
for internal use. For this reason, we must adjust it before pass
it into `twittering-start-http-session'.
2010-01-21 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el: Add a fail statement to work again under
Emacs21 without Mule-UCS.
(toplevel): Don't abort if require failed.
(twittering-ucs-to-char): Return `?' explicitly if `decode-char'
failed.
* twittering-mode.el (twittering-get-tweets): Rename from
`twittering-get-twits'.
(twittering-get-and-render-timeline): Adjust callers.
(twittering-new-tweets-hook): Fix a docstring.
2010-01-21 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-render-timeline): reduce
redundant calls of `goto-char'.
* twittering-mode.el (twittering-render-timeline): fix logic for
inserting statuses not to duplicate the last status.
2010-01-20 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-http-get-default-sentinel): Show
the reason phrase with status code if status code is not equal to
"200"; same as `twittering-http-post-default-sentinel'.
(twittering-http-get-list-index-sentinel): Likewise.
* twittering-mode.el (twittering-http-status-line-regexp): New
defconst to share this between several functions. The regexp
pattern to obey to RFC 2616.
(twittering-http-get-default-sentinel): Use it.
(twittering-http-post-default-sentinel): Likewise.
(twittering-http-get-list-index-sentinel): Likewise.
* twittering-mode.el (twittering-tinyurl-get): Remove an
unnecessary call to `concat'.
* twittering-mode.el (twittering-update-jojo): Make a tweet by
`twittering-ucs-to-char' instead of `string-as-multibyte'.
2010-01-19 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-get-first-status-head): add.
(twittering-goto-first-status): add.
(twittering-mode-map): bind `twittering-goto-first-status' to "H"
instead of `begininng-of-buffer'.
(twittering-render-timeline): use `twittering-goto-first-status'.
2010-01-18 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-ucs-to-char): Add a workaround
with navi2ch prior to 1.8.3, which is currently last release
version as of 2010-01-18. The problem is fixed in navi2ch dated
2010-01-16 or later, but not released yet.
2010-01-17 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-format-status): fix the regexp
for the specifier "%FILL{...}" to accept pairs of braces inside of
"{...}".
* twittering-mode.el (twittering-format-status): add new format
decorator "%FACE[face-name]{...}", which decorates braced strings
with the specified face.
* twittering-mode.el (twittering-render-timeline): support
additional rendering.
(twittering-http-get-default-sentinel): send the additional
argument `same-timeline' to `twittering-render-timeline'.
(twittering-status-id<): add new function for comparing two ids.
(twittering-status-id=): likewise.
2010-01-16 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-get-response-header): Delete an
adjusting code bacause `with-current-buffer' that can accept both
a buffer and a buffer name.
(twittering-get-response-body): Likewise.
2010-01-16 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-format-status): fix incorrect
destructive modification of the replacement table for the
specifier "%FILL{...}".
2010-01-16 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-edit-setup-help): use 0-witdh
overlay to display help.
(twittering-edit-mode, twittering-edit-post-status): do not use
newline chars for help-overlay anymore.
(twittering-edit-post-status): probihit posting over 140 chars
tweets.
2010-01-15 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el: changed URL
2010-01-15 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-edit-buffer): New defvar.
(twittering-update-status-from-pop-up-buffer): Use it.
* twittering-mode.el (twittering-buffer-active-p): New defun.
(twittering-http-get-default-sentinel): Call it to show a
non-critical message on minibuffer only when current buffer is
twittering-mode related buffer.
(twittering-http-post-default-sentinel): Likewise.
(twittering-get-response-body): Likewise.
* twittering-mode.el (twittering-buffer-active-p): Delete an
unnecessary code which is added for keep a backward compatibility.
2010-01-15 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-get-next-status-head): add a
function finding the next head of status with `id' property. This
replaces `twittering-get-next-username-face-pos'.
(twittering-goto-next-status): use
`twittering-get-next-status-head' instead of
`twittering-get-next-username-face-pos'.
(twittering-goto-next-status-of-user): likewise.
* twittering-mode.el (twittering-get-previous-status-head): add a
function finding the previous head of status with `id'
property. This replaces
`twittering-get-previous-username-face-pos'.
(twittering-goto-previous-status): use
`twittering-get-previous-status-head' instead of
`twittering-get-previous-username-face-pos'.
(twittering-goto-previous-status-of-user): likewise.
2010-01-15 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-mode-identity): add. Identify
'twittering-mode.el' by $Id$ tag.
2010-01-14 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-remove-duplicates): check
availability of `delete-dups' by `fboundp' instead of
`emacs-major-version'.
2010-01-14 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-format-status): add docstring
2010-01-15 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-update-status-function): add
(twittering-update-status-from-pop-up-buffer): renamed from
twittering-edit-status
(twittering-update-status-interactive, twittering-enter)
(twittering-organic-retweet, twittering-direct-message): use
twittering-update-status-function
(twittering-mode-map): bind 'u' to
twittering-update-status-interactive
2010-01-13 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-format-string): fix the search of
the key string following the prefix from a string including
newlines.
* twittering-mode.el (twittering-format-status): remove a
newline as a separator of tweets.
(twittering-render-timeline): insert a newline as a separator of
tweets.
* twittering-mode.el (twittering-format-status): add new format
specifier "%T", which is converted to the raw text.
* twittering-mode.el (twittering-format-status): add new format
specifier "%FILL{...}", which applies `fill-region-as-paragraph'
to the strings in braces.
* twittering-mode.el (twittering-status-format): use '%FILL{...}'
and '%T' for the default value instead of '%t'.
2010-01-12 Yuto Hayamizu <y.hayamizu@gmail.com>
* test/run-test.sh (exit_status): add 'emacs' command to test
target emacsen
2010-01-12 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-format-status): fill the text
with strings following "%t".
2010-01-12 Yuto Hayamizu <y.hayamizu@gmail.com>
* test/test-twittering-mode.el (test-icon-mode): removed use of
twittering-tmp-dir
2010-01-12 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-start-http-session): Call
`twittering-find-curl-program' only when `twittering-use-ssl' is
non-nil.
* twittering-mode.el (twittering-wget-buffer): Delete function.
(twittering-wget-buffer): Delete variable.
2010-01-11 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-convert-program): initialize
without confirming whether `convert' comes from ImageMagick.
(twittering-mode-init-variables): confirm whether the found
`convert' is a part of ImageMagick or GraphicsMagick if
`twittering-use-convert' is non-nil. If the program does not come
from ImageMagick or GraphicsMagick, `twittering-use-convert' is
changed into nil.
2010-01-10 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-convert-program): checks whether
'convert' is a part of ImageMagick. Windows XP has 'convert.exe'
in WINDOWS/system32, which is a partition converter.
(twittering-use-convert): use the value of
twittering-convert-program
2010-01-11 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-status-format): modify the
meaning of the specifier "%t" to remove implicit filling as a
paragraph.
(twittering-render-timeline): remove implicit filling a text as a
paragraph. In addition, a newline as a delimiter is added by
`twittering-format-status'.
(twittering-format-status): with "%t", fill a text as a paragraph.
This function adds a newline at the end of status instead of
`twittering-render-timeline'. Then, the newline as a delimiter
also has the same text properties as the body of the tweet.
2010-01-10 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-remove-duplicates): add for
portability.
(twittering-completing-read): add a modified version of
`completing-read' that can accept candidates as a list of a string
on Emacs21.
(twittering-set-current-hashtag): use `twittering-completing-read'
instead of `completing-read'.
(twittering-read-username-with-completion): likewise.
(twittering-read-list-name): likewise.
(twittering-read-timeline-spec-with-completion): likewise.
2010-01-10 Yuto Hayamizu <y.hayamizu@gmail.com>
* test/test-twittering-mode.el (test-status-not-blank-p): add a
testcase reproducing the bug of twittering-status-not-blank-p.
* twittering-mode.el (twittering-use-native-retweet): renamed from
twittering-use-native-retweets
(twittering-status-not-blank-p): bug fix: return nil if a status
is ended by '@foo'.
* twittering-mode.el (twittering-edit-post-status): add trailing
newlines to new history element because help-overlay need it.
* twittering-mode.el (twittering-make-display-spec-for-icon):
returns nil if the type of the image is not supported.
2010-01-09 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-status-to-status-datum): Change
retweet related variables to local scope from global one.
* twittering-mode.el (twittering-extract-timeline-spec): Change
syntax of error message to fit the GNU Emacs Lisp convention.
(twittering-timeline-spec-to-host-method): Likewise.
(twittering-get-and-render-timeline): Likewise.
* twittering-mode.el (twittering-extract-timeline-spec): Remove an
unnecessary call to `format' because all arguments of `error' pass
to `format'.
(twittering-timeline-spec-to-host-method): Likewise.
(twittering-get-and-render-timeline): Likewise.
* twittering-mode.el (twittering-read-username-with-completion):
Convert a list of username strings to an alist before calling
`completing-read' to work on Emacs21; same as
`twittering-read-timeline-spec-with-completion'.
* twittering-mode.el (twittering-icon-path): Delete function.
2010-01-09 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-edit-mode): setup
twittering-warning-overlay and after-change-functions
(twittering-edit-length-check): add. check length and set warning
overlay if the length exceeds 140 chars.
(twittering-edit-mode-map): fix keymap
(twittering-edit-extract-status): add. extract status from pop-up
buffer by removing trailing whitespace chars.
(twittering-edit-post-status): use edit-extract-status.
(twittering-edit-status): takes reply-to-id as a second argument
(twittering-enter, twittering-organic-retweet)
(twittering-direct-message, twittering-reply-to-user): use
twittering-edit-status
(twittering-edit-post-status): bug fix.
2010-01-09 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-http-get-list-index-sentinel):
`save-excursion' had no effect because of the following
`set-buffer'. This is fixed so that `save-excursion' saves the
state of `temp-buffer'.
(twittering-get-response-header): Likewise.
(twittering-get-response-body): Likewise.
(twittering-tinyurl-get): Likewise.
(twittering-tinyurl-get): `buffer' are killed even if
`search-forward-regexp' fails.
2010-01-09 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-edit-setup-help): add to setup
help overlay in pop-up buffer
(twittering-edit-next-history, twittering-edit-previous-history):
use twittering-edit-setup-help
2010-01-08 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-percent-encode): bug fix:
'\n','\r','\t' were not encoded correctly.
2010-01-08 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-use-show-minibuffer-length): Add
suggestion into a docstring.
2010-01-08 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-status-not-blank-p): bug fix:
always return nil with strings with trailing newline.
(twittering-edit-next-history): add.
(twittering-edit-previous-history, twittering-edit-history): add
history for pop-up buffer
(twittering-edit-mode-map): defined key for next/previous-history
(twittering-edit-mode): initialize local variables for history
(twittering-edit-mode): setup help string overlay
(twittering-edit-post-status): don't close buffer if tweet is
empty
2010-01-08 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-image-type): Try to detect image
type with `image-type-from-data' at first.
(twittering-retrieve-image): Do not invoke `convert' if Emacs
supports the image type and resize is not required.
2010-01-08 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-tmp-dir): delete
(twittering-icon-mode): don't make temp dir
(twittering-image-data-table): add. hash table where image data
are stored. key:(<url> . <size>),value:(<type> . <binary-data>)
(twittering-use-wget): delete
(twittering-image-type): re-implemented. Now it just returns a
type of a given image.
(twittering-make-display-spec-for-icon): Now it receives image URL
as an argument.
(twittering-retrieve-image): Now it receives image URL as an
argument.
(twittering-url-copy-file-async): delete
(twittering-retrieve-image-without-wget): delete
(twittering-retrieve-image-with-wget): delete
(twittering-retrieve-image): changed default image type from png
to xpm
(twittering-image-type): bug fix in the case of bitmap
(twittering-retrieve-image): handle error of determining image
type.
(twittering-image-type): let case-fold-search is t.
* url-emacs21/*: add url library for emacs21
2010-01-07 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-url-reserved-p): bug fix: some
reserved characters considered unreserved. Thanks to IMAI
Toshiyuki
(twittering-cert-file): add
(twittering-ensure-ca-cert): generate temporary file for CA certificate
2010-01-06 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-http-get-default-sentinel): Move
`debug-printf' to outside of `unwind-protect' because we expect
that mostly code of this function should be executed by way of
BODYFORM of `unwind-protect', not UNWINDFORM.
(twittering-http-post-default-sentinel): Likewise.
* twittering-mode.el (twittering-http-get-list-index-sentinel): Add
`debug-printf' same as `twittering-http-get-default-sentinel'.
* twittering-mode.el (twittering-status-not-blank-p): Fix and
modify a regexp pattern.
2010-01-06 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el
(twittering-read-timeline-spec-with-completion): return nil for
an invalid timeline spec string. The function is unified with
`twittering-read-timeline-spec-string-with-completion'. If the
argument `as-string' is non-nil, it returns a spec string.
(twittering-update-mode-line): the delimiter followed by a
timeline spec string on mode-line is changed to a whitespace.
(twittering-timeline-spec-bookmark): new variable for timeline
spec bookmark.
(twittering-extract-timeline-spec): support timeline spec
bookmark.
(twittering-equal-string-as-timeline): add.
(twittering-get-and-render-timeline): accept a timeline spec
string as well as a S-expression.
`twittering-last-requested-timeline-spec' will be updated even if
the requested spec essentially equals to the current one.
(twittering-initial-timeline-spec): replaced by
`twittering-initial-timeline-spec-string'.
(twittering-last-requested-timeline-spec): replaced by
`twittering-last-requested-timeline-spec-string'.
(twittering-last-retrieved-timeline-spec): replaced by
`twittering-last-retrieved-timeline-spec-string'.
(twittering-initial-timeline-spec-string): added to replace
`twittering-initial-timeline-spec'.
(twittering-last-requested-timeline-spec-string): added to replace
`twittering-last-requested-timeline-spec'.
(twittering-last-retrieved-timeline-spec-string): added to replace
`twittering-last-retrieved-timeline-spec'.
(twittering-last-timeline-spec-string): removed.
(twittering-visit-timeline): call
`twittering-get-and-render-timeline' with a timeline spec string
just as it has been input by the user.
(twittering-extract-timeline-spec): `bookmark' is renamed `alias'.
(twittering-timeline-spec-alias): this variable replaces
`twittering-timeline-spec-bookmark'.
* test/test-twittering-mode.el (timeline-spec): add tests of
timeline spec normalization.
2010-01-04 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-get-response-header): Change
syntax of error message to fit the GNU Emacs Lisp convention.
(twittering-get-response-body): Likewise.
(twittering-tinyurl-get): Likewise.
* twittering-mode.el (twittering-start-http-session): Change
syntax of question message to fit the GNU Emacs Lisp convention.
* twittering-mode.el (twittering-user-agent-default-function): Use
`format' instead of `concat' to easy understand.
(twittering-sign-string-default-function): Likewise.
* twittering-mode.el (twittering-start-http-session): Remove an
unnecessary call to `format' because all arguments of `error' pass
to `format'.
(twittering-make-http-request): Likewise.
(twittering-url-copy-file-async): Likewise.
2010-01-04 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-last-requested-timeline-spec):
new variable storing the last requested timeline spec.
(twittering-last-retrieved-timeline-spec): new variable storing
the last successfully retrieved timeline spec.
(twittering-last-timeline-retrieved): removed.
(twittering-last-host): removed.
(twittering-last-method): removed.
(twittering-convert-last-timeline-retrieved): removed.
(twittering-last-timeline-spec): removed.
(twittering-get-twits): do not update the information of the last
request.
(twittering-get-and-render-timeline): update the information of
the last request instead of `twittering-get-twits'.
(twittering-current-timeline): replace `twittering-get-twits' by
`twittering-get-and-render-timeline'.
(twittering-erase-old-statuses): replace `twittering-get-twits' by
`twittering-get-and-render-timeline'.
(twittering-initial-timeline-spec): new variable.
2010-01-03 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el, test/test-twittering-mode.el: rebase the
`timeline-spec' branch. The new timeline spec based on
S-expression is introduced.
* twittering-mode.el (twittering-timeline-spec-to-string): add.
(twittering-extract-timeline-spec): add.
(twittering-string-to-timeline-spec): add.
(twittering-timeline-spec-singlep): add.
(twittering-timeline-spec-to-host-method): add.
(twittering-host-method-to-timeline-spec): add.
(twittering-last-timeline-spec): add.
(twittering-last-timeline-spec-string)
(twittering-add-timeline-history): modified for new timeline spec.
(twittering-update-mode-line): modified for new timeline spec.
(twittering-get-twits-with-timeline-spec): modified for new
timeline spec.
(twittering-read-timeline-spec-string-with-completion): add.
(twittering-read-timeline-spec-with-completion): modified for new
timeline spec.
(twittering-get-timeline, twittering-get-list): replaced with
`twittering-get-twits-with-timeline-spec'.
(twittering-get-and-render-timeline): renamed from
`twittering-get-twits-with-timeline-spec'.
* test/test-twittering-mode.el (timeline-spec): add tests for new
timeline spec.
2010-01-03 Michael D. Ivey <ivey@gweezlebur.com>
* twittering-mode.el (twittering-retweet): Add support for native
retweets
2010-01-03 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-tinyurl-get): more descriptive
error message
(twittering-url-copy-file-async): more descriptive error message
2010-01-02 Alberto Garcia <agarcia@igalia.com>
* twittering-mode.el (twittering-start-http-ssl-session):
Set noninteractive using lexical-let so the HTTP sentinel can
receive its value and `twittering-new-tweets-hook' works
correctly.
2010-01-02 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-use-show-minibuffer-length): New
defvar to enable/disable a function which is show the number of
charactors in minibuffer.
(twittering-update-status-from-minibuffer): Refer it to add/remove
hooks.
2009-12-30 Yuto Hayamizu <y.hayamizu@gmail.com>
* test/server.rb: add. Twitter API and Proxy mock server
* twittering-mode.el (twittering-get-response-header)
(twittering-get-response-body): Raise an error on broken
responses.
2009-12-30 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-get-response-header): On failure,
the function returns an empty string instead of the whole contents
of the buffer.
(twittering-get-response-body): When the function fails to find
the tail of header, it returns nil without trying to parse a
region.
(twittering-find-proxy): add new function for
finding proxy.
(twittering-setup-proxy): add new function for configuring
`twittering-proxy-server' and `twittering-proxy-port' if they have
not been configured yet.
(twittering-mode-init-variables): invokes
`twittering-setup-proxy'.
2009-12-30 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-get-response-header): Correct a
reference to an unbound object. This problem was found by highmt.
2009-12-30 Yuto Hayamizu <y.hayamizu@gmail.com>
* test/el-test-runner.el (with-network): add macro. body of
with-network is executed only when 'NETWORK' env var is set.
* twittering-mode.el (twittering-image-type): No temporary files
for resing images. Use standard in/out and temporary buffers
instead.
(twittering-convert-fix-size): set 48px as the default size of
icon images.
2009-12-30 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-image-type): Don't generate
redundant temporary files. The image format is specified by
the command line instead of a file extension.
2009-12-30 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-image-type): Don't set a third
argument of `make-temp-file' to work on Emacs21.
2009-12-29 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-get-response-header): Add an
optional third argument for `search-forward-regexp'.
2009-12-29 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode 0.9.0 release
* twittering-mode.el (twittering-start-http-session): check if
curl can use https or not.
(twittering-get-response-body): bug fix: goto the beginning of
buffer before search-forward. 'xml-parse-region' doesn't return
when parsing unbalanced XML.
(twittering-start-http-session): Use call-process instead of
shell-command-to-string. If 'curl-program' contains space
characters, shell-command fails.
2009-12-29 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-get-response-body): Return nil
explicitly when a broken XML data passed into `xml-parse-region'.
(twittering-http-get-default-sentinel): Adjust callers.
(twittering-http-post-default-sentinel): Likewise.
* twittering-mode.el (twittering-http-post-default-sentinel): Add
`debug-printf' same as `twittering-http-get-default-sentinel'.
* twittering-mode.el (twittering-http-post-default-sentinel):
Change a regexp pattern for HTTP response status line; same as
`twittering-http-get-default-sentinel'.
(twittering-http-get-list-index-sentinel): Likewise.
2009-12-29 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el: load mule-ucs if needed (emacs21)
(twittering-start-http-ssl-session): add 'Expect: ' header field
for avoiding '417 Expectation Failed' HTTP response error. See
http://d.hatena.ne.jp/imait/20091228/1262004813 and
http://www.escafrace.co.jp/blog/09/10/16/1008
* twittering-mode.el: load 'cl' only at compile
time. cf. http://www.gnu.org/software/emacs/manual/html_node/cl/Overview.html
2009-12-28 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-get-response-header)
(twittering-get-response-body): inefficient code were
replaced. thanks to Tadashi MATSUO
2009-12-27 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-show-minibuffer-length): keeps
activated mark from being forcefully deactivated.
2009-12-27 Yuto Hayamizu <y.hayamizu@gmail.com>
* test/run-test.sh: add. invoke unit test for each emacsen
* Makefile (check): add check rule.
* test/el-test-runner.el (twittering-run-test): exit with
appropriate status code.
* test.el (test-transform-body): add. transforms the body of
`defcase' recursively
(defcase): use `test-transform-body'
* test/run-test.el (twittering-run-test): colorize resulting
outputs
2009-12-27 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-http-post-default-sentinel):
Check if buffer live-p before killing it.
(twittering-http-get-list-index-sentinel): Likewise.
* twittering-mode.el (twittering-setup-minibuffer): Remove an
unnecessary call.
* twittering-mode.el (twittering-other-user-list-interactive): Fix
condition to detect a cancel.
* twittering-mode.el (twittering-http-get-list-index-sentinel):
Use `search-forward-regexp' instead of `search-forward' to fix a
meaningless search.
2009-12-26 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-format-string): reimplement
without `block'.
(twittering-format-string): invokes a function in replacement
table with a context alist.
(twittering-retweet): replacement table is adapted to the new
`twittering-format-string'.
(twittering-format-status): reimplement with
`twittering-format-string'.
2009-12-26 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-ensure-ca-cert): kludge for ssl
certificate problem.
(twittering-start-http-ssl-session): use
`twittering-ensure-ca-cert'
2009-12-25 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-show-minibuffer-length): Replace
`minibufferp' by `minibuffer-window-active-p' to work this on
Emacs21.
(twittering-show-minibuffer-length): Change a message style for
Emacs23.
(twittering-setup-minibuffer, twittering-finish-minibuffer): Hook
`post-command-hook' instead of `after-change-functions' to work in
cooperation with SKK.
2009-12-25 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-tinyurl-get): Fix typo to resolve
error "Symbol's value as variable is void". This problem was found
by naota.
2009-12-25 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-show-minibuffer-length): disabled
on Emacs21 because `minibufferp' is not available.
(twittering-update-status-from-minibuffer): set
`minibuffer-message-timeout' to `nil'. `t' causes error on
Emacs23.
2009-12-23 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-show-minibuffer-length): New
defun to show the number of charactors in minibuffer.
(twittering-setup-minibuffer): New defun to add it to
`after-change-functions'; invoke via `minibuffer-setup-hook'.
(twittering-finish-minibuffer): New defun to remove it from
`after-change-functions'; invoke via `minibuffer-exit-hook'.
* twittering-mode.el (twittering-update-status-from-minibuffer):
Set `minibuffer-setup-hook' and `minibuffer-exit-hook' temporarily.
2009-12-23 Yuto Hayamizu <y.hayamizu@gmail.com>
* test/test-twittering-mode.el (tinyurl): add test for tinyurl
* twittering-mode.el (twittering-tinyurl-get): fix for emacs22.
In emacs22, there's "^M" at the end of a buffer created by
url-retrieve
(twittering-tinyurl-get): fix by cvmat
* twittering-mode.el (twittering-edit-mode-map): keybind 'u' to
twittering-edit-status. F4 to tinyurl
2009-12-22 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-tinyurl-get): retrieves a
shortened URL without `url-insert'.
(twittering-url-copy-file-async): add new
function for downloading a file asynchronously.
(twittering-retrieve-image-without-wget): retrieves images
asynchronously with `twittering-url-copy-file-async'.
2009-12-22 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-ucs-to-char): turned into
function from macro
(twittering-update-lambda, twittering-update-jojo): more portable
string expression. Executable only in Japanese environment.
(twittering-tinyurl-get): use with-temp-buffer with url-insert
2009-12-21 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-icon-path): `require' is added.
(twittering-tinyurl-get, twittering-retrieve-image-without-wget):
The dependency on `mm-url' is removed by using `url' library.
(twittering-http-application-headers):
`Content-Length' is added to `headers'.
2009-12-22 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-get-host-method-from-timeline-spec)
(twittering-get-timeline-spec): Add more timeline specification.
* test/test-twittering-mode.el (timeline-spec): add more tests for
timeline specification.
2009-12-20 Tadashi Matsuo <tad@mymail.twin.jp>
* test/test-twittering-mode.el (timeline-spec): add tests for
timeline specification.
* twittering-mode.el (twittering-get-host-method-from-timeline-spec)
(twittering-get-timeline-spec): Add new functions for timeline
specification.
(twittering-update-mode-line): Shows timeline specification.
(twittering-render-timeline): Invokes
`twittering-update-mode-line' to update the mode-line.
(twittering-timeline-history): Add new variable for history of
timeline specifications.
(twittering-add-timeline-history): Add new function for adding
timeline history.
(twittering-http-get-default-sentinel): Invokes
`twittering-add-timeline-history' to update history when
retrieving tweets successfully.
(twittering-other-user-list-interactive): The codes for retrieving
list index synchronously are extracted as the new function
`twittering-get-list-sync'.
(twittering-get-list-index-sync): Add new function for retrieving
list synchronously.
(twittering-read-list-name): Add new function for reading a list
name from the minibuffer.
(twittering-read-timeline-spec-with-completion): Add new function
for reading timeline specification from the minibuffer.
(twittering-get-twits-with-timeline-spec): Add new function for
retrieving tweets with timeline specification.
(twittering-visit-timeline): Add new function for visiting a
timeline.
(twittering-mode-map): The key "V" is bound to
'twittering-visit-timeline'.
2009-12-20 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-update-mode-line): add
(twittering-toggle-proxy, twittering-icon-mode)
(twittering-scroll-mode, twittering-jojo-mode): use
update-mode-line
2009-12-19 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-use-ssl): add
(twittering-find-curl-program): add
(twittering-start-http-ssl-session): add
(twittering-start-http-non-ssl-session): add
(twittering-http-application-headers): add
(twittering-http-get): rewritten by using start-http-session
(twittering-http-post): rewritten by using start-http-session
(twittering-http-post-default-sentinel): use the same argument
format of http-get-default-sentinel
2009-12-16 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-tinyurl-replace-at-point):
distinguish between URL and others based on
`bounds-of-thing-at-point'.
2009-12-15 haya <haya@starfish.unicus.ddo.jp>
* twittering-mode.el (twittering-status-not-blank-p): fix invalid escape sequence
(twittering-tinyurl-replace-at-point): disabled when 'mm-url' doesn't exist.
2009-12-12 Alberto Garcia <agarcia@igalia.com>
* twittering-mode.el (twittering-retrieve-image-without-wget):
Kill buffer after retrieving the image
2009-12-11 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-tinyurl-get): Call
`mm-url-insert' only if argument `longurl' is non-nil to avoid
error "Wrong type argument", otherwise return nil explicitly.
(twittering-tinyurl-replace-at-point): Replace a region with
newurl when `newurl' is non-nil.
2009-12-07 Naohiro Aota <naota@elisp.net>
* twittering-mode.el (twittering-http-get-default-sentinel): Check
if buffer live-p before killing it.
2009-12-07 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-read-username-with-completion):
rename from `twittering-get-username-with-completion'
(twittering-make-list-from-assoc): simplified
(twittering-other-user-timeline-interactive): changed init string
to nil
2009-12-06 NAKAYA Toshiharu <toshiharu.nakaya@gmail.com>
* twittering-mode.el (twittering-retrieve-image-without-wget): set
require-final-newline is nil locally since emacs can not save icon
images because of "error in process filter: save-buffer: Text is
read-only".
2009-12-06 Tadashi MATSUO <matsuo@i.ci.ritsumei.ac.jp>
* twittering-mode.el (twittering-use-wget): new variable for
specifying whether the external command `wget' should be used.
(twittering-retrieve-image): new function for retrieving icon
images with/without wget.
(twittering-get-twits): retrieve images with
`twittering-retrieve-image'.
(twittering-use-convert): add a new variable specifying whether
the external command `convert' should be used.
(twittering-make-display-spec-for-icon): new function for
generating properties for icon with/without cropping the image.
(twittering-retrieve-image-without-wget): write an image as binary
explicitly.
2009-12-05 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-get-username-with-completion):
New defun as a wrapper function for read-from-minibuffer.
(twittering-follow): Call it instead of read-from-minibuffer.
(twittering-other-user-timeline-interactive): Likewise.
(twittering-other-user-list-interactive): Likewise.
* twittering-mode.el (twittering-make-list-from-assoc): New defun.
2009-12-04 Yuto Hayamizu <y.hayamizu@gmail.com>
* test/test-twittering-mode.el (sign-string): add test
* twittering-mode.el (twittering-current-hashtag): docstring
(twittering-idle-time): removed (unused?)
2009-12-03 Tadasohi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-mode-map): define bindings so
as to be also valid even on non-window terminal.
2009-12-02 Naohiro Aota <naota@elisp.net>
* twittering-mode.el (twittering-icon-path): New funciton.
(twittering-format-status): Use it.
(twittering-get-twits): Ditto; wget now invoked for each icon.
2009-12-01 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-update-status-from-minibuffer):
Add more strict length check for status.
* twittering-mode.el (twittering-status-not-blank-p): New defun to
separate a check code from twittering-update-status-if-not-blank.
(twittering-update-status-from-minibuffer): Integrate a post code
from twittering-update-status-if-not-blank.
(twittering-update-status-if-not-blank): Remove.
2009-11-30 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-max-number-of-tweets-on-retrieval)
(twittering-number-of-tweets-on-retrieval): add
(twittering-http-get-list-index-sentinel): restore the variable
'indexes' removed by mistake
(twittering-get-twits): use 'twittering-number-of-tweets-on-retrieval'
These changes were made by cvmat. thanks.
2009-11-29 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-status-to-status-datum): defined
screen-name-in-text property
(twittering-enter)
(twittering-other-user-timeline-interactive)
(twittering-other-user-timeline):
put a screen-name-in-text ahead of other elements(uri, ...)
2009-11-28 Yuto Hayamizu <y.hayamizu@gmail.com>
* test/run-test.el (twittering-run-test): use test.el
* twittering-mode.el (twittering-http-get, twittering-http-post):
use a temp-buffer for each connection. This change solved the
problem caused by concurrent HTTP request.
(twittering-get-response-header, twittering-get-response-body):
requires 'buffer' because now each http request is associated with
its temp buffer
(twittering-http-buffer): removed
2009-11-19 Tadashi MATSUO <tad@mymail.twin.jp>
* twittering-mode.el (twittering-format-string): Add new function
to format strings with a user-defined table.
(twittering-retweet): Use 'twittering-format-string'.
2009-11-18 Alberto Garcia <agarcia@igalia.com>
* twittering-mode.el
(+twittering-direct-message, twittering-mode-map):
New `twittering-direct-message' function to send direct messages.
2009-11-15 Naohiro Aota <naota@elisp.net>
* twittering-mode.el (twittering-convert-fix-size): New variable.
(twittering-image-type): Use it; Resize icons to fix size if the
above variable is set.
2009-11-15 Yuto Hayamizu <y.hayamizu@gmail.com>
* test/test-twittering-mode.el, test/run-test.el, test/elunit.el: add unit testing framework elunit.
* twittering-mode.el (twittering-goto-next-thing,
(twittering-goto-previous-thing): add new commands.
(twittering-goto-previous-status): check whether prev-pos is not nil.
(twittering-set-current-hashtag, twittering-hashtag-history): add functions to support hashtag. Set the current hashtag with C-c C-h.
(twittering-update-status-from-minibuffer): use the current hashtag if set.
2009-11-13 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-convert-last-timeline-retrieved):
New defun to keep a backward compatibility.
(twittering-last-host, twittering-last-method): Call it.
2009-11-10 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-follow): New command.
(twittering-unfollow): Likewise.
(twittering-manage-friendships): New defun.
* twittering-mode.el (twittering-favorite): New command.
(twittering-unfavorite): Likewise.
(twittering-manage-favorites): New defun.
2009-11-09 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-mode-map): Bind "L" to
`twittering-other-user-list-interactive'.
* twittering-mode.el (twittering-other-user-list-interactive): Set
default username interactively.
(twittering-other-user-list-interactive): Fix typo.
* twittering-mode.el (twittering-make-http-request): Use let
instead of let*.
2009-11-07 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el: Add (preliminary) Lists support.
* twittering-mode.el (twittering-other-user-list-interactive): New
command.
* twittering-mode.el (twittering-get-list): New defun.
(twittering-get-list-index): Likewise.
(twittering-http-get-list-index-sentinel): Likewise.
* twittering-mode.el (twittering-last-timeline-retrieved): Now it
expects a list, not a string.
(twittering-last-host, twittering-last-method): New defuns.
(twittering-list-index-retrieved): New defvar.
* twittering-mode.el (twittering-get-twits): Rename from
twittering-get-timeline.
(twittering-get-timeline): Call twittering-get-twits instead
of (previous) twittering-get-timeline.
(twittering-current-timeline): Likewise.
(twittering-erase-old-statuses): Likewise.
(twittering-goto-next-status): Likewise.
* twittering-mode.el (twittering-make-http-request): New defun.
(twittering-http-get): Use it.
(twittering-http-post): Likewise.
* twittering-mode.el (twittering-http-get): Add new local variable
`server' which point to "twitter.com", "api.twitter.com", or your
nearest proxy server. Otherwise `host' always point to
"twitter.com" or "api.twitter.com".
(twittering-http-post): Likewise.
* twittering-mode.el (twittering-http-post): Add new argument
`host'.
(twittering-http-post): Change handling of the argument
`method'. Now it expects `(concat method-class "/" method)'.
* twittering-mode.el (twittering-update-status-if-not-blank):
Adjust for change to twittering-http-post.
(twittering-update-lambda): Likewise.
(twittering-update-jojo): Likewise.
* twittering-mode.el (twittering-get-twits): Set parameter `count'
from twittering-get-count if existing.
2009-11-06 Naohiro Aota <naota@elisp.net>
* twittering-mode.el (twittering-image-type): Support bitmap type
using `convert'.
(twittering-convert-program): New varibale.
2009-11-05 Satoshi Yatagawa <yata_github@y.hauN.org>
* twittering-mode.el (twittering-render-timeline): Set the
`fill-column' locally.
2009-09-01 Alberto Garcia <agarcia@igalia.com>
* twittering-mode.el (twittering-retweet):
Don't set the original status ID when retweeting.
2009-08-23 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-keybind-message): add. displaying important keybindings in minibuffer
2009-08-22 Yuto Hayamizu <y.hayamizu@gmail.com>
* twittering-mode.el (twittering-get-username): add
(twittering-get-password): changed prompt
(twittering-status-to-status-datum): added a new text property 'uri-in-text'
(twittering-enter): use 'uri-in-text'
2009-08-19 Alberto Garcia <agarcia@igalia.com>
* twittering-mode.el
(twittering-image-type):
Use external 'file' program if available to detect image types,
and store the results in memory to avoid having to call it once
and again.
(twittering-format-status):
Pass full image path to `twittering-image-type'
2009-06-18 Alberto Garcia <agarcia@igalia.com>
* twittering-mode.el (twittering-http-get)
(twittering-http-get-default-sentinel)
(twittering-get-timeline, twittering-mode-map)
(twittering-current-timeline-noninteractive)
(twittering-current-timeline, twittering-erase-old-statuses):
Get rid of the `twittering-last-timeline-interactive' global
variable.
2009-06-18 Tsuyoshi CHO <Tsuyoshi.CHO+develop@Gmail.com>
* twittering-mode.el (twittering-sign-simple-string)
(twittering-sign-string-default-function)
(twittering-sign-string-function, twittering-sign-string): Add
new.
(twittering-update-status-if-not-blank): Fix params, support sign.
2009-06-18 Tsuyoshi CHO <Tsuyoshi.CHO+develop@Gmail.com>
* twittering-mode.el (twittering-mode-map)
(twittering-format-status, twittering-retweet): Add new feature
ReTweet
2009-06-18 Alberto Garcia <agarcia@igalia.com>
* twittering-mode.el
(twittering-status-to-status-datum):
Read 'in_reply_to_status_id' and 'in_reply_to_user_id' attributes.
(twittering-format-status):
Add new '%r' format string for " in reply to user".
(twittering-update-status-if-not-blank):
Code refactoring. No need to use (format) to convert a string.
2009-06-18 Tsuyoshi CHO <Tsuyoshi.CHO+develop@Gmail.com>
* twittering-mode.el (twittering-status-format)
(twittering-format-status, twittering-status-to-status-datum)
(twittering-update-status-if-not-blank, twittering-enter): Fix
in_reply_to_status_id support not work problem, and marge Alberl
patch below.
2009-06-17 Tsuyoshi CHO <Tsuyoshi.CHO+develop@Gmail.com>
* twittering-mode.el (twittering-last-timeline-interactive): New
add variable.
(twittering-new-tweets-count): Ditto.
(twittering-new-tweets-hook): Ditto.
(twittering-mode-map): Add new binding v/V
(twittering-http-get-default-sentinel): Add new hook support
`twittering-new-tweets-hook'.
(twittering-render-timeline, twittering-get-timeline): Support
console emacs.
(twittering-current-timeline-interactive): Add new function.
(twittering-current-timeline-noninteractive): Ditto.
(twittering-other-user-timeline): Ditto.
(twittering-other-user-timeline-interactive): Ditto.
(twittering-status-to-status-datum): Add support status id and
reply to id.
(twittering-update-status-if-not-blank): Ditto.
(twittering-update-status-from-minibuffer): Ditto.
2009-03-12 Tsuyoshi CHO <Tsuyoshi.CHO+develop@Gmail.com>
* twittering-mode.el (twittering-start): Update target chagne to
current.
2009-03-12 Tsuyoshi CHO <Tsuyoshi.CHO+develop@Gmail.com>
* twittering-mode.el: Append new methods by Alberto Garcia
<agarcia@igalia.com>'s patch.
(twittering-get-timeline): Add new general method. Old name is
`twittering-friends-timeline'.
(twittering-friends-timeline): Renew use general method.
(twittering-replies-timeline): Add new.
(twittering-public-timeline): Ditto.
(twittering-user-timeline): Ditto.
(twittering-current-timeline): Ditto.
(twittering-last-timeline-retrieved): Add new variable.
(twittering-mode-map): Add new key binding.
(twittering-erase-old-statuses): Support multi method.
(twittering-timer): Comment update.
(twittering-icon-mode): Ditto.
(twittering-http-post): Ditto.
(twittering-get-response-body): Ditto.
(twittering-cache-status-datum): Ditto and Fix renaming.
(twittering-timeline-data, twittering-timeline-last-update):
Rename.
(twittering-render-timeline): Ditto.
(twittering-icon-mode): Fix renaming.
(twittering-http-get-default-sentinel): Ditto.
(twittering-format-status): Fix indentation.
2009-03-09 Tsuyoshi CHO <Tsuyoshi.CHO+develop@Gmail.com>
* twittering-mode.el (twittering-mode): Add keybind in Major mode
docstring by Alex Schröder <kensanata@gmail.com>
2008-08-03 Tsuyoshi CHO <Tsuyoshi.CHO+develop@Gmail.com>
* twittering-mode.el (twittering-mode-version): Update to 0.6
* twittering-mode.el (twittering-friends-timeline-last-update): 新
規変数
(twittering-setftime, twittering-local-strftime)
(twittering-global-strftime): `twittering-local-strftime'を機能分
割
(twittering-http-get): オプション引数`parameters'を追加、他調整
(twittering-http-post): 同上の調整
(twittering-status-to-status-datum): last-updateを更新する処理を追
加
(twittering-friends-timeline, twittering-erase-old-statuses):
statusのupdate時にsinceをパラメータと指定する処理をサポート
2008-07-21 Tsuyoshi CHO <Tsuyoshi.CHO+develop@Gmail.com>
* twittering-mode.el (twittering-http-get, twittering-http-post):
改行が1つ多かったので除去
2008-05-11 Tsuyoshi CHO <Tsuyoshi.CHO+develop@Gmail.com>
* twittering-mode.el (twittering-format-status): id/user-idのフォー
マット整形。時間情報にuriを付与。Nicholasのパッチにより全体に
username情報を付与
(twittering-status-to-status-datum): username/user-screen-nameにつ
いて整理
(twittering-get-status-url): 新規関数(マクロでもいいんだけど...)
2008-05-01 Tsuyoshi CHO <Tsuyoshi.CHO+develop@Gmail.com>
* twittering-mode.el : 全体のコメント修正、以下の修正は大部分を
gan2さんが実施した
(twittering-mode-version): 新規関数
(twittering-timer): コメント追加
(twittering-scroll-mode, twittering-jojo-mode)
(twittering-icon-mode): Nicholas Riley <njriley@uiuc.edu>さんのパッ
チ採用、バッファローカル化
(list-push): 新規マクロ
(twittering-mode-map): キーバインド変更
(twittering-mode-hook): フック変数新規作成(以前から利用してたけど
定義がなかった)
(twittering-render-friends-timeline): Nicholas Riley
<njriley@uiuc.edu>さんのパッチ採用、ステータスの挿入正常化
(twittering-goto-next-status)
(twittering-get-next-username-face-pos)
(twittering-goto-previous-status)
(twittering-get-previous-username-face-pos)
(twittering-goto-next-status-of-user)
(twittering-goto-previous-status-of-user)
(twittering-get-username-at-pos, twit): 新規関数
2008-02-08 Tsuyoshi CHO <Tsuyoshi.CHO+develop@Gmail.com>
* twittering-mode.el : 全体的に整形、Proxy、Safe Password、
User-Agent、Major mode stringを対応。Version 0.3
(twittering-mode-version): 暫定のバージョン定数を定義
(twittering-proxy-use): プロキシ関係設定を導入 from <http://d.hatena.ne.jp/lurdan/20080108/1199775387>
(twittering-proxy-server): 同上
(twittering-proxy-port, twittering-proxy-user): 同上
(twittering-proxy-password): 同上
(twittering-toggle-proxy): 同上
(twittering-user-agent-default-function): 同上
(twittering-user-agent-default-function): デフォルトUser-Agent生成関数
(twittering-user-agent-function): User-Agent生成関数指定変数を導入
(twittering-user-agent): 内部でのUser-Agent生成関数
(twittering-tmp-dir): ユーザー固有のImageTmpDirを生成 from <http://d.hatena.ne.jp/odz/20071021/1192957783>
(twittering-mode-map): プロキシの有効無効のキーバインド定義
(twittering-mode-string): メジャーモード文字列を変数定義
(twittering-mode): メジャーモード開始時に文字列を設定
(twittering-http-get): プロキシ、User-Agentによる処理を追加
(twittering-http-post): 同上
(twittering-get-password): パスワードを動的に確認する関数を定義
2007-10-14 Y. Hayamizu <haya@haya-laptop-ubuntu>
* twittering-mode.el : Naoya T. <naoya.t@aqua.plala.or.jp>, masa_edw のパッチをとりこむ
(twittering-url-encode): 使わないので削除
(twittering-decode-html-entities): patched: 数値エンティティだけでなく,asciiエンティティにも対応.
(twittering-font-lock-keywords): font-lock-keywordsを削除.text propertyによって設定する.
(twittering-format-status): patched: statusとformat-strからstatusの表示用文字列を生成.
(twittering-scroll-mode): patched: 新しいtwitがあったときに,カーソルもスクロールするか固定するかを設定するマイナモード, masa_edwのパッチ
(twittering-status-format): twitの表示方法をきめるテンプレート文字列
(twittering-icon-mode): patched: ifをwhenにおかえた.nilを渡されたときはマイナモードのスイッチに振舞を変更
(twittering-local-strftime): patched: 時間をフォーマット文字列に従い文字列化
(twittering-mode-init-variables): font-lock-modeは,Emacs21系ではautoloadするために一度呼ぶ必要がある. icon-mode, scroll-modeをマイナモードに登録.
(twittering-inspect-object): 使わないので削除
(twittering-http-get-default-sentinel): エラーを追いやすくするため,condition-caseを廃止
(twittering-status-to-status-datum): 全てのデータを抽出するようコード追加.ユーザ名,URIリンク表示などの処理もここで.
2007-10-13 Y. Hayamizu <haya@haya-laptop-ubuntu>
* twittering-mode.el (twittering-font-lock-keywords): ユーザー名のフェイスを適用する規則を修正.アイコン画像を表示したときに,下線が画像にかからないようにした.
(twittering-render-friends-timeline): ポイントが特定のtwitに対して固定されるようにした(patch from masa_edw)
2007-10-12 Y. Hayamizu <haya@haya-laptop-ubuntu>
* twittering-mode.el (twittering-idle-time): つかわないので削除
(twittering-get-or-generate-buffer): バッファ取得のための関数.存在しないバッファだったら,新たに生成して返す.
(twittering-buffer): Variable:twittering-bufferを名前に持つバッファを返す関数.このバッファを使う場合は,(twittering-buffer)によって取得する.
(twittering-http-buffer): twittering-bufferと同じ
(twittering-wget-buffer): twittering-bufferと同じ
2007-10-11 Y. Hayamizu <haya@haya-laptop-ubuntu>
* twittering-mode.el (twittering-icon-mode): アイコンを表示するか否かのフラグ
(twittering-wget-buffer): アイコン画像をwgetで取得するプロセスのバッファ
(twittering-icon-mode): アイコンの表示/非表示を切り換えるコマンド
(twittering-tmp-dir): アイコンの画像を保存するディレクトリ
(twittering-image-stack): ダウンロードすべきアイコン画像のリスト
(twittering-image-type): 画像の種類を判別する関数
(twittering-render-friends-timeline): friends timelineを表示する部分を切り出した
2007-10-10 Y. Hayamizu <haya@haya-laptop-ubuntu>
* twittering-mode.el: バージョン番号をつけた 0.1.0
2007-10-07 Y. Hayamizu <haya@haya-laptop-ubuntu>
* twittering-mode.el (twittering-http-get-default-sentinel): http-bufferを毎回生成-削除するのをやめて,内容をeraseして使い回すようにした.
(twittering-http-get-default-sentinel):HTTPレスポンスのステータスコードが上手く拾えなかったときの処理を追加
(twittering-http-get-default-sentinel): カレントバッファか*twittering*のときは,friends-timelineを更新してもポイントの位置が変わらないように修正.
2007-09-24 Y. Hayamizu <haya@haya-laptop-ubuntu>
* twittering-mode.el (twittering-status-to-status-datum): URIをクリック可能にする処理を追加
2007-09-23 Y. Hayamizu <haya@haya-laptop-ubuntu>
* twittering-mode.el (twittering-uri-face): URI用のフェイス
(twittering-click): クリック時に実行されるコマンド
(twittering-enter): EnterかC-mが押されたときに実行されるコマンド
2007-09-19 Y. Hayamizu <haya@haya-laptop-ubuntu>
* twittering-mode.el (twittering-mode-syntax-table): "(double quote)を,文字列クオートと認識しないようにsytax-tableを変更.
(twittering-friends-timeline): friends timelineの取得したデータを保存しておく変数.twittering modeが起動している限り,この変数に取得したstatusを随時追加してゆく.
(cl): assocrefをinnner defunして,バイトコンパイル時にWarningが出ていた.clパッケージのfletを使うことでWarningが出ないように解決した.
(twittering-status-to-status-datum): twittering-status-to-lineから名前変更
(twittering-friends-timeline-data): twittering-friends-timelineから名前変更
(twittering-status-to-status-datum): idもstatus datumに含めるようにした.
(twittering-cache-status-datum): status datumをdata-var(デフォルトはtwittering-friends-timeline-data)にキャッシュする関数.すでにあるstatus datumを渡すとnil,新しいstatus datumを渡すとtを返してdata-varに追加する.
(twittering-http-get-default-sentinel):過去のstatus datumをキャッシュして,バッファに過去のstatusも表示されるようにした.
(twittering-erase-old-statuses): 21件目以降の古いstatusを消す関数.実際はキャッシュを全部消して,twittering-http-getを呼んでいるだけ.C-c C-eにバインド.
(twittering-username-face): ユーザ名用のface.(defface <name>)の後に(defvar <name>)で使用可能になった.なぜ?
(twittering-status-to-status-datum): ユーザ名のテキストにmouse-face属性と,uri属性(ユーザのページのURI)を付加するようにした.
(twittering-click-username): ユーザ名をクリックするか,C-mを押したときに起動するコマンド.
(twittering-mode-map): vimライクなキーバインドを追加
(twittering-mode): twittering-mode-hookでfont-lock-defaultsが設定された後に,font-lock-mode を2回呼んで変更を反映させるようにした.
(twittering-mode-init-variables): twittering-username-faceの定義をこの関数の中にうつした.
(twittering-browse-user-page): twittering-click-usernameから名前変更.
(twittering-update-status-interactive): twittering-update-statusから名前変更.
(twittering-reply-to-user): ユーザ名上でEnterを押すとこの関数が呼びだされるようにキーバインド変更.ミニバッファに @<ユーザ名> が自動挿入される.
(twittering-view-user-page): twittering-browse-user-pageから名前変更.C-c C-vにバインド.
(twittering-update-status-if-not-blank): 引数statusが,空白文字のみか, @<ユーザ名> のみの場合には nil を返し,他の文字も含む場合には POSTしてtを返す関数.
(twittering-update-status-from-minibuffer): ミニバッファからstatusを更新するための関数.無効な文字(twittering-update-status-if-not-blankで判定)が入力された場合は,有効な文字列が入力されるまでループする.
2007-09-12 Y. Hayamizu <haya@haya-laptop-ubuntu>
* twittering-mode.el (twittering-ucs-to-char): Emacs21系では,Mule-UCSがロードされていないと,(decode-char 'ucs HOGE)がnilになり,文字コードを取得できないことがある.そこで,ucs-to-charが使える環境ではucs-to-charを,使えない環境(Emacs22など)ではdecode-charを使うように自動で切り替えるマクロを書いた.
2007-09-10 Y. Hayamizu <haya@haya-laptop-ubuntu>
* twittering-mode.el (twittering-refresh-buffer): 使わないので削除
(twittering-http-post-default-sentinel): condition-case でエラーハンドリングするようにした.
(twittering-http-get-default-sentinel): *twittering*バッファをread-onlyにした
(twittering-http-post-default-sentinel): condition-case でエラーハンドリングするコードを追加.
(twittering-start): 複数のタイマが走らないように,twittering-timerがnilでない=既存のタイマが走っている場合は一旦twittering-stopを呼び出してからタイマをスタートするようにした.
2007-09-09 Y. Hayamizu <haya@haya-laptop-ubuntu>
* twittering-mode.el: リリース
(case-string): CarbonEmacs (Emacs22)で,case-stringを呼びだすコードよりも前にdefmacroを持ってきたら,警告が出ないという報告.
(twittering-decode-html-entities): ucs-to-charの使用をやめ,(decode-char 'ucs ...)を使うことに. (reported by masa_edw)
(twittering-update-status): read-from-minibufferの7番目の引数にtを指定し,input methodをカレントバッファから継承するようにした.
(twittering-decode-html-entities): string-to-intはobsoleteなので,string-to-numberに変更 (reported by masa_edw)
(twittering-get-response-header): (setq (get-buffer ...)) となっていたので,(setq buffer (get-buffer ...))に修正. twittering-get-response-bodyも同様
(twittering-timer-action): twittering-refresh-triggerは既に使っていない変数だったので削除した
(debug-print): マクロが最初にコンパイルされる時点では,debug-modeが変数として宣言されていないので,debug-modeの判断まで含めたコードを吐くようにした.
(twittering-http-post-default-sentinel): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに伴い書き換えた
(twittering-get-response-body): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに伴い書き換えた
(twittering-xmltree-to-status): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに伴い書き換えた
(twittering-status-lines): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに伴い書き換えた
(twittering-status-to-line): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに伴い書き換えた
(twittering-get-timeline): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに削除
(twittering-status-lines): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに削除
(twittering-parse-xml): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに削除
(twittering-timer-interval): twittering-refresh-intervalから名前変更
(twittering-inspect-object): 任意のLispオブジェクトを文字列で表現できるユーティリティ関数
(twittering-timer-action): xml.elにより処理が軽くなったので,一定時間間隔での更新に変更.
(twittering-xmltree-to-status): Emacs21とEmacs22のxml.elの差異を吸収するコードを追加.Emacs22では,ノードのリストに空の文字列が混入することがあるため,文字列を除去するようにした.
|