Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 4 пробела в форуме по питону 
:(
    Опции темы
LSD
Дата 25.8.2006, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 4
Всего: 538



Цитата(pythonwin @  25.8.2006,  09:24 Найти цитируемый пост)
где можно применить 4 пробела для увеличиния читабельности кода:
....

Ты никак не поймешь мою мысль. Я не говорю что отступы это плохо и их никто не использует. Я говорю, что все используют разные отступы, кто-то 2 пробела, кто-то 4, а кто-то 8. И если поставить 8, то данное нововведение будет никому не нужно кроме тех, кто использует 8 пробелов.



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
pythonwin
Дата 25.8.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



Цитата(LSD @  25.8.2006,  17:37 Найти цитируемый пост)

Ты никак не поймешь мою мысль. Я не говорю что отступы это плохо и их никто не использует. Я говорю, что все используют разные отступы, кто-то 2 пробела, кто-то 4, а кто-то 8. И если поставить 8, то данное нововведение будет никому не нужно кроме тех, кто использует 8 пробелов.

1) сейчас нет даже 4-х пробелов, а мы с тобой получается "делим не убитого медведя"
2) предложи решение с более системным подходом, например - дать пользователю возможность настраивать количество пробелов, которое ему нужно.
smile
PM WWW GTalk Jabber   Вверх
Cr@$h
Дата 25.8.2006, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 10
Всего: 41



Цитата(pythonwin @  25.8.2006,  12:03 Найти цитируемый пост)
предложи решение с более системным подходом, например - дать пользователю возможность настраивать количество пробелов, которое ему нужно.

user posted image Осталось это реализовать. Не слишком накручено для пользователей будет...
PM MAIL ICQ   Вверх
pythonwin
Дата 25.8.2006, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



Цитата(Cr@$h @  25.8.2006,  19:03 Найти цитируемый пост)
Осталось это реализовать. Не слишком накручено для пользователей будет... 

К сожелению я не знаю как это сделать, да и со временем пока проблемы. smile


Это сообщение отредактировал(а) pythonwin - 25.8.2006, 12:25
PM WWW GTalk Jabber   Вверх
LSD
Дата 25.8.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 4
Всего: 538



Цитата(pythonwin @  25.8.2006,  12:03 Найти цитируемый пост)
например - дать пользователю возможность настраивать количество пробелов, которое ему нужно

Это не проблема. Написать 3 варианта скрипта, и генерировать страницу с тем вариантом который выбрал пользователь в профиле.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
pythonwin
Дата 25.8.2006, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



я жду решение от smartov... smile
PM WWW GTalk Jabber   Вверх
smartov
Дата 25.8.2006, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 10
Всего: 259



Сейчас работаю, но все же планирую сегодня к вечеру выложить
PM MAIL   Вверх
Cr@$h
Дата 25.8.2006, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 10
Всего: 41



Цитата(LSD @  25.8.2006,  13:28 Найти цитируемый пост)
Написать 3 варианта скрипта, и генерировать страницу с тем вариантом который выбрал пользователь в профиле. 

Изменения в профиле принимаются на высоком уровне. Да и вообще, такого рода.
До этой опции в профиле ещё добраться нужно будет...
Нужно хорошенько подумать, надо ли вводить её. В конечном итоге и 2 пробела можно оставить...
PM MAIL ICQ   Вверх
pythonwin
Дата 25.8.2006, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



Цитата(smartov @  25.8.2006,  21:32 Найти цитируемый пост)
Сейчас работаю, но все же планирую сегодня к вечеру выложить 

хорошо!
PM WWW GTalk Jabber   Вверх
smartov
Дата 25.8.2006, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 10
Всего: 259



В общем нельзя сказать что это идеально законченное решение, но работает.
Работает в IE 6, Firefox.
В Опере пока что не работает, т.к. у нее в силу неясных причин другие коды клавиш.
Так же недостатки:
1. Выделение умирает (чтобы оставлять нужно дополнительный код, и для ИЕ свой... чуть попоздже)
2. В Firefox если хочешь несколько раз проидентировать/анидентировать приходится отпускать клавишу Ctrl
3. При анидентации обязательно выделять строки целиком, до самого начала.

Чтобы поменять 2/4 пробела нужно просто раскомменировать/закомментировать нужную строчку (например "tabSymbol = "    ";//4spaces")

