ЗДЕСЬ - это другая библиотека с открытым исходным кодом на GitHub с именем EvalEx.
В отличие от механизма JavaScript эта библиотека ориентирована только на оценку математических выражений. Кроме того, библиотека расширяема и поддерживает использование логических операторов, а также круглых скобок.
Вы ищете kill-new
.
kill-new is a compiled Lisp function in `simple.el'.
(kill-new string &optional replace yank-handler)
Make string the latest kill in the kill ring.
Set `kill-ring-yank-pointer' to point to it.
If `interprogram-cut-function' is non-nil, apply it to string.
Optional second argument replace non-nil means that string will replace
the front of the kill ring, rather than being added to the list.
Optional third arguments yank-handler controls how the string is later
inserted into a buffer; see `insert-for-yank' for details.
When a yank handler is specified, string must be non-empty (the yank
handler, if non-nil, is stored as a `yank-handler' text property on string).
When the yank handler has a non-nil PARAM element, the original string
argument is not used by `insert-for-yank'. However, since Lisp code
may access and use elements from the kill ring directly, the string
argument should still be a "useful" string for such uses.
Я делаю это:
(with-temp-buffer
(insert "Hello World")
(clipboard-kill-region (point-min) (point-max)))
, который получает его в буфер обмена. Если вы хотите его на кольце Kill-Ring добавьте kill-Region
.
Вместо статических многомерных массивов, вероятно, следует использовать одномерный массив и вычислять индекс путем умножения. Например,
class Array3D {
size_t m_width, m_height;
std::vector<int> m_data;
public:
Array3D(size_t x, size_t y, size_t z, int init = 0):
m_width(x), m_height(y), m_data(x*y*z, init)
{}
int& operator()(size_t x, size_t y, size_t z) {
return m_data.at(x + y * m_width + z * m_width * m_height);
}
};
// Usage:
Array3D arr(10, 15, 20, 100); // 10x15x20 array initialized with value 100
arr(8, 12, 17) = 3;
std:: vector распределяет место хранения динамически, что хорошо, потому что пространство стека часто очень ограничено, и 3D массивы легко используют много пространства. Перенос его в такой класс также делает передачу массива (путем копирования или ссылки) другим функциям тривиальной, в то время как выполнение любой передачи многомерных статических массивов очень проблематично.
Приведенный выше код является просто примером и может быть оптимизирован и сделан более полным. Также, конечно, существуют реализации этого в различных библиотеках, но я не знаю ни одной.
-121--1314546-Решение, попробуйте вызвать новый ActiveXObject:
function testForActiveX(){
tester = null;
try {
tester = new ActiveXObject('htmlfile');
}
catch (e) {
// catch the exception
}
if (tester) {
// ActiveX is installed
return true;
}
return false;
}
-121--1742766- Команда для помещения выбранного элемента в буфер обмена системы окна x-select-text
. Вы можете дать ему блок текста, чтобы запомнить. Так что (буфер-подстрока (точка) (метка))
или что-то должно дать вам то, что вам нужно передать в него. В ответе Джо вы можете увидеть функцию межпрограммного разреза. Посмотри, как это найти.