Код

<html>
<body>

<script>

var tabSymbol;

//Change this value to needed

tabSymbol = "    ";//4spaces
//tabSymbol = "  ";//2 spaces

//----------

var cachedEvent;

function indentString($str)
{
    if (!$str)
        return "";
    //return $str.replace(/^(.*)$/gm, tabSymbol+'$1');//no way :( stupid ie
    $str_arr = $str.split(/\n/);
    for (var i=0; $str_arr[i]; i++)
    {
        $str_arr[i] = tabSymbol + $str_arr[i];
    }
    return $str_arr.join("\n");
}

function unindentString($str)
{
    if (!$str)
        return "";
    $str_arr = $str.split(/\n/);
    for (var i=0; $str_arr[i]; i++)
    {
        if ($str_arr[i].indexOf(tabSymbol) == 0)
        {
            $str_arr[i] = $str_arr[i].replace(tabSymbol, '');
        }
    }
    
    return $str_arr.join("\n");
}

function indentSelection(targetTextarea, unindent)
{
    if (document.selection) //IE, Opera 9
    {
        range = document.selection.createRange();
        range.text = unindent ? unindentString(range.text) : indentString(range.text);
    } 
    else //Mozilla
    {
        var selection = targetTextarea.value.substr(targetTextarea.selectionStart, targetTextarea.selectionEnd - targetTextarea.selectionStart);
        selection = unindent ? unindentString(selection) : indentString(selection);

        targetTextarea.value = targetTextarea.value.substr(0, targetTextarea.selectionStart) 
            + selection
            + targetTextarea.value.substr(targetTextarea.selectionEnd);
    }
}

function getEvent(textarea, $event)
{
//219 - [
//221 - ]

    if (cachedEvent == 17 && $event == 219)
    {
        indentSelection(textarea, true);
        cachedEvent = 17;
        return;
    }
    if (cachedEvent == 17 && $event == 221)
    {
        indentSelection(textarea, false);
        cachedEvent = 17;
        return;
    }
    cachedEvent = $event;
}

</script>

<textarea id="asd" style="width:500px;height:500px;" onKeydown="getEvent(this, event.keyCode)">
myarray = new Array();
myarray.push('forum');
myarray.push('vingrad');
myarray.push('ru');
var str;
for (var i=0; i < count(myarray); i++)
{
str += myarray[i];//ident me;
str += '.';//ident me;
}
alert(str);
</textarea>

</body>
</html>


Это сообщение отредактировал(а) smartov - 25.8.2006, 17:16
PM MAIL   Вверх
pythonwin
Дата 25.8.2006, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



smartov, а какие клавиши?
"Ctrl+]" "Ctrl+[" ? 
Но тогда у меня ни в IE. ни в FF не работет...  smile 
PM WWW GTalk Jabber   Вверх
pythonwin
Дата 25.8.2006, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



smartov, разобрался! smile
Большое тебе спасибо!

Можно ещё просьбу?

А можно, чтобы 4 (или 2 пробела) добавлялись к пустым и не выделеным строкам?
(Главное) а также, чтобы их можно было использовать окне сообщения (блокноте) vingrad.ru?

PM WWW GTalk Jabber   Вверх
smartov
Дата 25.8.2006, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 10
Всего: 259



pythonwin
Цитата(pythonwin @  25.8.2006,  16:56 Найти цитируемый пост)
А можно, чтобы 4 (или 2 пробела) добавлялись к пустым и не выделеным строкам?

К пустым в IE добавлялись. Поправил чтобы и в FF тоже.
Невыделенным - тут сложнее. Если ты хотя бы 1 символ из строки выделишь -- ее идентирует smile

Цитата(pythonwin @  25.8.2006,  16:56 Найти цитируемый пост)
а также, чтобы их можно было использовать окне сообщения (блокноте) vingrad.ru?

Ну тут вопрос в общем то не ко мне smile Поучавствовать в апгрейде Винграда я не против.

Вот немного исправленный и доработанный код.
Теперь будет сохранятся выделение. 
Среди проблем: нужно выделять строку полностью, т.к. код работает с выделением.

Код

<html>
<body>

<script>

var tabSymbol;

//Change this value to needed

//tabSymbol = "    ";//tabulator
tabSymbol = "    ";//4spaces
//tabSymbol = "  ";//2 spaces

//----------

var cachedEvent;
var linesUpdated;

String.prototype.repeat = function(count) { 
    var tmp = this.valueOf();
    for (var i=1; i < count; i++)
    {
        tmp += this.valueOf();
    }
    return tmp;
};

function indentString($str)
{
    if (!$str)
        return "";
    $str_arr = $str.split(/\n/);
    for (var i=0; i < $str_arr.length; i++)
    {
        $str_arr[i] = tabSymbol + $str_arr[i];
    }
    
    linesUpdated = $str_arr.length;
    return $str_arr.join("\n");
}

function unindentString($str)
{
    if (!$str)
        return "";
    $str_arr = $str.split(/\n/);
    for (var i=0; i < $str_arr.length; i++)
    {
        if ($str_arr[i].indexOf(tabSymbol) == 0)
        {
            $str_arr[i] = $str_arr[i].replace(tabSymbol, '');
        }
    }
    linesUpdated = $str_arr.length;
    return $str_arr.join("\n");
}

function indentSelection(targetTextarea, unindent)
{
    if (document.selection) //IE, Opera 9
    {
        range = document.selection.createRange();
        range.text = unindent ? unindentString(range.text) : indentString(range.text);
    } 
    else //Mozilla
    {
        var selStart = targetTextarea.selectionStart;
        var selEnd = targetTextarea.selectionEnd;
        var selection = targetTextarea.value.substr(targetTextarea.selectionStart, targetTextarea.selectionEnd - targetTextarea.selectionStart);
        selection = unindent ? unindentString(selection) : indentString(selection);

        targetTextarea.value = targetTextarea.value.substr(0, targetTextarea.selectionStart) 
            + selection
            + targetTextarea.value.substr(targetTextarea.selectionEnd);
        
        var chars = tabSymbol.repeat(linesUpdated).length;
        selEnd = unindent ? (selEnd-chars) : (selEnd+chars);
        targetTextarea.setSelectionRange(selStart, selEnd);
    }
}

function getEvent(textarea, $event)
{
//219 - [
//221 - ]

    if (cachedEvent == 17 && $event == 219)
    {
        indentSelection(textarea, true);
        cachedEvent = 17;
        return;
    }
    if (cachedEvent == 17 && $event == 221)
    {
        indentSelection(textarea, false);
        cachedEvent = 17;
        return;
    }
    cachedEvent = $event;
}

</script>

<textarea id="asd" style="width:500px;height:500px;" onKeydown="getEvent(this, event.keyCode)">
myarray = new Array();
myarray.push('forum');
myarray.push('vingrad');
myarray.push('ru');
var str;
for (var i=0; i < count(myarray); i++)
{
str += myarray[i];//ident me;
str += '.';//ident me;
}
alert(str);
</textarea>

</body>
</html>


Добавлено @ 19:41 
Ах да smile Теперь де Ctrl не обязательно отпускать при множественной идентации smile
PM MAIL   Вверх
pythonwin
Дата 26.8.2006, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



Цитата(smartov @  26.8.2006,  02:39 Найти цитируемый пост)
Ну тут вопрос в общем то не ко мне smile Поучавствовать в апгрейде Винграда я не против.

Подскажи, к кому обратиться.

Добавлено @ 10:38 
Цитата(smartov @  26.8.2006,  02:39 Найти цитируемый пост)
Ах да smile Теперь де Ctrl не обязательно отпускать при множественной идентации smile 

Спасибо!

Для для того чтобы разработать код, который полность удовлетворял питонщиков - лучше скачать python

Там есть встроенная IDLE 1.1.2 - лучше ориентироваться на нее, т.к. многие питонщики пишут именно на ней. smile


PM WWW GTalk Jabber   Вверх
smartov
Дата 26.8.2006, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 10
Всего: 259



pythonwin, я думаю чтобы проэмулировать идентацию мне не нужен весь IDE smile да и ты расскажешь если что.

Цитата(pythonwin @  26.8.2006,  09:33 Найти цитируемый пост)
Подскажи, к кому обратиться.

По идее админам написать, вот только кому....
Попробуй написать... 12345 он у нас по яваскрипту. Или Exception можт. Да любому активному smile Кто откликнется.
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Обсуждение форума | Следующая тема »


 




[ Время генерации скрипта: 0.0936 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.